|
|
|
@ -28,7 +28,6 @@ import org.thoughtcrime.securesms.database.SessionDatabase;
|
|
|
|
|
import org.thoughtcrime.securesms.database.SignedPreKeyDatabase;
|
|
|
|
|
import org.thoughtcrime.securesms.database.SmsDatabase;
|
|
|
|
|
import org.thoughtcrime.securesms.util.Conversions;
|
|
|
|
|
import org.thoughtcrime.securesms.util.Hex;
|
|
|
|
|
import org.thoughtcrime.securesms.util.Util;
|
|
|
|
|
import org.whispersystems.libsignal.kdf.HKDFv3;
|
|
|
|
|
import org.whispersystems.libsignal.util.ByteUtil;
|
|
|
|
@ -136,25 +135,24 @@ public class FullBackupExporter extends FullBackupBase {
|
|
|
|
|
EventBus.getDefault().post(new BackupEvent(BackupEvent.Type.PROGRESS, ++count));
|
|
|
|
|
|
|
|
|
|
if (predicate == null || predicate.test(cursor)) {
|
|
|
|
|
StringBuilder statement = new StringBuilder(template);
|
|
|
|
|
StringBuilder statement = new StringBuilder(template);
|
|
|
|
|
BackupProtos.SqlStatement.Builder statementBuilder = BackupProtos.SqlStatement.newBuilder();
|
|
|
|
|
|
|
|
|
|
statement.append('(');
|
|
|
|
|
|
|
|
|
|
for (int i=0;i<cursor.getColumnCount();i++) {
|
|
|
|
|
statement.append('?');
|
|
|
|
|
|
|
|
|
|
if (cursor.getType(i) == Cursor.FIELD_TYPE_STRING) {
|
|
|
|
|
statement.append('\'');
|
|
|
|
|
statement.append(cursor.getString(i).replace("'", "''"));
|
|
|
|
|
statement.append('\'');
|
|
|
|
|
statementBuilder.addParameters(BackupProtos.SqlStatement.SqlParameter.newBuilder().setStringParamter(cursor.getString(i)));
|
|
|
|
|
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_FLOAT) {
|
|
|
|
|
statement.append(cursor.getFloat(i));
|
|
|
|
|
statementBuilder.addParameters(BackupProtos.SqlStatement.SqlParameter.newBuilder().setDoubleParameter(cursor.getDouble(i)));
|
|
|
|
|
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_INTEGER) {
|
|
|
|
|
statement.append(cursor.getLong(i));
|
|
|
|
|
statementBuilder.addParameters(BackupProtos.SqlStatement.SqlParameter.newBuilder().setIntegerParameter(cursor.getLong(i)));
|
|
|
|
|
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_BLOB) {
|
|
|
|
|
statement.append("x'");
|
|
|
|
|
statement.append(Hex.toStringCondensed(cursor.getBlob(i)));
|
|
|
|
|
statement.append('\'');
|
|
|
|
|
statementBuilder.addParameters(BackupProtos.SqlStatement.SqlParameter.newBuilder().setBlobParameter(ByteString.copyFrom(cursor.getBlob(i))));
|
|
|
|
|
} else if (cursor.getType(i) == Cursor.FIELD_TYPE_NULL) {
|
|
|
|
|
statement.append("NULL");
|
|
|
|
|
statementBuilder.addParameters(BackupProtos.SqlStatement.SqlParameter.newBuilder().setNullparameter(true));
|
|
|
|
|
} else {
|
|
|
|
|
throw new AssertionError("unknown type?" + cursor.getType(i));
|
|
|
|
|
}
|
|
|
|
@ -166,7 +164,7 @@ public class FullBackupExporter extends FullBackupBase {
|
|
|
|
|
|
|
|
|
|
statement.append(')');
|
|
|
|
|
|
|
|
|
|
outputStream.write(BackupProtos.SqlStatement.newBuilder().setStatement(statement.toString()).build());
|
|
|
|
|
outputStream.write(statementBuilder.setStatement(statement.toString()).build());
|
|
|
|
|
|
|
|
|
|
if (postProcess != null) postProcess.accept(cursor);
|
|
|
|
|
}
|
|
|
|
|