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;
218943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcelable;
228943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcel;
23ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
24ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana/**
25ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Contains the result of the application of a {@link ContentProviderOperation}. It is guaranteed
26ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * to have exactly one of {@link #uri} or {@link #count} set.
27ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana */
288943737692169f564cd34a9c8d471f3a5d438712Fred Quintanapublic class ContentProviderResult implements Parcelable {
29ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Uri uri;
30ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Integer count;
31ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
32ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(Uri uri) {
33ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        if (uri == null) throw new IllegalArgumentException("uri must not be null");
34ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = uri;
35ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = null;
36ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
37ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
38ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(int count) {
39ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = count;
40ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = null;
41ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
428943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
438943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public ContentProviderResult(Parcel source) {
448943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        int type = source.readInt();
458943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (type == 1) {
468943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = source.readInt();
478943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = null;
488943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
498943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = null;
508943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = Uri.CREATOR.createFromParcel(source);
518943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
528943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
538943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
54d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    /** @hide */
55d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    public ContentProviderResult(ContentProviderResult cpr, int userId) {
56d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot        uri = ContentProvider.maybeAddUserId(cpr.uri, userId);
57d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot        count = cpr.count;
58d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot    }
59d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot
608943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public void writeToParcel(Parcel dest, int flags) {
618943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (uri == null) {
628943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(1);
638943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(count);
648943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
658943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(2);
668943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri.writeToParcel(dest, 0);
678943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
688943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
698943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
708943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public int describeContents() {
718943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        return 0;
728943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
738943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
748943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public static final Creator<ContentProviderResult> CREATOR =
758943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            new Creator<ContentProviderResult>() {
768943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult createFromParcel(Parcel source) {
778943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult(source);
788943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
798943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
808943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult[] newArray(int size) {
818943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult[size];
828943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
838943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    };
8403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
8503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public String toString() {
8603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        if (uri != null) {
8703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            return "ContentProviderResult(uri=" + uri.toString() + ")";
8803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
8903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return "ContentProviderResult(count=" + count + ")";
9003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
91d85fc72fb810858f7502e7e7f1bad53e1bf03eddNicolas Prevot}
92