TRACKING APP: cleanup RegattaActivity

This commit is contained in:
Lukas Zielinski committed 2014-12-08 19:52:18 +01:00
1 parent 98cabf92be
commit c739f9977c
13 files changed
+164 -138

No files matched your search

@@ -22,7 +22,7 @@
android:title="@string/device_identifier" android:selectable="false"/> android:title="@string/device_identifier" android:selectable="false"/>
<SwitchPreference <SwitchPreference
android:defaultValue="false" android:defaultValue="true"
android:key="@string/preference_heading_from_magnetic_key" android:key="@string/preference_heading_from_magnetic_key"
android:switchTextOn="@string/preference_heading_from_magnetic_key_is_enabled" android:switchTextOn="@string/preference_heading_from_magnetic_key_is_enabled"
android:switchTextOff="@string/preference_heading_from_magnetic_key_is_disabled" android:switchTextOff="@string/preference_heading_from_magnetic_key_is_disabled"
@@ -20,6 +20,7 @@ import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.SensorGps; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.SensorGps;
import com.sap.sailing.android.tracking.app.provider.AnalyticsDatabase.Tables; import com.sap.sailing.android.tracking.app.provider.AnalyticsDatabase.Tables;
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
public class AnalyticsProvider extends ContentProvider { public class AnalyticsProvider extends ContentProvider {
@@ -93,7 +94,7 @@ public class AnalyticsProvider extends ContentProvider {
@Override @Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG && AppPreferences.getPrintDatabaseOperationDebugMessages()) {
String message = "query: uri=" + uri + " projection=" + Arrays.toString(projection) + " selection=[" String message = "query: uri=" + uri + " projection=" + Arrays.toString(projection) + " selection=["
+ selection + "] args=" + Arrays.toString(selectionArgs) + " order=[" + sortOrder + "]"; + selection + "] args=" + Arrays.toString(selectionArgs) + " order=[" + sortOrder + "]";
ExLog.i(getContext(), TAG, message); ExLog.i(getContext(), TAG, message);
@@ -173,7 +174,7 @@ public class AnalyticsProvider extends ContentProvider {
@Override @Override
public Uri insert(Uri uri, ContentValues values) { public Uri insert(Uri uri, ContentValues values) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG && AppPreferences.getPrintDatabaseOperationDebugMessages()) {
String message = "insert: uri=" + uri + " values=[" + values.toString() + "]"; String message = "insert: uri=" + uri + " values=[" + values.toString() + "]";
ExLog.i(getContext(), TAG, message); ExLog.i(getContext(), TAG, message);
} }
@@ -208,7 +209,7 @@ public class AnalyticsProvider extends ContentProvider {
@Override @Override
public int delete(Uri uri, String selection, String[] selectionArgs) { public int delete(Uri uri, String selection, String[] selectionArgs) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG && AppPreferences.getPrintDatabaseOperationDebugMessages()) {
String message = "delete: uri=" + uri + " selection=[" + selection + "] args=" String message = "delete: uri=" + uri + " selection=[" + selection + "] args="
+ Arrays.toString(selectionArgs); + Arrays.toString(selectionArgs);
ExLog.i(getContext(), TAG, message); ExLog.i(getContext(), TAG, message);
@@ -252,7 +253,7 @@ public class AnalyticsProvider extends ContentProvider {
@Override @Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG && AppPreferences.getPrintDatabaseOperationDebugMessages()) {
String message = "update: uri=" + uri + " values=[" + values == null ? "null" String message = "update: uri=" + uri + " values=[" + values == null ? "null"
: values.toString() + "] selection=[" + selection + "]" : values.toString() + "] selection=[" + selection + "]"
+ " args=" + Arrays.toString(selectionArgs); + " args=" + Arrays.toString(selectionArgs);
@@ -14,6 +14,7 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract;
import com.sap.sailing.android.shared.util.FileHandlerUtils; import com.sap.sailing.android.shared.util.FileHandlerUtils;
public class MessagePersistenceManager { public class MessagePersistenceManager {
@@ -10,9 +10,7 @@ import java.util.Locale;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import android.content.ContentResolver;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@@ -20,7 +18,6 @@ import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.provider.BaseColumns;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
@@ -35,36 +32,25 @@ import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener; import com.android.volley.Response.Listener;
import com.android.volley.VolleyError; import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.JsonObjectRequest;
import com.google.android.gms.internal.cm;
import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.tracking.app.BuildConfig;
import com.sap.sailing.android.tracking.app.R; import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Competitor;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard;
import com.sap.sailing.android.tracking.app.ui.fragments.RegattaFragment; import com.sap.sailing.android.tracking.app.ui.fragments.RegattaFragment;
import com.sap.sailing.android.tracking.app.utils.DatabaseHelper;
import com.sap.sailing.android.tracking.app.utils.UniqueDeviceUuid; import com.sap.sailing.android.tracking.app.utils.UniqueDeviceUuid;
import com.sap.sailing.android.tracking.app.utils.VolleyHelper; import com.sap.sailing.android.tracking.app.utils.VolleyHelper;
import com.sap.sailing.android.tracking.app.valueobjects.CompetitorInfo;
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
import com.sap.sailing.android.tracking.app.valueobjects.LeaderboardInfo;
public class RegattaActivity extends BaseActivity { public class RegattaActivity extends BaseActivity {
private final static String TAG = RegattaActivity.class.getName(); private final static String TAG = RegattaActivity.class.getName();
private EventInfo event;
private CompetitorInfo competitor;
private LeaderboardInfo leaderboard;
private String eventId;
private String competitorId;
private int competitorRowId;
private String competitorName;
private String competitorCountryCode;
private String competitorSailId;
private String eventName;
private int eventRowId;
private String eventImageUrl;
private long eventStartMillis;
private long eventEndMillis;
private String leaderboardName;
private int leaderboardRowId;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@@ -72,11 +58,17 @@ public class RegattaActivity extends BaseActivity {
Intent intent = getIntent(); Intent intent = getIntent();
leaderboardName = intent.getStringExtra(getString(R.string.leaderboard_name)); event = new EventInfo();
eventId = intent.getStringExtra(getString(R.string.event_id)); competitor = new CompetitorInfo();
competitorId = intent.getStringExtra(getString(R.string.competitor_id)); leaderboard = new LeaderboardInfo();
String leaderboardName = intent.getStringExtra(getString(R.string.leaderboard_name));
String eventId = intent.getStringExtra(getString(R.string.event_id));
String competitorId = intent.getStringExtra(getString(R.string.competitor_id));
fetchData(eventId, competitorId); competitor = DatabaseHelper.getInstance(this).getCompetitor(competitorId);
event = DatabaseHelper.getInstance(this).getEventInfo(eventId);
leaderboard = DatabaseHelper.getInstance(this).getLeaderboard(leaderboardName);
setContentView(R.layout.fragment_container); setContentView(R.layout.fragment_container);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
@@ -90,7 +82,7 @@ public class RegattaActivity extends BaseActivity {
toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq); toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq);
toolbar.setPadding(20, 0, 0, 0); toolbar.setPadding(20, 0, 0, 0);
getSupportActionBar().setTitle(leaderboardName); getSupportActionBar().setTitle(leaderboardName);
getSupportActionBar().setSubtitle(eventName); getSupportActionBar().setSubtitle(event.name);
} }
replaceFragment(R.id.content_frame, new RegattaFragment()); replaceFragment(R.id.content_frame, new RegattaFragment());
@@ -127,37 +119,6 @@ public class RegattaActivity extends BaseActivity {
{ {
return (RegattaFragment) getSupportFragmentManager().findFragmentById(R.id.content_frame); return (RegattaFragment) getSupportFragmentManager().findFragmentById(R.id.content_frame);
} }
private void fetchData(String eventId, String competitorId)
{
Cursor cc = getContentResolver().query(Competitor.CONTENT_URI, null, "competitor_id = \"" + competitorId + "\"", null, null);
if (cc.moveToFirst()) {
competitorName = cc.getString(cc.getColumnIndex(Competitor.COMPETITOR_DISPLAY_NAME));
competitorCountryCode = cc.getString(cc.getColumnIndex(Competitor.COMPETITOR_COUNTRY_CODE));
competitorSailId = cc.getString(cc.getColumnIndex(Competitor.COMPETITOR_SAIL_ID));
competitorRowId = cc.getInt(cc.getColumnIndex(BaseColumns._ID));
}
cc.close();
Cursor ec = getContentResolver().query(Event.CONTENT_URI, null, "event_id = \"" + eventId + "\"", null, null);
if (ec.moveToFirst()) {
eventName = ec.getString(ec.getColumnIndex(Event.EVENT_NAME));
eventImageUrl = ec.getString(ec.getColumnIndex(Event.EVENT_IMAGE_URL));
eventStartMillis = ec.getLong(ec.getColumnIndex(Event.EVENT_DATE_START));
eventEndMillis = ec.getLong(ec.getColumnIndex(Event.EVENT_DATE_END));
eventRowId = ec.getInt(ec.getColumnIndex(BaseColumns._ID));
}
ec.close();
Cursor lc = getContentResolver().query(Leaderboard.CONTENT_URI, null, "leaderboard_name = \"" + leaderboardName + "\"", null, null);
if (lc.moveToFirst()) {
leaderboardRowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
}
lc.close();
}
private void userImageUpdated() { private void userImageUpdated() {
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@@ -174,14 +135,14 @@ public class RegattaActivity extends BaseActivity {
@Override @Override
protected void onResume() { protected void onResume() {
TextView competitorNameTextView = (TextView)findViewById(R.id.competitor_name); TextView competitorNameTextView = (TextView)findViewById(R.id.competitor_name);
competitorNameTextView.setText(competitorName); competitorNameTextView.setText(competitor.name);
TextView sailIdTextView = (TextView)findViewById(R.id.sail_id); TextView sailIdTextView = (TextView)findViewById(R.id.sail_id);
sailIdTextView.setText(competitorSailId); sailIdTextView.setText(competitor.sailId);
ImageView flagImageView = (ImageView)findViewById(R.id.flag_image); ImageView flagImageView = (ImageView)findViewById(R.id.flag_image);
//String flagStr = String.format("%s.png", countryCode); //String flagStr = String.format("%s.png", countryCode);
String uri = "@drawable/" + competitorCountryCode.toLowerCase(Locale.getDefault()); String uri = "@drawable/" + competitor.countryCode.toLowerCase(Locale.getDefault());
int imageResource = getResources().getIdentifier(uri, null, getPackageName()); int imageResource = getResources().getIdentifier(uri, null, getPackageName());
@@ -194,7 +155,7 @@ public class RegattaActivity extends BaseActivity {
getRegattaFragment().setChangePhotoButtonHidden(true); getRegattaFragment().setChangePhotoButtonHidden(true);
if (eventImageUrl != null) if (event.imageUrl != null)
{ {
ImageView imageView = (ImageView) findViewById(R.id.userImage); ImageView imageView = (ImageView) findViewById(R.id.userImage);
Bitmap storedImage = getStoredImage(); Bitmap storedImage = getStoredImage();
@@ -205,7 +166,7 @@ public class RegattaActivity extends BaseActivity {
} }
else else
{ {
new DownloadImageTask(imageView).execute(eventImageUrl); new DownloadImageTask(imageView).execute(event.imageUrl);
} }
} }
@@ -299,7 +260,7 @@ public class RegattaActivity extends BaseActivity {
} }
File mediaFile; File mediaFile;
String mImageName="MI_"+ leaderboardName +".png"; String mImageName="MI_"+ leaderboard.name +".png";
mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName); mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);
return mediaFile; return mediaFile;
} }
@@ -337,13 +298,13 @@ public class RegattaActivity extends BaseActivity {
{ {
final String checkoutURLStr = prefs.getServerURL() final String checkoutURLStr = prefs.getServerURL()
+ prefs.getServerCheckoutPath().replace("{leaderboard-name}", + prefs.getServerCheckoutPath().replace("{leaderboard-name}",
Uri.encode(leaderboardName)); Uri.encode(leaderboard.name));
showProgressDialog(R.string.please_wait, R.string.checking_out); showProgressDialog(R.string.please_wait, R.string.checking_out);
JSONObject checkoutData = new JSONObject(); JSONObject checkoutData = new JSONObject();
try { try {
checkoutData.put("competitorId", competitorId); checkoutData.put("competitorId", competitor.id);
checkoutData.put("deviceUuid", UniqueDeviceUuid.getUniqueId(this)); checkoutData.put("deviceUuid", UniqueDeviceUuid.getUniqueId(this));
checkoutData.put("toMillis", String.valueOf(System.currentTimeMillis())); checkoutData.put("toMillis", String.valueOf(System.currentTimeMillis()));
} catch (JSONException e) { } catch (JSONException e) {
@@ -360,7 +321,7 @@ public class RegattaActivity extends BaseActivity {
JsonObjectRequest checkoutRequest = new JsonObjectRequest(checkoutURLStr, checkoutData, new Listener<JSONObject>(){ JsonObjectRequest checkoutRequest = new JsonObjectRequest(checkoutURLStr, checkoutData, new Listener<JSONObject>(){
@Override @Override
public void onResponse(JSONObject response) { public void onResponse(JSONObject response) {
deleteRegttaFromDatabase(); DatabaseHelper.getInstance(RegattaActivity.this).deleteRegttaFromDatabase(event, competitor, leaderboard);
dismissProgressDialog(); dismissProgressDialog();
finish(); finish();
} }
@@ -379,50 +340,8 @@ public class RegattaActivity extends BaseActivity {
VolleyHelper.getInstance(this).addRequest(checkoutRequest); VolleyHelper.getInstance(this).addRequest(checkoutRequest);
} }
/** public EventInfo getEvent()
* So the fragment can get the value for its countdown-display.
* @return
*/
public long getEventStartMillis()
{ {
return eventStartMillis; return event;
} }
/**
* So the fragment can get the value to decide if thank you note should be shown.
* @return
*/
public long getEventEndMillis()
{
return eventEndMillis;
}
/**
* Event-id for event, so tracking-service can link GPS fixes to event.
* @return
*/
public String getEventId()
{
return eventId;
}
/**
* Delete Event, Competitor and Leaderboard
*/
private void deleteRegttaFromDatabase()
{
ContentResolver cr = getContentResolver();
int d1 = cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + eventRowId, null);
int d2 = cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitorRowId, null);
int d3 = cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboardRowId, null);
if (BuildConfig.DEBUG)
{
ExLog.i(this, TAG, "Checkout, number of events deleted: " + d1);
ExLog.i(this, TAG, "Checkout, number of competitors deleted: " + d2);
ExLog.i(this, TAG, "Checkout, number of leaderbards deleted: " + d3);
}
}
} }
@@ -30,7 +30,7 @@ public class SystemInformationActivityHelper {
*/ */
public void updateSendingServiceInformation() { public void updateSendingServiceInformation() {
TextView statusView = (TextView) activity.findViewById(R.id.system_information_persistence_status); TextView statusView = (TextView) activity.findViewById(R.id.system_information_persistence_status);
ListView waitingView = (ListView) activity.findViewById(R.id.system_information_persistence_waiting); //ListView waitingView = (ListView) activity.findViewById(R.id.system_information_persistence_waiting);
if (activity.boundSendingService) { if (activity.boundSendingService) {
Date lastSuccessfulSend = activity.sendingService.getLastSuccessfulSend(); Date lastSuccessfulSend = activity.sendingService.getLastSuccessfulSend();
statusView.setText(String.format( statusView.setText(String.format(
@@ -62,13 +62,13 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
} }
if (getSupportActionBar() != null) { if (getSupportActionBar() != null) {
EventInfo eventInfo = DatabaseHelper.getInstance(this).getEventInfo(eventId); EventInfo eventInfo = DatabaseHelper.getInstance(this).getEventInfoWithLeaderboard(eventId);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);
toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq); toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq);
toolbar.setPadding(20, 0, 0, 0); toolbar.setPadding(20, 0, 0, 0);
getSupportActionBar().setTitle(eventInfo.leaderboardName); getSupportActionBar().setTitle(eventInfo.leaderboardName);
getSupportActionBar().setSubtitle(getString(R.string.tracking_colon) + " " + eventInfo.eventName); getSupportActionBar().setSubtitle(getString(R.string.tracking_colon) + " " + eventInfo.name);
} }
TrackingFragment mainFragment; TrackingFragment mainFragment;
@@ -449,14 +449,14 @@ public class HomeFragment extends BaseFragment implements
/** /**
* Delete Event, Competitor and Leaderboard * Delete Event, Competitor and Leaderboard
*/ */
private void deleteRegttaFromDatabase() // private void deleteRegttaFromDatabase()
{ // {
ContentResolver cr = getActivity().getContentResolver(); // ContentResolver cr = getActivity().getContentResolver();
//
cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + eventRowId, null); // cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + eventRowId, null);
cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitorRowId, null); // cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitorRowId, null);
cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboardRowId, null); // cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboardRowId, null);
} // }
/** /**
* Return true if the combination of eventId, leaderboardName and * Return true if the combination of eventId, leaderboardName and
@@ -63,7 +63,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
private void checkAndSwitchToThankYouScreenIfRegattaOver() { private void checkAndSwitchToThankYouScreenIfRegattaOver() {
RegattaActivity regattaActivity = (RegattaActivity) getActivity(); RegattaActivity regattaActivity = (RegattaActivity) getActivity();
long regattaEnd = regattaActivity.getEventEndMillis(); long regattaEnd = regattaActivity.getEvent().endMillis;
if (System.currentTimeMillis() > regattaEnd) { if (System.currentTimeMillis() > regattaEnd) {
switchToThankYouScreen(); switchToThankYouScreen();
@@ -77,7 +77,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
TextView textView = (TextView)getActivity().findViewById(R.id.regatta_starts_in); TextView textView = (TextView)getActivity().findViewById(R.id.regatta_starts_in);
RegattaActivity regattaActivity = (RegattaActivity) getActivity(); RegattaActivity regattaActivity = (RegattaActivity) getActivity();
long regattaStart = regattaActivity.getEventStartMillis(); long regattaStart = regattaActivity.getEvent().startMillis;
LinearLayout threeBoxesLayout = (LinearLayout) getActivity() LinearLayout threeBoxesLayout = (LinearLayout) getActivity()
.findViewById(R.id.three_boxes_regatta_starts); .findViewById(R.id.three_boxes_regatta_starts);
@@ -233,13 +233,13 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
Intent intent = new Intent(getActivity(), TrackingActivity.class); Intent intent = new Intent(getActivity(), TrackingActivity.class);
intent.putExtra( intent.putExtra(
getString(R.string.tracking_activity_event_id_parameter), getString(R.string.tracking_activity_event_id_parameter),
regattaActivity.getEventId()); regattaActivity.getEvent().id);
getActivity().startActivity(intent); getActivity().startActivity(intent);
} }
private void timerFired() { private void timerFired() {
RegattaActivity regattaActivity = (RegattaActivity) getActivity(); RegattaActivity regattaActivity = (RegattaActivity) getActivity();
updateCountdownTimer(regattaActivity.getEventStartMillis()); updateCountdownTimer(regattaActivity.getEvent().startMillis);
} }
private void updateCountdownTimer(long startTime) { private void updateCountdownTimer(long startTime) {
@@ -137,4 +137,9 @@ public class AppPreferences {
{ {
return preferences.getString(context.getString(R.string.preference_tracker_is_tracking_event_id), null); return preferences.getString(context.getString(R.string.preference_tracker_is_tracking_event_id), null);
} }
public static boolean getPrintDatabaseOperationDebugMessages()
{
return false;
}
} }
@@ -13,12 +13,16 @@ import android.provider.BaseColumns;
import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.tracking.app.BuildConfig; import com.sap.sailing.android.tracking.app.BuildConfig;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Competitor;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.EventGpsFixesJoined; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.EventGpsFixesJoined;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.LeaderboardsEventsJoined; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.LeaderboardsEventsJoined;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.SensorGps; import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.SensorGps;
import com.sap.sailing.android.tracking.app.valueobjects.CompetitorInfo;
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo; import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
import com.sap.sailing.android.tracking.app.valueobjects.GpsFix; import com.sap.sailing.android.tracking.app.valueobjects.GpsFix;
import com.sap.sailing.android.tracking.app.valueobjects.LeaderboardInfo;
public class DatabaseHelper { public class DatabaseHelper {
@@ -178,7 +182,7 @@ public class DatabaseHelper {
cr.insert(SensorGps.CONTENT_URI, cv); cr.insert(SensorGps.CONTENT_URI, cv);
} }
public EventInfo getEventInfo(String eventId) { public EventInfo getEventInfoWithLeaderboard(String eventId) {
EventInfo result = new EventInfo(); EventInfo result = new EventInfo();
ContentResolver cr = mContext.getContentResolver(); ContentResolver cr = mContext.getContentResolver();
@@ -187,13 +191,82 @@ public class DatabaseHelper {
Cursor cursor = cr.query(LeaderboardsEventsJoined.CONTENT_URI, projection, "events.event_id = \"" + eventId + "\"", null, null); Cursor cursor = cr.query(LeaderboardsEventsJoined.CONTENT_URI, projection, "events.event_id = \"" + eventId + "\"", null, null);
if (cursor.moveToFirst()) if (cursor.moveToFirst())
{ {
result.eventName = cursor.getString(cursor.getColumnIndex("event_name")); result.name = cursor.getString(cursor.getColumnIndex("event_name"));
result.leaderboardName = cursor.getString(cursor.getColumnIndex("leaderboard_name")); result.leaderboardName = cursor.getString(cursor.getColumnIndex("leaderboard_name"));
} }
cursor.close(); cursor.close();
return result; return result;
} }
public EventInfo getEventInfo(String eventId) {
EventInfo event = new EventInfo();
event.id = eventId;
Cursor cursor = mContext.getContentResolver().query(Event.CONTENT_URI,
null, "event_id = \"" + eventId + "\"", null, null);
if (cursor.moveToFirst()) {
event.name = cursor.getString(cursor.getColumnIndex(Event.EVENT_NAME));
event.imageUrl = cursor.getString(cursor.getColumnIndex(Event.EVENT_IMAGE_URL));
event.startMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_START));
event.endMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_END));
event.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
}
cursor.close();
return event;
}
public CompetitorInfo getCompetitor(String competitorId)
{
CompetitorInfo competitor = new CompetitorInfo();
competitor.id = competitorId;
Cursor cursor = mContext.getContentResolver().query(Competitor.CONTENT_URI, null, "competitor_id = \"" + competitorId + "\"", null, null);
if (cursor.moveToFirst()) {
competitor.name = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_DISPLAY_NAME));
competitor.countryCode = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_COUNTRY_CODE));
competitor.sailId = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_SAIL_ID));
competitor.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
}
cursor.close();
return competitor;
}
public LeaderboardInfo getLeaderboard(String leaderboardName)
{
LeaderboardInfo leaderboard = new LeaderboardInfo();
leaderboard.name = leaderboardName;
Cursor lc = mContext.getContentResolver().query(Leaderboard.CONTENT_URI, null, "leaderboard_name = \"" + leaderboardName + "\"", null, null);
if (lc.moveToFirst()) {
leaderboard.rowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
}
lc.close();
return leaderboard;
}
public void deleteRegttaFromDatabase(EventInfo event, CompetitorInfo competitor, LeaderboardInfo leaderboard)
{
ContentResolver cr = mContext.getContentResolver();
int d1 = cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + event.rowId, null);
int d2 = cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitor.rowId, null);
int d3 = cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboard.rowId, null);
if (BuildConfig.DEBUG)
{
ExLog.i(mContext, TAG, "Checkout, number of events deleted: " + d1);
ExLog.i(mContext, TAG, "Checkout, number of competitors deleted: " + d2);
ExLog.i(mContext, TAG, "Checkout, number of leaderbards deleted: " + d3);
}
}
/** /**
@@ -0,0 +1,11 @@
package com.sap.sailing.android.tracking.app.valueobjects;
public class CompetitorInfo {
public String id;
public String name;
public String countryCode;
public String sailId;
public int rowId;
}
@@ -2,11 +2,20 @@ package com.sap.sailing.android.tracking.app.valueobjects;
public class EventInfo { public class EventInfo {
public String eventName; public String id;
public String leaderboardName; public String name;
public String leaderboardName; // when using join-query
public String imageUrl;
public long startMillis;
public long endMillis;
public int rowId;
@Override @Override
public String toString() { public String toString() {
return "eventName: " + eventName + ", leaderboardName: " + leaderboardName; return "eventName: " + name + ", leaderboardName: "
+ leaderboardName + ", eventImageUrl: " + imageUrl
+ ", eventStartMillis: " + startMillis
+ ", eventEndMillis: " + endMillis + ", eventRowId: "
+ rowId;
} }
} }
@@ -0,0 +1,7 @@
package com.sap.sailing.android.tracking.app.valueobjects;
public class LeaderboardInfo {
public String name;
public int rowId;
}