package org.rudirect.android.data.constants;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import com.j256.ormlite.android.apptools.OpenHelperManager;
import org.rudirect.android.BuildConfig;
import org.rudirect.android.R;
import org.rudirect.android.data.model.BusData;
import org.rudirect.android.database.DatabaseHelper;
import java.sql.SQLException;
import java.util.List;
public class RUDirectApplication extends Application {
private static final String TAG = RUDirectApplication.class.getSimpleName();
private static Context mContext;
private static DatabaseHelper databaseHelper;
private static BusData busData;
private static Tracker mTracker;
@Override
public void onCreate() {
super.onCreate();
OpenHelperManager.setOpenHelperClass(DatabaseHelper.class);
mContext = getApplicationContext();
}
public static Context getContext() {
return mContext;
}
public static DatabaseHelper getDatabaseHelper() {
if (databaseHelper == null) {
databaseHelper = OpenHelperManager.getHelper(mContext, DatabaseHelper.class);
}
return databaseHelper;
}
public static BusData getBusData() {
if (busData == null) {
try {
// Query database first
List<BusData> data = getDatabaseHelper().getDao().queryForAll();
if (data.size() > 0) {
busData = data.get(0);
}
else {
// Create a new object in the database if it is nonexistent
busData = new BusData();
getDatabaseHelper().getDao().create(busData);
}
} catch (SQLException e) {
Log.e(TAG, e.toString(), e);
}
}
return busData;
}
public static synchronized Tracker getTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(getContext());
GoogleAnalytics.getInstance(getContext()).setLocalDispatchPeriod(120);
if (!BuildConfig.DEBUG) {
mTracker = analytics.newTracker(getContext().getString(R.string.release_tracker_id));
} else {
mTracker = analytics.newTracker(getContext().getString(R.string.debug_tracker_id));
}
}
return mTracker;
}
@Override
public void onTerminate() {
super.onTerminate();
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
}
}