From 2d9872e5c16e40fde57c129c16b9f71cbc93df7b Mon Sep 17 00:00:00 2001 From: Lukas Zielinski Date: Fri, 21 Nov 2014 17:07:14 +0100 Subject: [PATCH] TRACKING APP: Refactoring --- .../res/values/strings.xml | 3 + .../res/values/strings_fragment.xml | 2 +- .../app/provider/AnalyticsProvider.java | 1 + .../app/ui/activities/RegattaActivity.java | 70 +++++++++++++------ .../app/ui/fragments/HomeFragment.java | 64 ++++++----------- 5 files changed, 77 insertions(+), 63 deletions(-) diff --git a/mobile/com.sap.sailing.android.tracking.app/res/values/strings.xml b/mobile/com.sap.sailing.android.tracking.app/res/values/strings.xml index 1297b273713..7a57a3a1d0e 100644 --- a/mobile/com.sap.sailing.android.tracking.app/res/values/strings.xml +++ b/mobile/com.sap.sailing.android.tracking.app/res/values/strings.xml @@ -32,5 +32,8 @@ good great no signal + CompetitorId + EventId + LeaderboardName diff --git a/mobile/com.sap.sailing.android.tracking.app/res/values/strings_fragment.xml b/mobile/com.sap.sailing.android.tracking.app/res/values/strings_fragment.xml index 1a665551573..bacbc7e4b76 100644 --- a/mobile/com.sap.sailing.android.tracking.app/res/values/strings_fragment.xml +++ b/mobile/com.sap.sailing.android.tracking.app/res/values/strings_fragment.xml @@ -26,7 +26,7 @@ Tracking Time RegattaName EventName - CompetitorName + CompetitorName Country Code SailId Status diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsProvider.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsProvider.java index 8037951e3dd..e6076b53f89 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsProvider.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsProvider.java @@ -106,6 +106,7 @@ public class AnalyticsProvider extends ContentProvider { cursor = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder); return cursor; + default: final SelectionBuilder builder = buildExpandedSelection(uri); diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java index 313e3ebf90c..3ec65b0e46f 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java @@ -3,6 +3,7 @@ package com.sap.sailing.android.tracking.app.ui.activities; import java.util.Locale; import android.content.Intent; +import android.database.Cursor; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -16,11 +17,26 @@ import android.widget.ImageView; import android.widget.TextView; 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; public class RegattaActivity extends BaseActivity { private final static String TAG = RegattaActivity.class.getName(); + + private String eventId; + private String competitorId; + + private String competitorName; + private String competitorCountryCode; + private String competitorSailId; + + private String eventName; + private String eventImageUrl; + + private String leaderboardName; @Override protected void onCreate(Bundle savedInstanceState) { @@ -28,10 +44,12 @@ public class RegattaActivity extends BaseActivity { Intent intent = getIntent(); - String regattaName = intent.getStringExtra(getString(R.string.regatta_name)); - String eventName = intent.getStringExtra(getString(R.string.event_name)); - + leaderboardName = intent.getStringExtra(getString(R.string.leaderboard_name)); + eventId = intent.getStringExtra(getString(R.string.event_id)); + competitorId = intent.getStringExtra(getString(R.string.competitor_id)); + fetchData(eventId, competitorId); + setContentView(R.layout.fragment_container); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); if (toolbar != null) { @@ -41,7 +59,7 @@ public class RegattaActivity extends BaseActivity { if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); - getSupportActionBar().setTitle(regattaName); + getSupportActionBar().setTitle(leaderboardName); Spannable subtitle = new SpannableString("Registered for: " + eventName); StyleSpan styleBold = new StyleSpan(Typeface.BOLD); subtitle.setSpan(styleBold, 16, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -50,36 +68,48 @@ public class RegattaActivity extends BaseActivity { replaceFragment(R.id.content_frame, new RegattaFragment()); } + + 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)); + } + + 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)); + } + + ec.close(); + } @Override protected void onResume() { - - Intent intent = getIntent(); - - String countryCode = intent.getStringExtra(getString(R.string.country_code)); - String competitorName = intent.getStringExtra(getString(R.string.competitor_name)); - String sailId = intent.getStringExtra(getString(R.string.sail_id)); - TextView competitorNameTextView = (TextView)findViewById(R.id.competitor_name); competitorNameTextView.setText(competitorName); TextView sailIdTextView = (TextView)findViewById(R.id.sail_id); - sailIdTextView.setText(sailId); + sailIdTextView.setText(competitorSailId); ImageView flagImageView = (ImageView)findViewById(R.id.flag_image); //String flagStr = String.format("%s.png", countryCode); - String uri = "@drawable/" + countryCode.toLowerCase(Locale.getDefault()); + String uri = "@drawable/" + competitorCountryCode.toLowerCase(Locale.getDefault()); int imageResource = getResources().getIdentifier(uri, null, getPackageName()); - try { - Drawable res = getResources().getDrawable(imageResource); - flagImageView.setImageDrawable(res); - } catch (Exception e) - { - e.printStackTrace(); - } + try { + Drawable res = getResources().getDrawable(imageResource); + flagImageView.setImageDrawable(res); + } catch (Exception e) { + e.printStackTrace(); + } super.onResume(); } 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 05a1ad761fb..a4d0a0513f3 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 @@ -532,10 +532,8 @@ public class HomeFragment extends BaseFragment implements JsonObjectRequest checkinRequest = new JsonObjectRequest( checkinData.checkinURL, requestObject, new CheckinListener( - checkinData.leaderboardName, - checkinData.competitorCountryCode, - checkinData.competitorDisplayName, - checkinData.competitorSailId), + checkinData.leaderboardName, checkinData.eventId, + checkinData.competitorId), new CheckinErrorListener()); VolleyHelper.getInstance(getActivity()).addRequest(checkinRequest); @@ -595,14 +593,12 @@ public class HomeFragment extends BaseFragment implements * @param regattaName * @param eventName */ - private void startRegatta(String regattaName, String eventName, - String countryCode, String competitorName, String sailId) { + private void startRegatta(String leaderboardName, String eventId, + String competitorId) { Intent intent = new Intent(getActivity(), RegattaActivity.class); - intent.putExtra(getString(R.string.regatta_name), regattaName); - intent.putExtra(getString(R.string.event_name), eventName); - intent.putExtra(getString(R.string.competitor_name), competitorName); - intent.putExtra(getString(R.string.country_code), countryCode); - intent.putExtra(getString(R.string.sail_id), sailId); + intent.putExtra(getString(R.string.leaderboard_name), leaderboardName); + intent.putExtra(getString(R.string.event_id), eventId); + intent.putExtra(getString(R.string.competitor_id), competitorId); getActivity().startActivity(intent); } @@ -698,54 +694,38 @@ public class HomeFragment extends BaseFragment implements // a // header // row - + + prefs.setServerURL(cursor.getString(cursor .getColumnIndex(Event.EVENT_SERVER))); - // String competitorId = - // cursor.getString(cursor.getColumnIndex("competitor_id")); - // String eventServer = - // cursor.getString(cursor.getColumnIndex("event_server")); String leaderboardName = cursor.getString(cursor .getColumnIndex("leaderboard_name")); - String competitorName = cursor.getString(cursor - .getColumnIndex("competitor_display_name")); - String countryCode = cursor.getString(cursor - .getColumnIndex("competitor_country_code")); - String sailId = cursor.getString(cursor - .getColumnIndex("competitor_sail_id")); + String competitorId = cursor.getString(cursor + .getColumnIndex("competitor_id")); + String eventId = cursor.getString(cursor + .getColumnIndex("event_id")); - startRegatta(leaderboardName, leaderboardName, countryCode, - competitorName, sailId); + startRegatta(leaderboardName, eventId, competitorId); } } private class CheckinListener implements Listener { public String leaderboardName; - public String countryCode; - public String sailId; - public String competitorName; + public String eventId; + public String competitorId; - public CheckinListener(String leaderboardName, String countryCode, - String competitorName, String sailId) { - try { - this.leaderboardName = URLDecoder.decode(leaderboardName, - "UTF-8"); - this.countryCode = countryCode; - this.competitorName = competitorName; - this.sailId = sailId; - } catch (UnsupportedEncodingException e) { - ExLog.e(getActivity(), TAG, "UnsupportedEncodingException: " - + e.getMessage()); - } + public CheckinListener(String leaderboardName, String eventId, + String competitorId) { + this.leaderboardName = leaderboardName; + this.eventId = eventId; + this.competitorId = competitorId; } @Override public void onResponse(JSONObject response) { - // TODO: twice the same string here - startRegatta(leaderboardName, leaderboardName, countryCode, - competitorName, sailId); + startRegatta(leaderboardName, eventId, competitorId); } }