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