package com.echo5bravo.govre.DAL;
import java.util.ArrayList;
import com.echo5bravo.govre.INFO.CalDates;
import com.echo5bravo.govre.INFO.GtfsUpdateTracker;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.util.Log;
public class BusinessBaseGtfsUpdateTracker {
// LOCAL VARIABLES AND PROPERTIES
private static final String TAG = BusinessBaseGtfsUpdateTracker.class.getSimpleName();
GtfsUpdateTracker currentGtfsUpdateTracker = new GtfsUpdateTracker();
static SQLiteFactoryAdapter dbAdapter;
// DATABASE
/** Keep track of context so that we can load SQL from string resources */
private final Context myContext;
public final GtfsUpdateTracker getCurrentGtfsUpdateTracker()
{
return currentGtfsUpdateTracker;
}
public final void setCurrentGtfsUpdateTracker(GtfsUpdateTracker value)
{
currentGtfsUpdateTracker = value;
}
public BusinessBaseGtfsUpdateTracker(Context context) {
this.myContext = context;
SQLiteFactoryAdapter dbAdapter = SQLiteFactoryAdapter.getSQLiteFactoryAdapterInstance(myContext);
try
{
dbAdapter.createOrUseDataBase();
}
catch (Exception e) {
//Log.e(TAG, "Error " + e.toString());
}
}
/***
* Public Function: getAllGtfsFeedUpdates()
*
* @return ArrayList<GtfsUpdateTracker> : All GtfsFeedUpdates
*/
public static synchronized ArrayList<GtfsUpdateTracker> getAllGtfsFeedUpdates(Context context)
{
//Create SQLFactoryAdapter instance
SQLiteFactoryAdapter dbAdapter = SQLiteFactoryAdapter.getSQLiteFactoryAdapterInstance(context);
//Logic to create or use the existing database
try
{
dbAdapter.createOrUseDataBase();
}
catch (Exception e) {
//Log.e(TAG, "Error " + e.toString());
}
//Populate SQL
String sql = "SELECT FeedName " +
" ,LastUpdated " +
" FROM " +
" GTFS_UPDATE_TRACKER; ";
//Open Database
dbAdapter.openDataBase();
//Log.e(TAG, "BusinessBaseGtfsUpdateTracker: getAllGtfsUpdateTrackers() database OPEN");
//Create SQLite Cursor
Cursor cur = dbAdapter.selectRecordsFromDB(sql, null);
//Our container objects
ArrayList<GtfsUpdateTracker> curGtfsUpdateTrackerList = new ArrayList<GtfsUpdateTracker>();
GtfsUpdateTracker currentGtfsUpdateTracker = new GtfsUpdateTracker();
//If anything returned, LOOP through cursor and populate our container objects
try
{
while (cur.moveToNext())
{
//Initiate local variables
String _FeedName = cur.getString(cur.getColumnIndex("FeedName"));
String _LastUpdated = cur.getString(cur.getColumnIndex("LastUpdated"));
//Create new instance of object
currentGtfsUpdateTracker = new GtfsUpdateTracker();
currentGtfsUpdateTracker.FeedName(_FeedName);
currentGtfsUpdateTracker.LastUpdated(_LastUpdated);
//Add newly populated object to ArrayList
curGtfsUpdateTrackerList.add(currentGtfsUpdateTracker);
}
}
catch (Exception e) {
//Log.e(TAG, "Error " + e.toString());
}
finally{
//House Keeping
cur.close();
cur.deactivate();
dbAdapter.close();
//Log.e(TAG, "BusinessBaseGtfsUpdateTracker: getAllGtfsFeedUpdates() database CLOSED");
}
return curGtfsUpdateTrackerList;
}
/***
* Public Function: Update(Context context)
*/
public static void Update(Context context, GtfsUpdateTracker curGtfsUpdateTracker) {
//Create SQLFactoryAdapter instance
SQLiteFactoryAdapter dbAdapter = SQLiteFactoryAdapter.getSQLiteFactoryAdapterInstance(context);
//Logic to create or use the existing database
try
{
dbAdapter.createOrUseDataBase();
}
catch (Exception e) {
//Log.e(TAG, "Error " + e.toString());
}
try {
//Open Database
dbAdapter.openDataBase();
//Log.e(TAG, "BusinessBaseTrip: getAllTrips() database OPEN");
String _FeedName = ((curGtfsUpdateTracker.FeedName() == null) ? "calendar_dates" : curGtfsUpdateTracker.FeedName());
String _LastUpdated = ((curGtfsUpdateTracker.LastUpdated() == null) ? "" : curGtfsUpdateTracker.LastUpdated());
ContentValues args = new ContentValues();
//args.put("FeedName", _FeedName);
args.put("LastUpdated", _LastUpdated);
String whereArgs[] = new String[1];
whereArgs[0] = "" + _FeedName;
dbAdapter.updateRecordsInDB("GTFS_UPDATE_TRACKER", args, "FeedName= ?", whereArgs);
} catch (SQLiteException e) {
//Log.d(TAG, "Update GTFS_FEED_TRACKER Update for: Calander_Dates Database Error: " + e.toString());
} catch (Exception ex) {
//Log.d(TAG, "Update GTFS_FEED_TRACKER Update for: Calander_Dates non-SQL Error: " + ex.toString());
} finally {
//House Keeping
dbAdapter.close();
//Log.e(TAG, "GTFS_FEED_TRACKER Update for: Calander_Dates database CLOSED");
}
}
}