Android Open Source - SQLDroid Abstract Cursor






From Project

Back to project page SQLDroid.

License

The source code is released under:

MIT License

If you think the Android project SQLDroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Created on May 9, 2012//from  ww w .  j  a  va 2  s.  co m
 *
 * To change the template for this generated file go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
package android.database;

import com.sun.jna.Pointer;

public class AbstractCursor implements Cursor {  
  
  protected Pointer pStmt;
  
  /** The row count. */
  protected int rowCount;
  
  /** The current position in the cursor. */
  protected int currentPosition;
  
  public AbstractCursor ( Pointer pStmt ) {
    this.pStmt = pStmt;
    rowCount = -1;
    rowCount = getCount();
    currentPosition = -1;
  }

  public int getCount() {
    if ( rowCount < 0 ) {
      rowCount = 0;
      while ( SQLite.sqlite3_step(pStmt) == SQLite.SQLITE_ROW ) {
        //System.out.println ("getCount " + getString(1));
        rowCount++;
      }
      SQLite.sqlite3_reset(pStmt);
    }
    return rowCount;
  }

  public boolean moveToNext() {
    int result;
    result = SQLite.sqlite3_step(pStmt);
    if ( result == SQLite.SQLITE_ROW ) {
      currentPosition++;
      return true;
    }
    if ( result == SQLite.SQLITE_DONE ) {
      currentPosition = getCount()+1;
    }
    return false;
  }

  public String getString(int i) {
    return SQLite.sqlite3_column_text(pStmt, i);
  }

  public int getInt(int i) {
    return SQLite.sqlite3_column_int(pStmt, i);
  }

  public void close() {
    SQLite.sqlite3_finalize(pStmt);
    pStmt = null;
  }

  public boolean moveToLast() {
    int result;
    do {
      result = SQLite.sqlite3_step(pStmt);
    } while( result == SQLite.SQLITE_ROW );
    if ( result == SQLite.SQLITE_DONE ) {
      currentPosition = getCount()-1;
      return true;
    }
    return false;
  }

  public boolean moveToFirst() {
    if ( SQLite.sqlite3_reset(pStmt) == SQLite.SQLITE_OK ) {
      currentPosition = 0;
      return true;
    }
    return false;
 }

  public boolean moveToPrevious() {
    SQLite.sqlite3_reset(pStmt);
    if ( currentPosition > 0 ) {
      for ( int counter = 0 ; counter < (currentPosition-1) ; counter++ ) {
        if ( SQLite.sqlite3_step(pStmt) != SQLite.SQLITE_ROW) {
          return false;
        }
      }
      currentPosition--;
    }
    else {
      currentPosition = -1;
    }
    return true;
  }

  public int getColumnIndex(String columnName) {
    int colCount = SQLite.sqlite3_column_count(pStmt);
    for ( int counter = 0 ; counter < colCount ; counter++ ) {
      if ( SQLite.sqlite3_column_name(pStmt, counter).equalsIgnoreCase(columnName)) {
        return counter;
      }
    }
    return -1;
  }

  public byte[] getBlob(int ci) {
    return SQLite.sqlite3_column_blob(pStmt, ci).getByteArray(0,  SQLite.sqlite3_column_bytes(pStmt, ci));
  }

  public byte getShort(int ci) {
    return (byte)getInt(ci);
  }

  public double getDouble(int ci) {
    return SQLite.sqlite3_column_double(pStmt, ci);
  }

  public float getFloat(int ci) {
    return (float)getDouble(ci);
  }

  public long getLong(int ci) {
    return SQLite.sqlite3_column_int64(pStmt, ci);

  }

  public int getPosition() {
    return currentPosition;
  }

  public boolean isAfterLast() {
    return (currentPosition > 0 && currentPosition >= getCount());
  }

  public boolean isBeforeFirst() {
    return (currentPosition < 0 );
  }

  public boolean isFirst() {
    return (currentPosition == 0 );
  }

  public boolean isLast() {
    return (currentPosition >= 0 && currentPosition == getCount()-1);
  }

  public void requery() {
    moveToFirst(); // not quite right, but close enough    
  }

  public boolean isNull(int ci) {
    if ( SQLite.sqlite3_column_text(pStmt, ci) == null ) {
      return true;  
    }
    return false;
  }

  public boolean isClosed() {
    return pStmt == null;
  }

  public int getColumnCount() {
    return SQLite.sqlite3_column_count(pStmt);
  }

  public String getColumnName(int i) {
    return SQLite.sqlite3_column_name(pStmt, i);
  }

  public void moveToPosition(int oldPos) {
    SQLite.sqlite3_reset(pStmt);
    for ( int counter = 0 ; counter <= oldPos ; counter++ ) {
      if ( SQLite.sqlite3_step(pStmt) != SQLite.SQLITE_ROW) {
        return;
      }
    }
    currentPosition = oldPos;
  }

  @Override
  public int getType(int ci) {
    int columnType = SQLite.sqlite3_column_type(pStmt,ci);
    return columnType;
  }
  
}




Java Source Code List

android.content.ContentValues.java
android.database.AbstractCursor.java
android.database.Cursor.java
android.database.MatrixCursor.java
android.database.MergeCursor.java
android.database.SQLException.java
android.database.SQLite.java
android.database.sqlite.SQLiteDatabaseLockedException.java
android.database.sqlite.SQLiteDatabase.java
android.database.sqlite.SQLiteException.java
android.util.Log.java
org.sqldroid.DebugPrinter.java
org.sqldroid.DroidDataSource.java
org.sqldroid.Log.java
org.sqldroid.SQLDroidBlob.java
org.sqldroid.SQLDroidClob.java
org.sqldroid.SQLDroidConnection.java
org.sqldroid.SQLDroidDatabaseMetaData.java
org.sqldroid.SQLDroidDriver.java
org.sqldroid.SQLDroidPreparedStatement.java
org.sqldroid.SQLDroidResultSetMetaData.java
org.sqldroid.SQLDroidResultSet.java
org.sqldroid.SQLDroidSQLException.java
org.sqldroid.SQLDroidStatement.java
org.sqldroid.SQLiteDatabase.java