Home | History | Annotate | Download | only in database
      1 /*
      2 * Copyright (C) 2012 The Android Open Source Project
      3 *
      4 * Licensed under the Apache License, Version 2.0 (the "License");
      5 * you may not use this file except in compliance with the License.
      6 * You may obtain a copy of the License at
      7 *
      8 *      http://www.apache.org/licenses/LICENSE-2.0
      9 *
     10 * Unless required by applicable law or agreed to in writing, software
     11 * distributed under the License is distributed on an "AS IS" BASIS,
     12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 * See the License for the specific language governing permissions and
     14 * limitations under the License
     15 */
     16 
     17 package com.android.contacts.common.database;
     18 
     19 import android.database.AbstractCursor;
     20 import android.database.CursorIndexOutOfBoundsException;
     21 
     22 /**
     23  * A cursor that is empty.
     24  * <p>
     25  * If you want an empty cursor, this class is better than a MatrixCursor because it has less
     26  * overhead.
     27  */
     28 final public class EmptyCursor extends AbstractCursor {
     29 
     30     private String[] mColumns;
     31 
     32     public EmptyCursor(String[] columns) {
     33         this.mColumns = columns;
     34     }
     35 
     36     @Override
     37     public int getCount() {
     38         return 0;
     39     }
     40 
     41     @Override
     42     public String[] getColumnNames() {
     43         return mColumns;
     44     }
     45 
     46     @Override
     47     public String getString(int column) {
     48         throw cursorException();
     49     }
     50 
     51     @Override
     52     public short getShort(int column) {
     53         throw cursorException();
     54     }
     55 
     56     @Override
     57     public int getInt(int column) {
     58         throw cursorException();
     59     }
     60 
     61     @Override
     62     public long getLong(int column) {
     63         throw cursorException();
     64     }
     65 
     66     @Override
     67     public float getFloat(int column) {
     68         throw cursorException();
     69     }
     70 
     71     @Override
     72     public double getDouble(int column) {
     73         throw cursorException();
     74     }
     75 
     76     @Override
     77     public boolean isNull(int column) {
     78         throw cursorException();
     79     }
     80 
     81     private CursorIndexOutOfBoundsException cursorException() {
     82         return new CursorIndexOutOfBoundsException("Operation not permitted on an empty cursor.");
     83     }
     84 }
     85