1ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana/*
2ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Copyright (C) 2009 The Android Open Source Project
3ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana *
4ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Licensed under the Apache License, Version 2.0 (the "License");
5ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * you may not use this file except in compliance with the License.
6ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * You may obtain a copy of the License at
7ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana *
8ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana *      http://www.apache.org/licenses/LICENSE-2.0
9ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana *
10ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Unless required by applicable law or agreed to in writing, software
11ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * distributed under the License is distributed on an "AS IS" BASIS,
12ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * See the License for the specific language governing permissions and
14ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * limitations under the License.
15ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana */
16ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
17ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintanapackage android.content;
18ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
19d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevotimport android.content.ContentProvider;
20ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintanaimport android.net.Uri;
21d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevotimport android.os.UserHandle;
228943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcelable;
238943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcel;
24ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
25ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana/**
26ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Contains the result of the application of a {@link ContentProviderOperation}. It is guaranteed
27ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * to have exactly one of {@link #uri} or {@link #count} set.
28ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana */
298943737692169f564cd34a9c8d471f3a5d438712Fred Quintanapublic class ContentProviderResult implements Parcelable {
30ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Uri uri;
31ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Integer count;
32ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
33ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(Uri uri) {
34ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        if (uri == null) throw new IllegalArgumentException("uri must not be null");
35ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = uri;
36ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = null;
37ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
38ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
39ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(int count) {
40ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = count;
41ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = null;
42ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
438943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
448943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public ContentProviderResult(Parcel source) {
458943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        int type = source.readInt();
468943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (type == 1) {
478943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = source.readInt();
488943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = null;
498943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
508943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = null;
518943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = Uri.CREATOR.createFromParcel(source);
528943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
538943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
548943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
55d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    /** @hide */
56d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    public ContentProviderResult(ContentProviderResult cpr, int userId) {
57d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot        uri = ContentProvider.maybeAddUserId(cpr.uri, userId);
58d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot        count = cpr.count;
59d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    }
60d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot
618943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public void writeToParcel(Parcel dest, int flags) {
628943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (uri == null) {
638943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(1);
648943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(count);
658943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
668943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(2);
678943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri.writeToParcel(dest, 0);
688943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
698943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
708943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
718943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public int describeContents() {
728943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        return 0;
738943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
748943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
758943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public static final Creator<ContentProviderResult> CREATOR =
768943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            new Creator<ContentProviderResult>() {
778943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult createFromParcel(Parcel source) {
788943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult(source);
798943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
808943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
818943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult[] newArray(int size) {
828943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult[size];
838943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
848943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    };
8503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
8603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public String toString() {
8703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        if (uri != null) {
8803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            return "ContentProviderResult(uri=" + uri.toString() + ")";
8903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
9003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return "ContentProviderResult(count=" + count + ")";
9103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
92d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot}
93