Merge pull request #6181 from hackbar/database-downgrade

Android: Handle a database downgrade.
This commit is contained in:
Anthony 2017-11-10 11:10:30 -08:00 committed by GitHub
commit 126b7ea01c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 9 deletions

View File

@ -78,6 +78,7 @@ public final class GameDatabase extends SQLiteOpenHelper
+ KEY_DB_ID + TYPE_PRIMARY + SEPARATOR
+ KEY_FOLDER_PATH + TYPE_STRING + CONSTRAINT_UNIQUE + ")";
private static final String SQL_DELETE_FOLDERS = "DROP TABLE IF EXISTS " + TABLE_NAME_FOLDERS;
private static final String SQL_DELETE_GAMES = "DROP TABLE IF EXISTS " + TABLE_NAME_GAMES;
public GameDatabase(Context context)
@ -91,11 +92,19 @@ public final class GameDatabase extends SQLiteOpenHelper
{
Log.debug("[GameDatabase] GameDatabase - Creating database...");
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_GAMES);
database.execSQL(SQL_CREATE_GAMES);
execSqlAndLog(database, SQL_CREATE_GAMES);
execSqlAndLog(database, SQL_CREATE_FOLDERS);
}
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_FOLDERS);
database.execSQL(SQL_CREATE_FOLDERS);
@Override
public void onDowngrade(SQLiteDatabase database, int oldVersion, int newVersion)
{
Log.verbose("[GameDatabase] Downgrades not supporting, clearing databases..");
execSqlAndLog(database, SQL_DELETE_FOLDERS);
execSqlAndLog(database, SQL_CREATE_FOLDERS);
execSqlAndLog(database, SQL_DELETE_GAMES);
execSqlAndLog(database, SQL_CREATE_GAMES);
}
@Override
@ -103,11 +112,9 @@ public final class GameDatabase extends SQLiteOpenHelper
{
Log.info("[GameDatabase] Upgrading database from schema version " + oldVersion + " to " + newVersion);
Log.verbose("[GameDatabase] Executing SQL: " + SQL_DELETE_GAMES);
database.execSQL(SQL_DELETE_GAMES);
Log.verbose("[GameDatabase] Executing SQL: " + SQL_CREATE_GAMES);
database.execSQL(SQL_CREATE_GAMES);
// Delete all the games
execSqlAndLog(database, SQL_DELETE_GAMES);
execSqlAndLog(database, SQL_CREATE_GAMES);
Log.verbose("[GameDatabase] Re-scanning library with new schema.");
scanLibrary(database);
@ -283,4 +290,10 @@ public final class GameDatabase extends SQLiteOpenHelper
}
});
}
private void execSqlAndLog(SQLiteDatabase database, String sql)
{
Log.verbose("[GameDatabase] Executing SQL: " + sql);
database.execSQL(sql);
}
}