16a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana/*
26a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * Copyright (C) 2009 The Android Open Source Project
36a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana *
46a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * Licensed under the Apache License, Version 2.0 (the "License");
56a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * you may not use this file except in compliance with the License.
66a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * You may obtain a copy of the License at
76a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana *
86a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana *      http://www.apache.org/licenses/LICENSE-2.0
96a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana *
106a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * Unless required by applicable law or agreed to in writing, software
116a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * distributed under the License is distributed on an "AS IS" BASIS,
126a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * See the License for the specific language governing permissions and
146a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana * limitations under the License.
156a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana */
166a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
176a8d5332f00bdfade6674b312e7166940aa28348Fred Quintanapackage android.content;
186a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
196a8d5332f00bdfade6674b312e7166940aa28348Fred Quintanaimport android.os.Parcelable;
2003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport android.os.Parcel;
2103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport android.net.Uri;
2203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport android.util.Log;
2303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
2403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport java.util.ArrayList;
256a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
266a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana/**
272ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * A representation of a item using ContentValues. It contains one top level ContentValue
282ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * plus a collection of Uri, ContentValues tuples as subvalues. One example of its use
292ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * is in Contacts, where the top level ContentValue contains the columns from the RawContacts
302ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * table and the subvalues contain a ContentValues object for each row from the Data table that
312ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * corresponds to that RawContact. The uri refers to the Data table uri for each row.
326a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana */
332ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintanapublic final class Entity {
3403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    final private ContentValues mValues;
3503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    final private ArrayList<NamedContentValues> mSubValues;
3603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
3703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public Entity(ContentValues values) {
3803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mValues = values;
3903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mSubValues = new ArrayList<NamedContentValues>();
4003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
4103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
4203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public ContentValues getEntityValues() {
4303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return mValues;
4403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
4503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
4603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public ArrayList<NamedContentValues> getSubValues() {
4703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return mSubValues;
4803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
4903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
5003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public void addSubValue(Uri uri, ContentValues values) {
5103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mSubValues.add(new Entity.NamedContentValues(uri, values));
5203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
5303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
5403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public static class NamedContentValues {
5503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public final Uri uri;
5603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public final ContentValues values;
5703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
5803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public NamedContentValues(Uri uri, ContentValues values) {
5903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            this.uri = uri;
6003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            this.values = values;
6103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
6203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
6303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
6403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public String toString() {
6503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        final StringBuilder sb = new StringBuilder();
6603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        sb.append("Entity: ").append(getEntityValues());
6703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        for (Entity.NamedContentValues namedValue : getSubValues()) {
6803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            sb.append("\n  ").append(namedValue.uri);
6903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            sb.append("\n  -> ").append(namedValue.values);
7003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
7103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return sb.toString();
7203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
736a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana}
74