open-keychain/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/CloseDatabaseCursorFactory.java
2017-08-29 19:38:25 +02:00

42 lines
1.3 KiB
Java

package org.sufficientlysecure.keychain.util;
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;
import android.util.Log;
import org.sufficientlysecure.keychain.Constants;
public class CloseDatabaseCursorFactory implements CursorFactory {
private static class CloseDatabaseCursor extends SQLiteCursor {
CloseDatabaseCursor(SQLiteDatabase db, SQLiteCursorDriver driver, String editTable, SQLiteQuery query) {
super(db, driver, editTable, query);
}
@Override
public void close() {
final SQLiteDatabase db = getDatabase();
super.close();
if (db != null) {
Log.d(Constants.TAG, "Closing cursor: " + db.getPath());
try {
db.close();
} catch (Exception e) {
Log.e(Constants.TAG, "Error closing db", e);
}
}
}
}
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
String editTable, SQLiteQuery query) {
return new CloseDatabaseCursor(db, masterQuery, editTable, query);
}
}