Skip to content
This repository was archived by the owner on Feb 11, 2022. It is now read-only.

Commit 2fa788f

Browse files
author
Xavi Rigau
committed
Merge pull request #36 from sgaland/CursorFactory
Cursor factory
2 parents 6bbec56 + 8b07972 commit 2fa788f

4 files changed

Lines changed: 41 additions & 16 deletions

File tree

core/src/main/java/novoda/lib/sqliteprovider/provider/SQLiteContentProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ public boolean onCreate() {
4343

4444
protected abstract SQLiteOpenHelper getDatabaseHelper(Context context);
4545

46+
protected abstract SQLiteDatabase.CursorFactory getCursorFactory();
47+
4648
/**
4749
* The equivalent of the {@link #insert} method, but invoked within a
4850
* transaction.

core/src/main/java/novoda/lib/sqliteprovider/provider/SQLiteContentProviderImpl.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
package novoda.lib.sqliteprovider.provider;
22

3-
import android.content.*;
4-
import android.database.*;
3+
import android.content.ContentUris;
4+
import android.content.ContentValues;
5+
import android.content.Context;
6+
import android.database.Cursor;
7+
import android.database.DatabaseUtils;
8+
import android.database.SQLException;
59
import android.database.sqlite.SQLiteDatabase;
610
import android.database.sqlite.SQLiteOpenHelper;
711
import android.net.Uri;
812

13+
import java.io.IOException;
14+
import java.util.List;
15+
import java.util.Map;
16+
917
import novoda.lib.sqliteprovider.provider.action.InsertHelper;
1018
import novoda.lib.sqliteprovider.sqlite.ExtendedSQLiteOpenHelper;
1119
import novoda.lib.sqliteprovider.sqlite.ExtendedSQLiteQueryBuilder;
1220
import novoda.lib.sqliteprovider.util.Log;
1321
import novoda.lib.sqliteprovider.util.UriUtils;
1422

15-
import java.io.IOException;
16-
import java.util.List;
17-
import java.util.Map;
18-
1923
public class SQLiteContentProviderImpl extends SQLiteContentProvider {
2024

2125
protected static final String ID = "_id";
@@ -50,7 +54,7 @@ protected SQLiteDatabase getReadableDatabase() {
5054
@Override
5155
protected SQLiteOpenHelper getDatabaseHelper(Context context) {
5256
try {
53-
return new ExtendedSQLiteOpenHelper(context);
57+
return new ExtendedSQLiteOpenHelper(context, getCursorFactory());
5458
} catch (IOException e) {
5559
Log.Provider.e(e);
5660
throw new IllegalStateException(e.getMessage());
@@ -151,4 +155,9 @@ public Cursor query(Uri uri, String[] projection, String selection, String[] sel
151155
protected ExtendedSQLiteQueryBuilder getSQLiteQueryBuilder() {
152156
return new ExtendedSQLiteQueryBuilder();
153157
}
158+
159+
@Override
160+
protected SQLiteDatabase.CursorFactory getCursorFactory() {
161+
return null;
162+
}
154163
}

core/src/main/java/novoda/lib/sqliteprovider/sqlite/ExtendedSQLiteOpenHelper.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33

44
import android.content.ContentValues;
55
import android.content.Context;
6-
import android.database.sqlite.*;
6+
import android.database.sqlite.SQLiteDatabase;
77
import android.database.sqlite.SQLiteDatabase.CursorFactory;
8+
import android.database.sqlite.SQLiteOpenHelper;
9+
10+
import java.io.IOException;
11+
import java.util.HashMap;
12+
import java.util.List;
13+
import java.util.Map;
814

915
import novoda.lib.sqliteprovider.migration.Migrations;
1016
import novoda.lib.sqliteprovider.util.DBUtils;
1117
import novoda.lib.sqliteprovider.util.Log;
1218

13-
import java.io.IOException;
14-
import java.util.*;
15-
1619
// TODO caching?
1720
public class ExtendedSQLiteOpenHelper extends SQLiteOpenHelper implements IDatabaseMetaInfo {
1821

@@ -26,7 +29,11 @@ public class ExtendedSQLiteOpenHelper extends SQLiteOpenHelper implements IDatab
2629
private final Map<String, List<String>> constrains = new HashMap<String, List<String>>();
2730

2831
public ExtendedSQLiteOpenHelper(Context context) throws IOException {
29-
this(context, context.getPackageName() + ".db", null, Migrations.getVersion(context.getAssets(), MIGRATIONS_PATH));
32+
this(context, null);
33+
}
34+
35+
public ExtendedSQLiteOpenHelper(Context context, CursorFactory factory) throws IOException {
36+
this(context, context.getPackageName() + ".db", factory, Migrations.getVersion(context.getAssets(), MIGRATIONS_PATH));
3037
}
3138

3239
public ExtendedSQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {

core/src/main/java/novoda/rest/database/ModularSQLiteOpenHelper.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
import android.database.sqlite.SQLiteOpenHelper;
88
import android.util.Log;
99

10-
import novoda.lib.sqliteprovider.util.DatabaseUtils;
11-
12-
import java.util.*;
10+
import java.util.ArrayList;
11+
import java.util.HashMap;
12+
import java.util.List;
13+
import java.util.Map;
1314
import java.util.Map.Entry;
1415

16+
import novoda.lib.sqliteprovider.util.DatabaseUtils;
17+
1518
public class ModularSQLiteOpenHelper extends SQLiteOpenHelper {
1619

1720
private static final String TAG = ModularSQLiteOpenHelper.class.getSimpleName();
@@ -24,7 +27,11 @@ public class ModularSQLiteOpenHelper extends SQLiteOpenHelper {
2427
private final Map<String, SQLiteTableCreator> createStatements;
2528

2629
public ModularSQLiteOpenHelper(Context context) {
27-
super(context, new StringBuilder(context.getApplicationInfo().packageName).append(".db").toString(), null, dbVersion);
30+
this(context, null);
31+
}
32+
33+
public ModularSQLiteOpenHelper(Context context, SQLiteDatabase.CursorFactory factory) {
34+
super(context, new StringBuilder(context.getApplicationInfo().packageName).append(".db").toString(), factory, dbVersion);
2835
createdTable = new ArrayList<String>();
2936
createStatements = new HashMap<String, SQLiteTableCreator>();
3037
init();

0 commit comments

Comments
 (0)