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
19ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintanaimport android.net.Uri;
208943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcelable;
218943737692169f564cd34a9c8d471f3a5d438712Fred Quintanaimport android.os.Parcel;
22ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
23ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana/**
24ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * Contains the result of the application of a {@link ContentProviderOperation}. It is guaranteed
25ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana * to have exactly one of {@link #uri} or {@link #count} set.
26ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana */
278943737692169f564cd34a9c8d471f3a5d438712Fred Quintanapublic class ContentProviderResult implements Parcelable {
28ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Uri uri;
29ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public final Integer count;
30ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
31ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(Uri uri) {
32ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        if (uri == null) throw new IllegalArgumentException("uri must not be null");
33ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = uri;
34ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = null;
35ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
36ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana
37ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    public ContentProviderResult(int count) {
38ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.count = count;
39ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana        this.uri = null;
40ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana    }
418943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
428943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public ContentProviderResult(Parcel source) {
438943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        int type = source.readInt();
448943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (type == 1) {
458943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = source.readInt();
468943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = null;
478943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
488943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            count = null;
498943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri = Uri.CREATOR.createFromParcel(source);
508943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
518943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
528943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
538943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public void writeToParcel(Parcel dest, int flags) {
548943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        if (uri == null) {
558943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(1);
568943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(count);
578943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        } else {
588943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            dest.writeInt(2);
598943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            uri.writeToParcel(dest, 0);
608943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
618943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
628943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
638943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public int describeContents() {
648943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        return 0;
658943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    }
668943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
678943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    public static final Creator<ContentProviderResult> CREATOR =
688943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            new Creator<ContentProviderResult>() {
698943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult createFromParcel(Parcel source) {
708943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult(source);
718943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
728943737692169f564cd34a9c8d471f3a5d438712Fred Quintana
738943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        public ContentProviderResult[] newArray(int size) {
748943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            return new ContentProviderResult[size];
758943737692169f564cd34a9c8d471f3a5d438712Fred Quintana        }
768943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    };
7703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
7803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public String toString() {
7903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        if (uri != null) {
8003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            return "ContentProviderResult(uri=" + uri.toString() + ")";
8103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
8203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return "ContentProviderResult(count=" + count + ")";
8303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
84ce31b2361db630cf1347fa42dd77e610a4eeb96dFred Quintana}