fix backup creation for older installations
if your Conversations installation is older than December 2016 (version 1.15.0) the backup would include historic data that a current installation is not able to read on restore. This commits excludes that data from the backup. If you had problems importing the backup you need to create a new backup after this patch
This commit is contained in:
parent
016e394897
commit
46596e8652
|
@ -145,25 +145,32 @@ public class ExportBackupService extends Service {
|
||||||
return cursorToString(tablename, cursor, max, false);
|
return cursorToString(tablename, cursor, max, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String cursorToString(String tablename, Cursor cursor, int max, boolean ignore) {
|
private static String cursorToString(final String tablename, final Cursor cursor, int max, boolean ignore) {
|
||||||
|
final boolean identities = SQLiteAxolotlStore.IDENTITIES_TABLENAME.equals(tablename);
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("INSERT ");
|
builder.append("INSERT ");
|
||||||
if (ignore) {
|
if (ignore) {
|
||||||
builder.append("OR IGNORE ");
|
builder.append("OR IGNORE ");
|
||||||
}
|
}
|
||||||
builder.append("INTO ").append(tablename).append("(");
|
builder.append("INTO ").append(tablename).append("(");
|
||||||
|
int skipColumn = -1;
|
||||||
for (int i = 0; i < cursor.getColumnCount(); ++i) {
|
for (int i = 0; i < cursor.getColumnCount(); ++i) {
|
||||||
|
final String name = cursor.getColumnName(i);
|
||||||
|
if (identities && SQLiteAxolotlStore.TRUSTED.equals(name)) {
|
||||||
|
skipColumn = i;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
builder.append(',');
|
builder.append(',');
|
||||||
}
|
}
|
||||||
builder.append(cursor.getColumnName(i));
|
builder.append(name);
|
||||||
}
|
}
|
||||||
builder.append(") VALUES");
|
builder.append(") VALUES");
|
||||||
for (int i = 0; i < max; ++i) {
|
for (int i = 0; i < max; ++i) {
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
builder.append(',');
|
builder.append(',');
|
||||||
}
|
}
|
||||||
appendValues(cursor, builder);
|
appendValues(cursor, builder, skipColumn);
|
||||||
if (i < max - 1 && !cursor.moveToNext()) {
|
if (i < max - 1 && !cursor.moveToNext()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -173,9 +180,12 @@ public class ExportBackupService extends Service {
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void appendValues(Cursor cursor, StringBuilder builder) {
|
private static void appendValues(final Cursor cursor, final StringBuilder builder, final int skipColumn) {
|
||||||
builder.append("(");
|
builder.append("(");
|
||||||
for (int i = 0; i < cursor.getColumnCount(); ++i) {
|
for (int i = 0; i < cursor.getColumnCount(); ++i) {
|
||||||
|
if (i == skipColumn) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (i != 0) {
|
if (i != 0) {
|
||||||
builder.append(',');
|
builder.append(',');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue