package org.rudirect.android.database; 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 org.rudirect.android.data.model.BusData; 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 = "RUDirect.db"; private static final int DATABASE_VERSION = 3; private Dao<BusData, Integer> busDataDao = null; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * This is called when the database is first created. Usually you should call createTable statements * here to create the tables that will store your data. */ @Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { Log.i(TAG, "onCreate"); TableUtils.createTable(connectionSource, BusData.class); } catch (SQLException e) { Log.e(TAG, "Can't create database", e); throw new RuntimeException(e); } } /** * This is called when your application is upgraded and it has a higher version number. This allows * you to adjust the various data to match the new version number. */ @Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { Log.i(TAG, "onUpgrade"); TableUtils.dropTable(connectionSource, BusData.class, true); // after we drop the old databases, we create the new ones onCreate(db, connectionSource); } catch (SQLException e) { Log.e(TAG, "Can't drop databases", e); throw new RuntimeException(e); } } /** * Returns the Database Access Object (DAO) for our BusData class. It will create it or just give * the cached value. */ public Dao<BusData, Integer> getDao() throws SQLException { if (busDataDao == null) { busDataDao = getDao(BusData.class); } return busDataDao; } /** * Close the database connections and clear any cached DAOs. */ @Override public void close() { super.close(); busDataDao = null; } }