Skip to content

Commit 43e48d1

Browse files
committed
Provide database instance through interface
1 parent 52d1cba commit 43e48d1

File tree

4 files changed

+114
-23
lines changed

4 files changed

+114
-23
lines changed

debug-db/src/main/java/com/amitshekhar/server/RequestHandler.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import com.amitshekhar.model.RowDataRequest;
3030
import com.amitshekhar.model.TableDataResponse;
3131
import com.amitshekhar.model.UpdateRowResponse;
32+
import com.amitshekhar.sqlite.DebugSQLiteDB;
33+
import com.amitshekhar.sqlite.SQLiteDB;
3234
import com.amitshekhar.utils.Constants;
3335
import com.amitshekhar.utils.DatabaseFileProvider;
3436
import com.amitshekhar.utils.DatabaseHelper;
@@ -60,7 +62,7 @@ public class RequestHandler {
6062
private final Gson mGson;
6163
private final AssetManager mAssets;
6264
private boolean isDbOpened;
63-
private SQLiteDatabase mDatabase;
65+
private SQLiteDB sqLiteDB;
6466
private HashMap<String, Pair<File, String>> mDatabaseFiles;
6567
private HashMap<String, Pair<File, String>> mCustomDatabaseFiles;
6668
private String mSelectedDatabase = null;
@@ -172,15 +174,15 @@ private void openDatabase(String database) {
172174

173175
SQLiteDatabase.loadLibs(mContext);
174176

175-
mDatabase = SQLiteDatabase.openOrCreateDatabase(databaseFile.getAbsolutePath(), password, null);
177+
sqLiteDB = new DebugSQLiteDB(SQLiteDatabase.openOrCreateDatabase(databaseFile.getAbsolutePath(), password, null));
176178
isDbOpened = true;
177179
}
178180

179181
private void closeDatabase() {
180-
if (mDatabase != null && mDatabase.isOpen()) {
181-
mDatabase.close();
182+
if (sqLiteDB != null && sqLiteDB.isOpen()) {
183+
sqLiteDB.close();
182184
}
183-
mDatabase = null;
185+
sqLiteDB = null;
184186
isDbOpened = false;
185187
}
186188

@@ -213,7 +215,7 @@ private String getAllDataFromTheTableResponse(String route) {
213215

214216
if (isDbOpened) {
215217
String sql = "SELECT * FROM " + tableName;
216-
response = DatabaseHelper.getTableData(mDatabase, sql, tableName);
218+
response = DatabaseHelper.getTableData(sqLiteDB, sql, tableName);
217219
} else {
218220
response = PrefHelper.getAllPrefData(mContext, tableName);
219221
}
@@ -244,13 +246,13 @@ private String executeQueryAndGetResponse(String route) {
244246
String aQuery = statements[i].trim();
245247
first = aQuery.split(" ")[0].toLowerCase();
246248
if (first.equals("select") || first.equals("pragma")) {
247-
TableDataResponse response = DatabaseHelper.getTableData(mDatabase, aQuery, null);
249+
TableDataResponse response = DatabaseHelper.getTableData(sqLiteDB, aQuery, null);
248250
data = mGson.toJson(response);
249251
if (!response.isSuccessful) {
250252
break;
251253
}
252254
} else {
253-
TableDataResponse response = DatabaseHelper.exec(mDatabase, aQuery);
255+
TableDataResponse response = DatabaseHelper.exec(sqLiteDB, aQuery);
254256
data = mGson.toJson(response);
255257
if (!response.isSuccessful) {
256258
break;
@@ -285,7 +287,7 @@ private String getTableListResponse(String route) {
285287
mSelectedDatabase = Constants.APP_SHARED_PREFERENCES;
286288
} else {
287289
openDatabase(database);
288-
response = DatabaseHelper.getAllTableName(mDatabase);
290+
response = DatabaseHelper.getAllTableName(sqLiteDB);
289291
mSelectedDatabase = database;
290292
}
291293
return mGson.toJson(response);
@@ -303,7 +305,7 @@ private String addTableDataAndGetResponse(String route) {
303305
if (Constants.APP_SHARED_PREFERENCES.equals(mSelectedDatabase)) {
304306
response = PrefHelper.addOrUpdateRow(mContext, tableName, rowDataRequests);
305307
} else {
306-
response = DatabaseHelper.addRow(mDatabase, tableName, rowDataRequests);
308+
response = DatabaseHelper.addRow(sqLiteDB, tableName, rowDataRequests);
307309
}
308310
return mGson.toJson(response);
309311
} catch (Exception e) {
@@ -325,7 +327,7 @@ private String updateTableDataAndGetResponse(String route) {
325327
if (Constants.APP_SHARED_PREFERENCES.equals(mSelectedDatabase)) {
326328
response = PrefHelper.addOrUpdateRow(mContext, tableName, rowDataRequests);
327329
} else {
328-
response = DatabaseHelper.updateRow(mDatabase, tableName, rowDataRequests);
330+
response = DatabaseHelper.updateRow(sqLiteDB, tableName, rowDataRequests);
329331
}
330332
return mGson.toJson(response);
331333
} catch (Exception e) {
@@ -348,7 +350,7 @@ private String deleteTableDataAndGetResponse(String route) {
348350
if (Constants.APP_SHARED_PREFERENCES.equals(mSelectedDatabase)) {
349351
response = PrefHelper.deleteRow(mContext, tableName, rowDataRequests);
350352
} else {
351-
response = DatabaseHelper.deleteRow(mDatabase, tableName, rowDataRequests);
353+
response = DatabaseHelper.deleteRow(sqLiteDB, tableName, rowDataRequests);
352354
}
353355
return mGson.toJson(response);
354356
} catch (Exception e) {
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.amitshekhar.sqlite;
2+
3+
import android.content.ContentValues;
4+
import android.database.Cursor;
5+
import android.database.SQLException;
6+
7+
import net.sqlcipher.database.SQLiteDatabase;
8+
9+
/**
10+
* Created by anandgaurav on 12/02/18.
11+
*/
12+
13+
public class DebugSQLiteDB implements SQLiteDB {
14+
15+
private final SQLiteDatabase database;
16+
17+
public DebugSQLiteDB(SQLiteDatabase database) {
18+
this.database = database;
19+
}
20+
21+
@Override
22+
public int delete(String table, String whereClause, String[] whereArgs) {
23+
return database.delete(table, whereClause, whereArgs);
24+
}
25+
26+
@Override
27+
public boolean isOpen() {
28+
return database.isOpen();
29+
}
30+
31+
@Override
32+
public void close() {
33+
database.close();
34+
}
35+
36+
@Override
37+
public Cursor rawQuery(String sql, String[] selectionArgs) {
38+
return database.rawQuery(sql, selectionArgs);
39+
}
40+
41+
@Override
42+
public void execSQL(String sql) throws SQLException {
43+
database.execSQL(sql);
44+
}
45+
46+
@Override
47+
public long insert(String table, String nullColumnHack, ContentValues values) {
48+
return database.insert(table, nullColumnHack, values);
49+
}
50+
51+
@Override
52+
public int update(String table, ContentValues values, String whereClause, String[] whereArgs) {
53+
return database.update(table, values, whereClause, whereArgs);
54+
}
55+
56+
@Override
57+
public int getVersion() {
58+
return database.getVersion();
59+
}
60+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.amitshekhar.sqlite;
2+
3+
import android.content.ContentValues;
4+
import android.database.Cursor;
5+
import android.database.SQLException;
6+
7+
8+
/**
9+
* Created by anandgaurav on 12/02/18.
10+
*/
11+
12+
public interface SQLiteDB {
13+
14+
int delete(String table, String whereClause, String[] whereArgs);
15+
16+
boolean isOpen();
17+
18+
void close();
19+
20+
Cursor rawQuery(String sql, String[] selectionArgs);
21+
22+
void execSQL(String sql) throws SQLException;
23+
24+
long insert(String table, String nullColumnHack, ContentValues values);
25+
26+
int update(String table, ContentValues values, String whereClause, String[] whereArgs);
27+
28+
int getVersion();
29+
30+
}

debug-db/src/main/java/com/amitshekhar/utils/DatabaseHelper.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020
package com.amitshekhar.utils;
2121

2222
import android.content.ContentValues;
23+
import android.database.Cursor;
2324
import android.text.TextUtils;
2425

2526
import com.amitshekhar.model.Response;
2627
import com.amitshekhar.model.RowDataRequest;
2728
import com.amitshekhar.model.TableDataResponse;
2829
import com.amitshekhar.model.UpdateRowResponse;
29-
30-
import net.sqlcipher.Cursor;
31-
import net.sqlcipher.database.SQLiteDatabase;
30+
import com.amitshekhar.sqlite.SQLiteDB;
3231

3332
import java.util.ArrayList;
3433
import java.util.HashSet;
@@ -44,7 +43,7 @@ private DatabaseHelper() {
4443
// This class in not publicly instantiable
4544
}
4645

47-
public static Response getAllTableName(SQLiteDatabase database) {
46+
public static Response getAllTableName(SQLiteDB database) {
4847
Response response = new Response();
4948
Cursor c = database.rawQuery("SELECT name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name COLLATE NOCASE", null);
5049
if (c.moveToFirst()) {
@@ -63,7 +62,7 @@ public static Response getAllTableName(SQLiteDatabase database) {
6362
return response;
6463
}
6564

66-
public static TableDataResponse getTableData(SQLiteDatabase db, String selectQuery, String tableName) {
65+
public static TableDataResponse getTableData(SQLiteDB db, String selectQuery, String tableName) {
6766

6867
TableDataResponse tableData = new TableDataResponse();
6968
tableData.isSelectQuery = true;
@@ -173,7 +172,7 @@ private static String getQuotedTableName(String tableName) {
173172
return String.format("[%s]", tableName);
174173
}
175174

176-
private static List<TableDataResponse.TableInfo> getTableInfo(SQLiteDatabase db, String pragmaQuery) {
175+
private static List<TableDataResponse.TableInfo> getTableInfo(SQLiteDB db, String pragmaQuery) {
177176

178177
Cursor cursor;
179178
try {
@@ -219,7 +218,7 @@ private static List<TableDataResponse.TableInfo> getTableInfo(SQLiteDatabase db,
219218
}
220219

221220

222-
public static UpdateRowResponse addRow(SQLiteDatabase db, String tableName,
221+
public static UpdateRowResponse addRow(SQLiteDB db, String tableName,
223222
List<RowDataRequest> rowDataRequests) {
224223
UpdateRowResponse updateRowResponse = new UpdateRowResponse();
225224

@@ -261,7 +260,7 @@ public static UpdateRowResponse addRow(SQLiteDatabase db, String tableName,
261260
}
262261

263262

264-
public static UpdateRowResponse updateRow(SQLiteDatabase db, String tableName, List<RowDataRequest> rowDataRequests) {
263+
public static UpdateRowResponse updateRow(SQLiteDB db, String tableName, List<RowDataRequest> rowDataRequests) {
265264

266265
UpdateRowResponse updateRowResponse = new UpdateRowResponse();
267266

@@ -316,7 +315,7 @@ public static UpdateRowResponse updateRow(SQLiteDatabase db, String tableName, L
316315
}
317316

318317

319-
public static UpdateRowResponse deleteRow(SQLiteDatabase db, String tableName,
318+
public static UpdateRowResponse deleteRow(SQLiteDB db, String tableName,
320319
List<RowDataRequest> rowDataRequests) {
321320

322321
UpdateRowResponse updateRowResponse = new UpdateRowResponse();
@@ -363,7 +362,7 @@ public static UpdateRowResponse deleteRow(SQLiteDatabase db, String tableName,
363362
}
364363

365364

366-
public static TableDataResponse exec(SQLiteDatabase database, String sql) {
365+
public static TableDataResponse exec(SQLiteDB database, String sql) {
367366
TableDataResponse tableDataResponse = new TableDataResponse();
368367
tableDataResponse.isSelectQuery = false;
369368
try {
@@ -387,7 +386,7 @@ public static TableDataResponse exec(SQLiteDatabase database, String sql) {
387386
}
388387

389388
private static String getTableName(String selectQuery) {
390-
// TODO: 24/4/17 Handle JOIN Query
389+
// TODO: Handle JOIN Query
391390
TableNameParser tableNameParser = new TableNameParser(selectQuery);
392391
HashSet<String> tableNames = (HashSet<String>) tableNameParser.tables();
393392

0 commit comments

Comments
 (0)