package org.mtransit.android.provider;
import org.mtransit.android.commons.MTLog;
import org.mtransit.android.commons.SqlUtils;
import org.mtransit.android.commons.StringUtils;
import org.mtransit.android.commons.provider.MTSQLiteOpenHelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.provider.BaseColumns;
public class FavoriteDbHelper extends MTSQLiteOpenHelper {
private static final String TAG = FavoriteDbHelper.class.getSimpleName();
@Override
public String getLogTag() {
return TAG;
}
public static final String DB_NAME = "favorite.db";
public static final String T_FAVORITE = "favorite";
public static final String T_FAVORITE_K_ID = BaseColumns._ID;
public static final String T_FAVORITE_K_TYPE = "type";
public static final String T_FAVORITE_K_FK_ID = "fk_id";
public static final String T_FAVORITE_K_FOLDER_ID = "folder_id";
public static final String T_FAVORITE_FOLDER = "favorite_folder";
public static final String T_FAVORITE_FOLDER_K_ID = BaseColumns._ID;
public static final String T_FAVORITE_FOLDER_K_NAME = "name";
public static final String T_FAVORITE_SQL_CREATE = SqlUtils.SQLCreateBuilder.getNew(T_FAVORITE) //
.appendColumn(T_FAVORITE_K_ID, SqlUtils.INT_PK) //
.appendColumn(T_FAVORITE_K_TYPE, SqlUtils.INT) //
.appendColumn(T_FAVORITE_K_FK_ID, SqlUtils.TXT) //
.appendColumn(T_FAVORITE_K_FOLDER_ID, SqlUtils.INT) //
.appendForeignKey(T_FAVORITE_K_FOLDER_ID, T_FAVORITE_FOLDER, T_FAVORITE_FOLDER_K_ID) //
.build();
public static final String T_FAVORITE_SQL_DROP = SqlUtils.getSQLDropIfExistsQuery(T_FAVORITE);
private static final String T_FAVORITE_SQL_UPGRADE_BEFORE_2 = "ALTER TABLE " + T_FAVORITE + " ADD " + T_FAVORITE_K_FOLDER_ID + " " + SqlUtils.INT
+ " NOT NULL DEFAULT(" + FavoriteManager.DEFAULT_FOLDER_ID + ")";
public static final String T_FAVORITE_FOLDER_SQL_CREATE = SqlUtils.SQLCreateBuilder.getNew(T_FAVORITE_FOLDER) //
.appendColumn(T_FAVORITE_FOLDER_K_ID, SqlUtils.INT_PK) //
.appendColumn(T_FAVORITE_FOLDER_K_NAME, SqlUtils.TXT) //
.build();
private static final String T_FAVORITE_FOLDER_SQL_INIT = String.format(
SqlUtils.SQLInsertBuilder.getNew(T_FAVORITE_FOLDER).appendColumns(T_FAVORITE_FOLDER_K_ID, T_FAVORITE_FOLDER_K_NAME).build(), //
FavoriteManager.DEFAULT_FOLDER_ID + "," + SqlUtils.escapeString(StringUtils.EMPTY));
public static final String T_FAVORITE_FOLDER_SQL_DROP = SqlUtils.getSQLDropIfExistsQuery(T_FAVORITE_FOLDER);
public static final int DB_VERSION = 2;
public FavoriteDbHelper(Context context) {
super(context, getDbName(), null, getDbVersion());
}
@Override
public void onCreateMT(SQLiteDatabase db) {
initAllDbTables(db);
}
@Override
public void onUpgradeMT(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
try {
db.execSQL(T_FAVORITE_FOLDER_SQL_CREATE);
db.execSQL(T_FAVORITE_FOLDER_SQL_INIT);
db.execSQL(T_FAVORITE_SQL_UPGRADE_BEFORE_2);
return;
} catch (Exception e) {
MTLog.w(this, e, "Error while upgrading DB from %s to %s! (reset)", oldVersion, newVersion);
}
}
db.execSQL(T_FAVORITE_SQL_DROP);
db.execSQL(T_FAVORITE_FOLDER_SQL_DROP);
initAllDbTables(db);
}
private void initAllDbTables(SQLiteDatabase db) {
db.execSQL(T_FAVORITE_SQL_CREATE);
db.execSQL(T_FAVORITE_FOLDER_SQL_CREATE);
db.execSQL(T_FAVORITE_FOLDER_SQL_INIT);
}
public static int getDbVersion() {
return DB_VERSION;
}
public static String getDbName() {
return DB_NAME;
}
}