/**
*
*/
package org.dodgybits.shuffle.android.persistence.provider;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import org.dodgybits.shuffle.android.persistence.migrations.Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V10Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V11Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V12Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V13Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V14Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V15Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V1Migration;
import org.dodgybits.shuffle.android.persistence.migrations.V9Migration;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
class DatabaseHelper extends SQLiteOpenHelper {
private static final SortedMap<Integer, Migration> ALL_MIGRATIONS = new TreeMap<Integer, Migration>();
static {
ALL_MIGRATIONS.put(1, new V1Migration());
ALL_MIGRATIONS.put(9, new V9Migration());
ALL_MIGRATIONS.put(10, new V10Migration());
ALL_MIGRATIONS.put(11, new V11Migration());
ALL_MIGRATIONS.put(12, new V12Migration());
ALL_MIGRATIONS.put(13, new V13Migration());
ALL_MIGRATIONS.put(14, new V14Migration());
ALL_MIGRATIONS.put(15, new V15Migration());
}
DatabaseHelper(Context context) {
super(context, AbstractCollectionProvider.cDatabaseName, null, AbstractCollectionProvider.cDatabaseVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.i(AbstractCollectionProvider.cTag, "Creating shuffle DB");
executeMigrations(db, ALL_MIGRATIONS.keySet());
}
private void executeMigrations(SQLiteDatabase db,
Set<Integer> migrationVersions) {
for (Integer version : migrationVersions) {
Log.i(AbstractCollectionProvider.cTag, "Migrating to version " + version);
ALL_MIGRATIONS.get(version).migrate(db);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.i(AbstractCollectionProvider.cTag,
"Upgrading database from version " + oldVersion + " to " + newVersion);
SortedMap<Integer, Migration> migrations = ALL_MIGRATIONS.subMap(oldVersion, newVersion);
executeMigrations(db, migrations.keySet());
}
}