Skip to content

Commit fdc362c

Browse files
committed
Added SqlCipher support
1 parent dbb4a31 commit fdc362c

8 files changed

Lines changed: 31 additions & 19 deletions

File tree

app/src/main/java/com/sample/utils/Utils.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.sample.utils;
2121

2222
import android.content.Context;
23+
import android.util.Pair;
2324
import android.widget.Toast;
2425

2526
import com.sample.BuildConfig;
@@ -58,11 +59,11 @@ public static void setCustomDatabaseFiles(Context context) {
5859
Class<?> debugDB = Class.forName("com.amitshekhar.DebugDB");
5960
Class[] argTypes = new Class[]{HashMap.class};
6061
Method setCustomDatabaseFiles = debugDB.getMethod("setCustomDatabaseFiles", argTypes);
61-
HashMap<String, File> customDatabaseFiles = new HashMap<>();
62+
HashMap<String, Pair<File, String>> customDatabaseFiles = new HashMap<>();
6263
// set your custom database files
6364
customDatabaseFiles.put(ExtTestDBHelper.DATABASE_NAME,
64-
new File(context.getFilesDir() + "/" + ExtTestDBHelper.DIR_NAME +
65-
"/" + ExtTestDBHelper.DATABASE_NAME));
65+
new Pair<>(new File(context.getFilesDir() + "/" + ExtTestDBHelper.DIR_NAME +
66+
"/" + ExtTestDBHelper.DATABASE_NAME), ""));
6667
setCustomDatabaseFiles.invoke(null, customDatabaseFiles);
6768
} catch (Exception ignore) {
6869

debug-db/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ dependencies {
4949
})
5050
testCompile 'junit:junit:4.12'
5151
compile 'com.google.code.gson:gson:2.8.0'
52+
compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
5253
}
5354

5455
//apply from: 'debug-db-upload.gradle'

debug-db/src/main/java/com/amitshekhar/DebugDB.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import android.content.Context;
2323
import android.util.Log;
24+
import android.util.Pair;
2425

2526
import com.amitshekhar.server.ClientServer;
2627
import com.amitshekhar.utils.NetworkUtils;
@@ -73,7 +74,7 @@ public static void shutDown() {
7374
}
7475
}
7576

