Skip to content

Commit 1e42f11

Browse files
authored
Merge pull request #67 from chibatching/integrate_androidx_sqlite
Integrate PureeSQLiteStorage with androidx.sqlite
2 parents 29e1a77 + db8d668 commit 1e42f11

File tree

3 files changed

+30
-22
lines changed

3 files changed

+30
-22
lines changed

buildSrc/src/main/java/Dependencies.kt

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
object Libs {
33
const val appCompat = "androidx.appcompat:appcompat:1.0.2"
44

5+
const val sqlite = "androidx.sqlite:sqlite-framework:2.0.1"
56
const val gson = "com.google.code.gson:gson:2.8.2"
67
const val jsr305 = "com.google.code.findbugs:jsr305:3.0.2"
78
}

puree/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ android.libraryVariants.all { variant ->
7171
}
7272

7373
dependencies {
74+
api Libs.sqlite
7475
api Libs.gson
7576
implementation Libs.jsr305
7677

puree/src/main/java/com/cookpad/puree/storage/PureeSQLiteStorage.java

+28-22
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,19 @@
99
import android.content.Context;
1010
import android.database.Cursor;
1111
import android.database.sqlite.SQLiteDatabase;
12-
import android.database.sqlite.SQLiteOpenHelper;
1312
import android.text.TextUtils;
1413
import android.util.Log;
1514

1615
import java.util.concurrent.atomic.AtomicBoolean;
1716

1817
import javax.annotation.ParametersAreNonnullByDefault;
1918

19+
import androidx.sqlite.db.SupportSQLiteDatabase;
20+
import androidx.sqlite.db.SupportSQLiteOpenHelper;
21+
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory;
22+
2023
@ParametersAreNonnullByDefault
21-
public class PureeSQLiteStorage extends SQLiteOpenHelper implements PureeStorage {
24+
public class PureeSQLiteStorage extends SupportSQLiteOpenHelper.Callback implements PureeStorage {
2225

2326
private static final String DATABASE_NAME = "puree.db";
2427

@@ -32,7 +35,7 @@ public class PureeSQLiteStorage extends SQLiteOpenHelper implements PureeStorage
3235

3336
private final JsonParser jsonParser = new JsonParser();
3437

35-
private final SQLiteDatabase db;
38+
private final SupportSQLiteOpenHelper openHelper;
3639

3740
private final AtomicBoolean lock = new AtomicBoolean(false);
3841

@@ -47,23 +50,30 @@ static String databaseName(Context context) {
4750
}
4851

4952
public PureeSQLiteStorage(Context context) {
50-
super(context, databaseName(context), null, DATABASE_VERSION);
51-
db = getWritableDatabase();
53+
super(DATABASE_VERSION);
54+
openHelper = new FrameworkSQLiteOpenHelperFactory()
55+
.create(
56+
SupportSQLiteOpenHelper.Configuration
57+
.builder(context)
58+
.name(databaseName(context))
59+
.callback(this)
60+
.build()
61+
);
5262
}
5363

5464
public void insert(String type, JsonObject jsonLog) {
5565
ContentValues contentValues = new ContentValues();
5666
contentValues.put(COLUMN_NAME_TYPE, type);
5767
contentValues.put(COLUMN_NAME_LOG, jsonLog.toString());
58-
db.insert(TABLE_NAME, null, contentValues);
68+
openHelper.getWritableDatabase().insert(TABLE_NAME, SQLiteDatabase.CONFLICT_NONE, contentValues);
5969
}
6070

6171
public Records select(String type, int logsPerRequest) {
6272
String query = "SELECT * FROM " + TABLE_NAME +
6373
" WHERE " + COLUMN_NAME_TYPE + " = ?" +
6474
" ORDER BY id ASC" +
6575
" LIMIT " + logsPerRequest;
66-
Cursor cursor = db.rawQuery(query, new String[]{type});
76+
Cursor cursor = openHelper.getReadableDatabase().query(query, new String[]{type});
6777

6878
try {
6979
return recordsFromCursor(cursor);
@@ -75,7 +85,7 @@ public Records select(String type, int logsPerRequest) {
7585
@Override
7686
public Records selectAll() {
7787
String query = "SELECT * FROM " + TABLE_NAME + " ORDER BY id ASC";
78-
Cursor cursor = db.rawQuery(query, null);
88+
Cursor cursor = openHelper.getReadableDatabase().query(query);
7989

8090
try {
8191
return recordsFromCursor(cursor);
@@ -103,7 +113,7 @@ private Record buildRecord(Cursor cursor) {
103113

104114
private int getRecordCount() {
105115
String query = "SELECT COUNT(*) FROM " + TABLE_NAME;
106-
Cursor cursor = db.rawQuery(query, null);
116+
Cursor cursor = openHelper.getReadableDatabase().query(query);
107117
int count = 0;
108118
if (cursor.moveToNext()) {
109119
count = cursor.getInt(0);
@@ -120,31 +130,27 @@ private JsonObject parseJsonString(String jsonString) {
120130

121131
@Override
122132
public void delete(Records records) {
123-
String query = "DELETE FROM " + TABLE_NAME +
124-
" WHERE id IN (" + records.getIdsAsString() + ")";
125-
db.execSQL(query);
133+
String where = "id IN (" + records.getIdsAsString() + ")";
134+
openHelper.getWritableDatabase().delete(TABLE_NAME, where, null);
126135
}
127136

128137
@Override
129138
public void truncateBufferedLogs(int maxRecords) {
130139
int recordSize = getRecordCount();
131140
if (recordSize > maxRecords) {
132-
String query = "DELETE FROM " + TABLE_NAME +
133-
" WHERE id IN ( SELECT id FROM " + TABLE_NAME +
134-
" ORDER BY id ASC LIMIT " + String.valueOf(recordSize - maxRecords) +
135-
")";
136-
db.execSQL(query);
141+
String where = "id IN ( SELECT id FROM " + TABLE_NAME +
142+
" ORDER BY id ASC LIMIT " + (recordSize - maxRecords) + ")";
143+
openHelper.getWritableDatabase().delete(TABLE_NAME, where, null);
137144
}
138145
}
139146

140147
@Override
141148
public void clear() {
142-
String query = "DELETE FROM " + TABLE_NAME;
143-
db.execSQL(query);
149+
openHelper.getWritableDatabase().delete(TABLE_NAME, null, null);
144150
}
145151

146152
@Override
147-
public void onCreate(SQLiteDatabase db) {
153+
public void onCreate(SupportSQLiteDatabase db) {
148154
String query = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +
149155
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
150156
COLUMN_NAME_TYPE + " TEXT," +
@@ -154,13 +160,13 @@ public void onCreate(SQLiteDatabase db) {
154160
}
155161

156162
@Override
157-
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
163+
public void onUpgrade(SupportSQLiteDatabase db, int oldVersion, int newVersion) {
158164
Log.e("PureeDbHelper", "unexpected onUpgrade(db, " + oldVersion + ", " + newVersion + ")");
159165
}
160166

161167
@Override
162168
protected void finalize() throws Throwable {
163-
db.close();
169+
openHelper.close();
164170
super.finalize();
165171
}
166172

0 commit comments

Comments
 (0)