From c739f9977c95e3a6352ea722b26d9bdd9270c668 Mon Sep 17 00:00:00 2001 From: Lukas Zielinski Date: Mon, 8 Dec 2014 19:52:18 +0100 Subject: [PATCH] TRACKING APP: cleanup RegattaActivity --- .../res/xml/preference_general.xml | 2 +- .../app/provider/AnalyticsProvider.java | 9 +- .../sending/MessagePersistenceManager.java | 1 + .../app/ui/activities/RegattaActivity.java | 143 ++++-------------- .../SystemInformationActivityHelper.java | 2 +- .../app/ui/activities/TrackingActivity.java | 4 +- .../app/ui/fragments/HomeFragment.java | 16 +- .../app/ui/fragments/RegattaFragment.java | 8 +- .../tracking/app/utils/AppPreferences.java | 5 + .../tracking/app/utils/DatabaseHelper.java | 77 +++++++++- .../app/valueobjects/CompetitorInfo.java | 11 ++ .../tracking/app/valueobjects/EventInfo.java | 17 ++- .../app/valueobjects/LeaderboardInfo.java | 7 + 13 files changed, 164 insertions(+), 138 deletions(-) create mode 100644 mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/CompetitorInfo.java create mode 100644 mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/LeaderboardInfo.java diff --git a/mobile/com.sap.sailing.android.tracking.app/res/xml/preference_general.xml b/mobile/com.sap.sailing.android.tracking.app/res/xml/preference_general.xml index d104b795080..ea1010d870d 100644 --- a/mobile/com.sap.sailing.android.tracking.app/res/xml/preference_general.xml +++ b/mobile/com.sap.sailing.android.tracking.app/res/xml/preference_general.xml @@ -22,7 +22,7 @@ android:title="@string/device_identifier" android:selectable="false"/> (){ @Override public void onResponse(JSONObject response) { - deleteRegttaFromDatabase(); + DatabaseHelper.getInstance(RegattaActivity.this).deleteRegttaFromDatabase(event, competitor, leaderboard); dismissProgressDialog(); finish(); } @@ -379,50 +340,8 @@ public class RegattaActivity extends BaseActivity { VolleyHelper.getInstance(this).addRequest(checkoutRequest); } - /** - * So the fragment can get the value for its countdown-display. - * @return - */ - public long getEventStartMillis() + public EventInfo getEvent() { - 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); - } - } - } diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/SystemInformationActivityHelper.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/SystemInformationActivityHelper.java index 7148b7508f7..420b44381ae 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/SystemInformationActivityHelper.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/SystemInformationActivityHelper.java @@ -30,7 +30,7 @@ public class SystemInformationActivityHelper { */ public void updateSendingServiceInformation() { 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) { Date lastSuccessfulSend = activity.sendingService.getLastSuccessfulSend(); statusView.setText(String.format( diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/TrackingActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/TrackingActivity.java index 578756daebf..405fada293b 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/TrackingActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/TrackingActivity.java @@ -62,13 +62,13 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener } if (getSupportActionBar() != null) { - EventInfo eventInfo = DatabaseHelper.getInstance(this).getEventInfo(eventId); + EventInfo eventInfo = DatabaseHelper.getInstance(this).getEventInfoWithLeaderboard(eventId); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); toolbar.setNavigationIcon(R.drawable.sap_logo_64_sq); toolbar.setPadding(20, 0, 0, 0); getSupportActionBar().setTitle(eventInfo.leaderboardName); - getSupportActionBar().setSubtitle(getString(R.string.tracking_colon) + " " + eventInfo.eventName); + getSupportActionBar().setSubtitle(getString(R.string.tracking_colon) + " " + eventInfo.name); } TrackingFragment mainFragment; diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java index b689c7c4763..4885a37e415 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/HomeFragment.java @@ -449,14 +449,14 @@ public class HomeFragment extends BaseFragment implements /** * Delete Event, Competitor and Leaderboard */ - private void deleteRegttaFromDatabase() - { - ContentResolver cr = getActivity().getContentResolver(); - - cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + eventRowId, null); - cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitorRowId, null); - cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboardRowId, null); - } +// private void deleteRegttaFromDatabase() +// { +// ContentResolver cr = getActivity().getContentResolver(); +// +// cr.delete(Event.CONTENT_URI, BaseColumns._ID + " = " + eventRowId, null); +// cr.delete(Competitor.CONTENT_URI, BaseColumns._ID + " = " + competitorRowId, null); +// cr.delete(Leaderboard.CONTENT_URI, BaseColumns._ID + " = " + leaderboardRowId, null); +// } /** * Return true if the combination of eventId, leaderboardName and diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/RegattaFragment.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/RegattaFragment.java index 4a7a585fa59..39de24932eb 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/RegattaFragment.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/fragments/RegattaFragment.java @@ -63,7 +63,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener { private void checkAndSwitchToThankYouScreenIfRegattaOver() { RegattaActivity regattaActivity = (RegattaActivity) getActivity(); - long regattaEnd = regattaActivity.getEventEndMillis(); + long regattaEnd = regattaActivity.getEvent().endMillis; if (System.currentTimeMillis() > regattaEnd) { switchToThankYouScreen(); @@ -77,7 +77,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener { TextView textView = (TextView)getActivity().findViewById(R.id.regatta_starts_in); RegattaActivity regattaActivity = (RegattaActivity) getActivity(); - long regattaStart = regattaActivity.getEventStartMillis(); + long regattaStart = regattaActivity.getEvent().startMillis; LinearLayout threeBoxesLayout = (LinearLayout) getActivity() .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.putExtra( getString(R.string.tracking_activity_event_id_parameter), - regattaActivity.getEventId()); + regattaActivity.getEvent().id); getActivity().startActivity(intent); } private void timerFired() { RegattaActivity regattaActivity = (RegattaActivity) getActivity(); - updateCountdownTimer(regattaActivity.getEventStartMillis()); + updateCountdownTimer(regattaActivity.getEvent().startMillis); } private void updateCountdownTimer(long startTime) { diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java index 30e1ef783d7..3fd92f5c0a1 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java @@ -137,4 +137,9 @@ public class AppPreferences { { return preferences.getString(context.getString(R.string.preference_tracker_is_tracking_event_id), null); } + + public static boolean getPrintDatabaseOperationDebugMessages() + { + return false; + } } diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/DatabaseHelper.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/DatabaseHelper.java index 69a538dba67..2de572f602b 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/DatabaseHelper.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/DatabaseHelper.java @@ -13,12 +13,16 @@ import android.provider.BaseColumns; import com.sap.sailing.android.shared.logging.ExLog; 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.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.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.GpsFix; +import com.sap.sailing.android.tracking.app.valueobjects.LeaderboardInfo; public class DatabaseHelper { @@ -178,7 +182,7 @@ public class DatabaseHelper { cr.insert(SensorGps.CONTENT_URI, cv); } - public EventInfo getEventInfo(String eventId) { + public EventInfo getEventInfoWithLeaderboard(String eventId) { EventInfo result = new EventInfo(); 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); 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")); } cursor.close(); 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); + } + } + /** diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/CompetitorInfo.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/CompetitorInfo.java new file mode 100644 index 00000000000..709ccaf365f --- /dev/null +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/CompetitorInfo.java @@ -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; + +} \ No newline at end of file diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/EventInfo.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/EventInfo.java index b23d43548a1..4cad3d70505 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/EventInfo.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/EventInfo.java @@ -2,11 +2,20 @@ package com.sap.sailing.android.tracking.app.valueobjects; public class EventInfo { - public String eventName; - public String leaderboardName; - + public String id; + public String name; + public String leaderboardName; // when using join-query + public String imageUrl; + public long startMillis; + public long endMillis; + public int rowId; + @Override public String toString() { - return "eventName: " + eventName + ", leaderboardName: " + leaderboardName; + return "eventName: " + name + ", leaderboardName: " + + leaderboardName + ", eventImageUrl: " + imageUrl + + ", eventStartMillis: " + startMillis + + ", eventEndMillis: " + endMillis + ", eventRowId: " + + rowId; } } diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/LeaderboardInfo.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/LeaderboardInfo.java new file mode 100644 index 00000000000..8a35aaa5169 --- /dev/null +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/valueobjects/LeaderboardInfo.java @@ -0,0 +1,7 @@ +package com.sap.sailing.android.tracking.app.valueobjects; + +public class LeaderboardInfo { + + public String name; + public int rowId; +}