package com.ushahidi.android.app.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import com.ushahidi.android.app.MainApplication;
import com.ushahidi.android.app.util.DbUtils;
public abstract class DbSqliteHelper extends SQLiteOpenHelper {
public DbSqliteHelper(Context context, String name, int version) {
super(context, name, null, version);
}
protected abstract String getTableName();
@Override
public void onCreate(SQLiteDatabase db) {
log("Creating database table for " + getTableName());
String createStatement = DbUtils.getCreateTable(getTableName());
try {
db.execSQL(createStatement);
} catch (SQLiteException ex) {
if (ex.getMessage().startsWith("table " + getTableName() + " already exists: ")) {
log("Table already exists: " + getTableName());
} else {
log("Error executing SQL: " + createStatement, ex);
throw ex;
}
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
log("Database version changed from " + oldVersion + " to " + newVersion);
db.execSQL("DROP TABLE IF EXISTS " + getTableName());
onCreate(db);
}
protected void log(String message) {
if (MainApplication.LOGGING_MODE)
Log.i(getClass().getName(), message);
}
protected void log(String format, Object... args) {
if (MainApplication.LOGGING_MODE)
Log.i(getClass().getName(), String.format(format, args));
}
protected void log(String message, Exception ex) {
if (MainApplication.LOGGING_MODE)
Log.e(getClass().getName(), message, ex);
}
}