package com.darkrockstudios.apps.tminus.database;
/**
* Created by Adam on 6/29/13.
* Dark Rock Studios
* darkrockstudios.com
*/
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.darkrockstudios.apps.tminus.BuildConfig;
import com.darkrockstudios.apps.tminus.database.tables.AgencyDetail;
import com.darkrockstudios.apps.tminus.database.tables.AgencyPad;
import com.darkrockstudios.apps.tminus.database.tables.AgencyRocket;
import com.darkrockstudios.apps.tminus.database.tables.AgencyType;
import com.darkrockstudios.apps.tminus.database.tables.RocketDetail;
import com.darkrockstudios.apps.tminus.launchlibrary.Agency;
import com.darkrockstudios.apps.tminus.launchlibrary.Launch;
import com.darkrockstudios.apps.tminus.launchlibrary.Location;
import com.darkrockstudios.apps.tminus.launchlibrary.Mission;
import com.darkrockstudios.apps.tminus.launchlibrary.Pad;
import com.darkrockstudios.apps.tminus.launchlibrary.Rocket;
import com.darkrockstudios.apps.tminus.launchlibrary.RocketFamily;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import java.io.File;
import java.sql.SQLException;
/**
* Database helper class used to manage the creation and upgrading of your database. This class also provides
* the DAOs used by the other classes.
*/
public class DatabaseHelper extends OrmLiteSqliteOpenHelper
{
private static final String TAG = DatabaseHelper.class.getSimpleName();
private static final String DATABASE_NAME = "TMinus.db";
private static final int DATABASE_VERSION = 11;
public DatabaseHelper( final Context context )
{
super( context,
(BuildConfig.DEBUG ? context.getExternalFilesDir( null ).getAbsolutePath() + File.separator + DATABASE_NAME :
DATABASE_NAME),
null,
DATABASE_VERSION );
}
@Override
public void onCreate( final SQLiteDatabase db, final ConnectionSource connectionSource )
{
try
{
Log.i( TAG, "Creating Database Tables..." );
TableUtils.createTable( connectionSource, Launch.class );
TableUtils.createTable( connectionSource, Location.class );
TableUtils.createTable( connectionSource, Pad.class );
TableUtils.createTable( connectionSource, Mission.class );
TableUtils.createTable( connectionSource, Rocket.class );
TableUtils.createTable( connectionSource, RocketFamily.class );
TableUtils.createTable( connectionSource, RocketDetail.class );
TableUtils.createTable( connectionSource, Agency.class );
TableUtils.createTable( connectionSource, AgencyRocket.class );
TableUtils.createTable( connectionSource, AgencyPad.class );
TableUtils.createTable( connectionSource, AgencyType.class );
TableUtils.createTable( connectionSource, AgencyDetail.class );
}
catch( final SQLException e )
{
Log.e( DatabaseHelper.class.getName(), "Can't create database", e );
throw new RuntimeException( e );
}
}
@Override
public void onUpgrade( final SQLiteDatabase db, final ConnectionSource connectionSource, final int oldVersion, final int newVersion )
{
try
{
Log.i( DatabaseHelper.class.getName(), "Upgrading Database Tables..." );
TableUtils.dropTable( connectionSource, Launch.class, true );
TableUtils.dropTable( connectionSource, Location.class, true );
TableUtils.dropTable( connectionSource, Pad.class, true );
TableUtils.dropTable( connectionSource, Mission.class, true );
TableUtils.dropTable( connectionSource, Rocket.class, true );
TableUtils.dropTable( connectionSource, RocketFamily.class, true );
TableUtils.dropTable( connectionSource, RocketDetail.class, true );
TableUtils.dropTable( connectionSource, Agency.class, true );
TableUtils.dropTable( connectionSource, AgencyRocket.class, true );
TableUtils.dropTable( connectionSource, AgencyPad.class, true );
TableUtils.dropTable( connectionSource, AgencyType.class, true );
TableUtils.dropTable( connectionSource, AgencyDetail.class, true );
// after we drop the old databases, we create the new ones
onCreate( db, connectionSource );
}
catch( final SQLException e )
{
Log.e( DatabaseHelper.class.getName(), "Can't drop databases", e );
throw new RuntimeException( e );
}
}
@Override
public void close()
{
super.close();
}
}