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
1903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport android.net.Uri;
2003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
2103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport java.util.ArrayList;
226a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana
236a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana/**
242ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * A representation of a item using ContentValues. It contains one top level ContentValue
252ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * plus a collection of Uri, ContentValues tuples as subvalues. One example of its use
262ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * is in Contacts, where the top level ContentValue contains the columns from the RawContacts
272ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * table and the subvalues contain a ContentValues object for each row from the Data table that
282ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintana * corresponds to that RawContact. The uri refers to the Data table uri for each row.
296a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana */
302ec6c5699181316e5a5c2cd293c006ac4a8bb101Fred Quintanapublic final class Entity {
3103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    final private ContentValues mValues;
3203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    final private ArrayList<NamedContentValues> mSubValues;
3303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
3403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public Entity(ContentValues values) {
3503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mValues = values;
3603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mSubValues = new ArrayList<NamedContentValues>();
3703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
3803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
3903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public ContentValues getEntityValues() {
4003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return mValues;
4103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
4203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
4303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public ArrayList<NamedContentValues> getSubValues() {
4403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return mSubValues;
4503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
4603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
4703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public void addSubValue(Uri uri, ContentValues values) {
4803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        mSubValues.add(new Entity.NamedContentValues(uri, values));
4903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
5003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
5103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public static class NamedContentValues {
5203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public final Uri uri;
5303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public final ContentValues values;
5403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
5503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        public NamedContentValues(Uri uri, ContentValues values) {
5603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            this.uri = uri;
5703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            this.values = values;
5803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
5903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
6003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana
6103d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public String toString() {
6203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        final StringBuilder sb = new StringBuilder();
6303d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        sb.append("Entity: ").append(getEntityValues());
6403d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        for (Entity.NamedContentValues namedValue : getSubValues()) {
6503d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            sb.append("\n  ").append(namedValue.uri);
6603d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana            sb.append("\n  -> ").append(namedValue.values);
6703d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        }
6803d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana        return sb.toString();
6903d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    }
706a8d5332f00bdfade6674b312e7166940aa28348Fred Quintana}
71