Loading k9mail/src/main/java/com/fsck/k9/mailstore/StoreSchemaDefinition.java +2 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import com.fsck.k9.Account; import com.fsck.k9.BuildConfig; import com.fsck.k9.K9; import com.fsck.k9.mail.Flag; import com.fsck.k9.mail.Folder; import com.fsck.k9.mailstore.migrations.Migrations; import com.fsck.k9.mailstore.migrations.MigrationsHelper; import com.fsck.k9.preferences.Storage; Loading Loading @@ -89,7 +90,7 @@ class StoreSchemaDefinition implements LockableDatabase.SchemaDefinition { "poll_class TEXT, " + "push_class TEXT, " + "display_class TEXT, " + "notify_class TEXT, " + "notify_class TEXT default '"+ Folder.FolderClass.INHERITED.name() + "', " + "more_messages TEXT default \"unknown\"" + ")"); Loading k9mail/src/test/java/com/fsck/k9/mailstore/StoreSchemaDefinitionTest.java +21 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.fsck.k9.mailstore; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; Loading @@ -10,6 +11,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.fsck.k9.Account; import com.fsck.k9.BuildConfig; Loading Loading @@ -294,20 +296,31 @@ public class StoreSchemaDefinitionTest { } private List<String> objectsInDatabase(SQLiteDatabase db, String type) { List<String> tables = new ArrayList<>(); Cursor cursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type = ?", new String[] { type }); List<String> databaseObjects = new ArrayList<>(); Cursor cursor = db.rawQuery("SELECT sql FROM sqlite_master WHERE type = ? AND sql IS NOT NULL", new String[] { type }); try { if (cursor.moveToFirst()) { while (!cursor.isAfterLast()) { tables.add(cursor.getString(cursor.getColumnIndex("name"))); cursor.moveToNext(); } while (cursor.moveToNext()) { String sql = cursor.getString(cursor.getColumnIndex("sql")); String resortedSql = "table".equals(type) ? sortTableColumns(sql) : sql; databaseObjects.add(resortedSql); } } finally { cursor.close(); } return tables; return databaseObjects; } private String sortTableColumns(String sql) { int positionOfColumnDefinitions = sql.indexOf('('); String columnDefinitionsSql = sql.substring(positionOfColumnDefinitions + 1, sql.length() - 1); String[] columnDefinitions = columnDefinitionsSql.split(" *, *(?![^(]*\\))"); Arrays.sort(columnDefinitions); String sqlPrefix = sql.substring(0, positionOfColumnDefinitions + 1); String sortedColumnDefinitionsSql = TextUtils.join(", ", columnDefinitions); return sqlPrefix + sortedColumnDefinitionsSql + ")"; } private void insertMessageWithSubject(SQLiteDatabase database, String subject) { Loading Loading
k9mail/src/main/java/com/fsck/k9/mailstore/StoreSchemaDefinition.java +2 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import com.fsck.k9.Account; import com.fsck.k9.BuildConfig; import com.fsck.k9.K9; import com.fsck.k9.mail.Flag; import com.fsck.k9.mail.Folder; import com.fsck.k9.mailstore.migrations.Migrations; import com.fsck.k9.mailstore.migrations.MigrationsHelper; import com.fsck.k9.preferences.Storage; Loading Loading @@ -89,7 +90,7 @@ class StoreSchemaDefinition implements LockableDatabase.SchemaDefinition { "poll_class TEXT, " + "push_class TEXT, " + "display_class TEXT, " + "notify_class TEXT, " + "notify_class TEXT default '"+ Folder.FolderClass.INHERITED.name() + "', " + "more_messages TEXT default \"unknown\"" + ")"); Loading
k9mail/src/test/java/com/fsck/k9/mailstore/StoreSchemaDefinitionTest.java +21 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package com.fsck.k9.mailstore; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; Loading @@ -10,6 +11,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.fsck.k9.Account; import com.fsck.k9.BuildConfig; Loading Loading @@ -294,20 +296,31 @@ public class StoreSchemaDefinitionTest { } private List<String> objectsInDatabase(SQLiteDatabase db, String type) { List<String> tables = new ArrayList<>(); Cursor cursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type = ?", new String[] { type }); List<String> databaseObjects = new ArrayList<>(); Cursor cursor = db.rawQuery("SELECT sql FROM sqlite_master WHERE type = ? AND sql IS NOT NULL", new String[] { type }); try { if (cursor.moveToFirst()) { while (!cursor.isAfterLast()) { tables.add(cursor.getString(cursor.getColumnIndex("name"))); cursor.moveToNext(); } while (cursor.moveToNext()) { String sql = cursor.getString(cursor.getColumnIndex("sql")); String resortedSql = "table".equals(type) ? sortTableColumns(sql) : sql; databaseObjects.add(resortedSql); } } finally { cursor.close(); } return tables; return databaseObjects; } private String sortTableColumns(String sql) { int positionOfColumnDefinitions = sql.indexOf('('); String columnDefinitionsSql = sql.substring(positionOfColumnDefinitions + 1, sql.length() - 1); String[] columnDefinitions = columnDefinitionsSql.split(" *, *(?![^(]*\\))"); Arrays.sort(columnDefinitions); String sqlPrefix = sql.substring(0, positionOfColumnDefinitions + 1); String sortedColumnDefinitionsSql = TextUtils.join(", ", columnDefinitions); return sqlPrefix + sortedColumnDefinitionsSql + ")"; } private void insertMessageWithSubject(SQLiteDatabase database, String subject) { Loading