1fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown/*
2fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * Copyright (C) 2012 The Android Open Source Project
3fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown *
4fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * you may not use this file except in compliance with the License.
6fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * You may obtain a copy of the License at
7fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown *
8fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown *
10fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * Unless required by applicable law or agreed to in writing, software
11fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * See the License for the specific language governing permissions and
14fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * limitations under the License.
15fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown */
16fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
17fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brownpackage android.database;
18fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
19fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brownimport android.os.Parcel;
20fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brownimport android.os.Parcelable;
21fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
22fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown/**
23fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * Describes the properties of a {@link CursorToBulkCursorAdaptor} that are
24fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * needed to initialize its {@link BulkCursorToCursorAdaptor} counterpart on the client's end.
25fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown *
26fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown * {@hide}
27fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown */
28fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brownpublic final class BulkCursorDescriptor implements Parcelable {
29fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public static final Parcelable.Creator<BulkCursorDescriptor> CREATOR =
30fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            new Parcelable.Creator<BulkCursorDescriptor>() {
31fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        @Override
32fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        public BulkCursorDescriptor createFromParcel(Parcel in) {
33fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            BulkCursorDescriptor d = new BulkCursorDescriptor();
34fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            d.readFromParcel(in);
35fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            return d;
36fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        }
37fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
38fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        @Override
39fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        public BulkCursorDescriptor[] newArray(int size) {
40fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            return new BulkCursorDescriptor[size];
41fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        }
42fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    };
43fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
44fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public IBulkCursor cursor;
45fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public String[] columnNames;
46fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public boolean wantsAllOnMoveCalls;
47fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public int count;
48fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public CursorWindow window;
49fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
50fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    @Override
51fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public int describeContents() {
52fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        return 0;
53fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    }
54fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
55fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    @Override
56fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public void writeToParcel(Parcel out, int flags) {
57fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        out.writeStrongBinder(cursor.asBinder());
58fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        out.writeStringArray(columnNames);
59fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        out.writeInt(wantsAllOnMoveCalls ? 1 : 0);
60fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        out.writeInt(count);
61fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        if (window != null) {
62fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            out.writeInt(1);
63fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            window.writeToParcel(out, flags);
64fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        } else {
65fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            out.writeInt(0);
66fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        }
67fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    }
68fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown
69fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    public void readFromParcel(Parcel in) {
70fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        cursor = BulkCursorNative.asInterface(in.readStrongBinder());
71fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        columnNames = in.readStringArray();
72fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        wantsAllOnMoveCalls = in.readInt() != 0;
73fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        count = in.readInt();
74fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        if (in.readInt() != 0) {
75fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown            window = CursorWindow.CREATOR.createFromParcel(in);
76fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown        }
77fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown    }
78fb5a4964b8d402b39754f406dd2255035ff2148dJeff Brown}
79