add debug backup/restore options to main menu

Closes #543
This commit is contained in:
Vincent Breitmoser
2014-04-11 20:25:50 +02:00
parent e02e9e6707
commit 227155d484
3 changed files with 90 additions and 1 deletions

View File

@@ -36,6 +36,9 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.UserIdsColumns;
import org.sufficientlysecure.keychain.provider.KeychainContract.CertsColumns;
import org.sufficientlysecure.keychain.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class KeychainDatabase extends SQLiteOpenHelper {
@@ -210,7 +213,7 @@ public class KeychainDatabase extends SQLiteOpenHelper {
}
}
if(!hasApgDb)
if(!hasApgDb || true)
return;
Log.d(Constants.TAG, "apg.db exists! Importing...");
@@ -300,4 +303,44 @@ public class KeychainDatabase extends SQLiteOpenHelper {
Log.d(Constants.TAG, "All done, (not) deleting apg.db");
}
private static void copy(File in, File out) throws IOException {
FileInputStream ss = new FileInputStream(in);
FileOutputStream ds = new FileOutputStream(out);
byte[] buf = new byte[512];
while(ss.available() > 0) {
int count = ss.read(buf, 0, 512);
ds.write(buf, 0, count);
}
}
public static void debugRead(Context context) throws IOException {
if(!Constants.DEBUG) {
return;
}
File in = context.getDatabasePath("debug.db");
File out = context.getDatabasePath("openkeychain.db");
if(!in.canRead()) {
throw new IOException("Cannot read " + in.getName());
}
if(!out.canRead()) {
throw new IOException("Cannot write " + out.getName());
}
copy(in, out);
}
public static void debugWrite(Context context) throws IOException {
if(!Constants.DEBUG) {
return;
}
File in = context.getDatabasePath("openkeychain.db");
File out = context.getDatabasePath("debug.db");
if(!in.canRead()) {
throw new IOException("Cannot read " + in.getName());
}
if(!out.canRead()) {
throw new IOException("Cannot write " + out.getName());
}
copy(in, out);
}
}