package com.code44.finance.data.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
private static final String NAME = "finance.db";
private static final int VERSION = 20;
private final Context context;
public DBHelper(Context context) {
this(context, NAME);
}
public DBHelper(Context context, String name) {
super(context, name, null, VERSION);
this.context = context;
}
public static void createIndex(SQLiteDatabase db, Column serverIdColumn) {
db.execSQL("create index " + serverIdColumn.getName() + "_idx ON " + serverIdColumn.getTableName() + "(" + serverIdColumn.getName() + ");");
}
@Override public void onCreate(SQLiteDatabase db) {
// Create tables
db.execSQL(Tables.Currencies.createScript());
db.execSQL(Tables.Accounts.createScript());
db.execSQL(Tables.Categories.createScript());
db.execSQL(Tables.Tags.createScript());
db.execSQL(Tables.Transactions.createScript());
db.execSQL(Tables.TransactionTags.createScript());
// Create indexes
createIndex(db, Tables.Currencies.ID);
createIndex(db, Tables.Accounts.ID);
createIndex(db, Tables.Categories.ID);
createIndex(db, Tables.Tags.ID);
createIndex(db, Tables.Transactions.ID);
// Add defaults
addDefaults(db);
}
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 18: // 45 - v0.9.13
DBMigration.upgradeV19(db);
case 19: // 46 - v0.10.0
DBMigration.upgradeV20(db);
}
}
public void clear() {
final SQLiteDatabase database = getWritableDatabase();
database.delete(Tables.Currencies.TABLE_NAME, null, null);
// TODO Clear database for the user
}
private void addDefaults(SQLiteDatabase database) {
new DBDefaults(context, database).addDefaults();
}
}