package com.jasonrobinson.racer.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import com.jasonrobinson.racer.model.Race;
import com.jasonrobinson.racer.model.Race.Rule;
import java.sql.SQLException;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String TAG = DatabaseHelper.class.getSimpleName();
private static final String DATABASE_NAME = "racer.db";
private static final int VERSION = 1;
private Dao<Race, String> mRaceDao;
private Dao<Rule, Long> mRuleDao;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
database.beginTransaction();
try {
TableUtils.createTable(connectionSource, Race.class);
TableUtils.createTable(connectionSource, Rule.class);
database.setTransactionSuccessful();
} catch (SQLException e) {
Log.e(TAG, "Failed to create database", e);
throw new RuntimeException(e);
} finally {
database.endTransaction();
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
// no upgrades yet
}
public Dao<Race, String> getRaceDao() {
if (mRaceDao == null) {
try {
mRaceDao = getDao(Race.class);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
return mRaceDao;
}
public Dao<Rule, Long> getRuleDao() {
if (mRuleDao == null) {
try {
mRuleDao = getDao(Rule.class);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
return mRuleDao;
}
}