/** * */ package org.commcare.android.db.legacy; import java.util.Hashtable; import org.commcare.android.crypt.CipherPool; import org.commcare.android.database.EncryptedModel; import org.commcare.android.util.SessionUnavailableException; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.database.sqlite.SQLiteCursorDriver; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteQuery; /** * @author ctsims * */ public class LegacyCommCareDBCursorFactory implements CursorFactory { private Hashtable<String, EncryptedModel> models; /** * Creates a cursor factory which is incapable of dealing with * Encrypted data */ public LegacyCommCareDBCursorFactory() { } public LegacyCommCareDBCursorFactory(Hashtable<String, EncryptedModel> models) { this.models = models; } /* (non-Javadoc) * @see android.database.sqlite.SQLiteDatabase.CursorFactory#newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery) */ public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) throws SessionUnavailableException{ if(models == null || !models.containsKey(editTable)) { return new SQLiteCursor(db, masterQuery, editTable, query); } else { EncryptedModel model = models.get(editTable); return new DecryptingCursor(db, masterQuery, editTable, query, model, getCipherPool()); } } protected CipherPool getCipherPool() throws SessionUnavailableException { return null; } }