76-
public static void setCustomDatabaseFiles(HashMap<String, File> customDatabaseFiles){
77+
public static void setCustomDatabaseFiles(HashMap<String, Pair<File, String>> customDatabaseFiles){
7778
if(clientServer!=null){
7879
clientServer.setCustomDatabaseFiles(customDatabaseFiles);
7980
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import android.content.Context;
2828
import android.util.Log;
29+
import android.util.Pair;
2930

3031
import java.io.File;
3132
import java.io.IOException;
@@ -87,7 +88,7 @@ public void run() {
8788
}
8889
}
8990

90-
public void setCustomDatabaseFiles(HashMap<String, File> customDatabaseFiles){
91+
public void setCustomDatabaseFiles(HashMap<String, Pair<File, String>> customDatabaseFiles){
9192
mRequestHandler.setCustomDatabaseFiles(customDatabaseFiles);
9293
}
9394

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

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121

2222
import android.content.Context;
2323
import android.content.res.AssetManager;
24-
import android.database.sqlite.SQLiteDatabase;
24+
import net.sqlcipher.database.SQLiteDatabase;
2525
import android.net.Uri;
2626
import android.text.TextUtils;
27+
import android.util.Pair;
2728

2829
import com.amitshekhar.model.Response;
2930
import com.amitshekhar.model.RowDataRequest;
@@ -59,8 +60,8 @@ public class RequestHandler {
5960
private final AssetManager mAssets;
6061
private boolean isDbOpened;
6162
private SQLiteDatabase mDatabase;
62-
private HashMap<String, File> mDatabaseFiles;
63-
private HashMap<String, File> mCustomDatabaseFiles;
63+
private HashMap<String, Pair<File, String>> mDatabaseFiles;
64+
private HashMap<String, Pair<File, String>> mCustomDatabaseFiles;
6465
private String mSelectedDatabase = null;
6566

6667
public RequestHandler(Context context) {
@@ -154,7 +155,7 @@ public void handle(Socket socket) throws IOException {
154155
}
155156
}
156157

157-
public void setCustomDatabaseFiles(HashMap<String, File> customDatabaseFiles){
158+
public void setCustomDatabaseFiles(HashMap<String, Pair<File, String>> customDatabaseFiles){
158159
mCustomDatabaseFiles = customDatabaseFiles;
159160
}
160161

@@ -165,8 +166,12 @@ private void writeServerError(PrintStream output) {
165166

166167
private void openDatabase(String database) {
167168
closeDatabase();
168-
File databaseFile = mDatabaseFiles.get(database);
169-
mDatabase = SQLiteDatabase.openOrCreateDatabase(databaseFile.getAbsolutePath(), null);
169+
File databaseFile = mDatabaseFiles.get(database).first;
170+
String password = mDatabaseFiles.get(database).second;
171+
172+
SQLiteDatabase.loadLibs(mContext);
173+
174+
mDatabase = SQLiteDatabase.openOrCreateDatabase(databaseFile.getAbsolutePath(), password, null);
170175
isDbOpened = true;
171176
}
172177

@@ -185,7 +190,7 @@ private String getDBListResponse() {
185190
}
186191
Response response = new Response();
187192
if (mDatabaseFiles != null) {
188-
for (HashMap.Entry<String, File> entry : mDatabaseFiles.entrySet()) {
193+
for (HashMap.Entry<String, Pair<File, String>> entry : mDatabaseFiles.entrySet()) {
189194
response.rows.add(entry.getKey());
190195
}
191196
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package com.amitshekhar.utils;
2121

2222
import android.content.Context;
23+
import android.util.Pair;
2324

2425
import java.io.File;
2526
import java.util.HashMap;
@@ -35,11 +36,11 @@ private DatabaseFileProvider() {
3536
// This class in not publicly instantiable
3637
}
3738

38-
public static HashMap<String, File> getDatabaseFiles(Context context) {
39-
HashMap<String, File> databaseFiles = new HashMap<>();
39+
public static HashMap<String, Pair<File, String>> getDatabaseFiles(Context context) {
40+
HashMap<String, Pair<File, String>> databaseFiles = new HashMap<>();
4041
try {
4142
for (String databaseName : context.databaseList()) {
42-
databaseFiles.put(databaseName, context.getDatabasePath(databaseName));
43+
databaseFiles.put(databaseName, new Pair<>(context.getDatabasePath(databaseName), ""));
4344
}
4445
} catch (Exception e) {
4546
e.printStackTrace();

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
package com.amitshekhar.utils;
2121

2222
import android.content.ContentValues;
23-
import android.database.Cursor;
24-
import android.database.sqlite.SQLiteDatabase;
23+
24+
import net.sqlcipher.Cursor;
25+
import net.sqlcipher.database.SQLiteDatabase;
2526
import android.text.TextUtils;
2627
import android.util.Log;
2728

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import android.content.res.AssetManager;
2323
import android.text.TextUtils;
2424
import android.util.Log;
25+
import android.util.Pair;
2526

2627
import java.io.ByteArrayOutputStream;
2728
import java.io.File;
@@ -82,14 +83,14 @@ public static byte[] loadContent(String fileName, AssetManager assetManager) thr
8283
}
8384
}
8485

85-
public static byte[] getDatabase(String selectedDatabase, HashMap<String, File> databaseFiles) {
86+
public static byte[] getDatabase(String selectedDatabase, HashMap<String, Pair<File, String>> databaseFiles) {
8687
if (TextUtils.isEmpty(selectedDatabase)) {
8788
return null;
8889
}
8990

9091
byte[] byteArray = new byte[0];
9192
try {
92-
File file = databaseFiles.get(selectedDatabase);
93+
File file = databaseFiles.get(selectedDatabase).first;
9394

9495
byteArray = null;
9596
try {

0 commit comments

Comments
 (0)