19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.database;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentResolver;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
2446baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler * Wrapper class for Cursor that delegates all calls to the actual cursor object.  The primary
2546baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler * use for this class is to extend a cursor while overriding only a subset of its methods.
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class CursorWrapper implements Cursor {
28825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown    /** @hide */
29825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown    protected final Cursor mCursor;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
31825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown    /**
32825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown     * Creates a cursor wrapper.
33825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown     * @param cursor The underlying cursor to wrap.
34825c5132bff21e72c1448241f4c6868563c8d624Jeff Brown     */
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public CursorWrapper(Cursor cursor) {
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor = cursor;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3946baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler    /**
407ce745248d4de0e6543a559c93423df899832100Jeff Brown     * Gets the underlying cursor that is wrapped by this instance.
417ce745248d4de0e6543a559c93423df899832100Jeff Brown     *
427ce745248d4de0e6543a559c93423df899832100Jeff Brown     * @return The wrapped cursor.
4346baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler     */
4446baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler    public Cursor getWrappedCursor() {
4546baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler        return mCursor;
4646baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler    }
4746baf533f5f66e1c5ebc8ca45c2ed5211c790cdfAndrew Stadler
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void close() {
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.close();
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isClosed() {
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isClosed();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getCount() {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getCount();
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void deactivate() {
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.deactivate();
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean moveToFirst() {
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.moveToFirst();
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getColumnCount() {
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getColumnCount();
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getColumnIndex(String columnName) {
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getColumnIndex(columnName);
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getColumnIndexOrThrow(String columnName)
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws IllegalArgumentException {
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getColumnIndexOrThrow(columnName);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getColumnName(int columnIndex) {
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         return mCursor.getColumnName(columnIndex);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String[] getColumnNames() {
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getColumnNames();
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public double getDouble(int columnIndex) {
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getDouble(columnIndex);
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Bundle getExtras() {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getExtras();
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public float getFloat(int columnIndex) {
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getFloat(columnIndex);
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getInt(int columnIndex) {
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getInt(columnIndex);
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public long getLong(int columnIndex) {
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getLong(columnIndex);
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public short getShort(int columnIndex) {
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getShort(columnIndex);
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getString(int columnIndex) {
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getString(columnIndex);
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer) {
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.copyStringToBuffer(columnIndex, buffer);
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getBlob(int columnIndex) {
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getBlob(columnIndex);
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean getWantsAllOnMoveCalls() {
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getWantsAllOnMoveCalls();
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isAfterLast() {
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isAfterLast();
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isBeforeFirst() {
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isBeforeFirst();
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isFirst() {
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isFirst();
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isLast() {
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isLast();
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1458b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    public int getType(int columnIndex) {
1468b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori        return mCursor.getType(columnIndex);
1478b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori    }
1488b0dd7da360d70920a37802eb455ba41500d3b45Vasu Nori
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isNull(int columnIndex) {
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.isNull(columnIndex);
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean moveToLast() {
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.moveToLast();
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean move(int offset) {
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.move(offset);
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean moveToPosition(int position) {
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.moveToPosition(position);
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean moveToNext() {
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.moveToNext();
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getPosition() {
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.getPosition();
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean moveToPrevious() {
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.moveToPrevious();
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void registerContentObserver(ContentObserver observer) {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.registerContentObserver(observer);
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void registerDataSetObserver(DataSetObserver observer) {
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.registerDataSetObserver(observer);
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean requery() {
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.requery();
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Bundle respond(Bundle extras) {
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCursor.respond(extras);
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setNotificationUri(ContentResolver cr, Uri uri) {
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.setNotificationUri(cr, uri);
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
197c87c92e079b9aff771ac0810fc86def81654dbdaDianne Hackborn    public Uri getNotificationUri() {
198c87c92e079b9aff771ac0810fc86def81654dbdaDianne Hackborn        return mCursor.getNotificationUri();
199c87c92e079b9aff771ac0810fc86def81654dbdaDianne Hackborn    }
200c87c92e079b9aff771ac0810fc86def81654dbdaDianne Hackborn
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void unregisterContentObserver(ContentObserver observer) {
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.unregisterContentObserver(observer);
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void unregisterDataSetObserver(DataSetObserver observer) {
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCursor.unregisterDataSetObserver(observer);
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
210