Merge branch 'ubilabs--tracking_app--bugfix--Bug_2680' into ubilabs--tracking_app--develop

This commit is contained in:
Bennet Brunsen committed 2015-03-12 11:01:11 +01:00
commit e8f2ee9bae
15 files changed
+234 -69

No files matched your search

@@ -18,4 +18,9 @@
android:id="@+id/options_menu_add_team_image"
android:title="@string/options_add_team_photo"
app:showAsAction=""/>
<item
android:id="@+id/options_menu_refresh"
android:title="@string/options_refresh"
app:showAsAction=""/>
</menu>
@@ -9,6 +9,7 @@
<string name="options_menu_checkout">Checkout</string>
<string name="options_add_team_photo">Team Foto hinzufügen</string>
<string name="options_replace_team_photo">Team Foto ersetzen</string>
<string name="options_refresh">Aktualisieren</string>
<string name="settings_category_other">Andere Einstellungen</string>
<string name="scan_hint">Der QR-Code befindet sich auf Ihrer Teilnahmebestätigung</string>
<string name="device_identifier">Geräte-ID</string>
@@ -7,6 +7,7 @@
<string name="options_menu_checkout">Checkout</string>
<string name="options_add_team_photo">Add Team Photo</string>
<string name="options_replace_team_photo">Replace Team Photo</string>
<string name="options_refresh">Refresh</string>
<string name="settings_category_other">Other Settings</string>
<string name="device_identifier">Device Identifier</string>
<string name="tracker_started">SAP Sailing Tracker started</string>
@@ -30,6 +30,11 @@ public class AnalyticsContract {
String EVENT_CHECKIN_DIGEST = "event_checkin_digest";
}
interface CheckinUriColumns{
String CHECKIN_URI_VALUE = "uri_value";
String CHECKIN_URI_CHECKIN_DIGEST = "uri_checkin_digest";
}
public static final String CONTENT_AUTHORITY = "com.sap.sailing.android.tracking.app.provider.db";
public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);
@@ -37,6 +42,7 @@ public class AnalyticsContract {
private static final String PATH_COMPETITOR = "competitors";
private static final String PATH_EVENT = "events";
private static final String PATH_LEADERBOARD = "leaderboards";
private static final String PATH_CHECKIN_URI = "checkin_uris";
public static class LeaderboardsEventsJoined {
public final static Uri CONTENT_URI = BASE_CONTENT_URI.buildUpon()
@@ -118,6 +124,25 @@ public class AnalyticsContract {
}
}
public static class CheckinUri implements CheckinUriColumns,BaseColumns{
public static final Uri CONTENT_URI = BASE_CONTENT_URI.buildUpon()
.appendPath(PATH_CHECKIN_URI).build();
public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE
+ "/vnd.sap_sailing_analytics.uri";
public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE
+ "/vnd.sap_sailing_analytics.uri";
public static final String DEFAULT_SORT = BaseColumns._ID + " ASC ";
public static Uri builCheckInUri(String checkinUriId) {
return CONTENT_URI.buildUpon().appendPath(checkinUriId).build();
}
public static String getCheckinUriId(Uri uri) {
return uri.getPathSegments().get(1);
}
}
private AnalyticsContract() {
}
@@ -12,6 +12,7 @@ import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.EventColumns;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.LeaderboardColumns;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.CheckinUriColumns;
public class AnalyticsDatabase extends SQLiteOpenHelper {
@@ -29,6 +30,7 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
String EVENTS = "events";
String EVENTS_COMPETITORS = "events_competitors";
String LEADERBOARDS = "leaderboards";
String CHECKIN_URIS= "checkin_uris";
String EVENTS_JOIN_LEADERBOARDS_JOIN_COMPETITORS = Tables.LEADERBOARDS +
" INNER JOIN " + Tables.EVENTS + " ON (" + Tables.LEADERBOARDS + "." + Leaderboard.LEADERBOARD_CHECKIN_DIGEST
+ " = " + Tables.EVENTS + "." + Event.EVENT_CHECKIN_DIGEST + ") " +
@@ -50,7 +52,12 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ LeaderboardColumns.LEADERBOARD_CHECKIN_DIGEST + " TEXT, "
+ LeaderboardColumns.LEADERBOARD_NAME + " TEXT );");
db.execSQL("CREATE TABLE " + Tables.CHECKIN_URIS + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ CheckinUriColumns.CHECKIN_URI_CHECKIN_DIGEST + " TEXT, "
+ CheckinUriColumns.CHECKIN_URI_VALUE + " TEXT );");
db.execSQL("CREATE TABLE " + Tables.COMPETITORS + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ CompetitorColumns.COMPETITOR_ID + " TEXT, "
@@ -83,7 +90,8 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
db.execSQL("DROP TABLE IF EXISTS " + Tables.COMPETITORS);
db.execSQL("DROP TABLE IF EXISTS " + Tables.EVENTS);
db.execSQL("DROP TABLE IF EXISTS " + Tables.LEADERBOARDS);
db.execSQL("DROP TABLE IF EXISTS " + Tables.CHECKIN_URIS);
onCreate(db);
version = CUR_DATABASE_VERSION;
}
@@ -17,6 +17,7 @@ import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Competito
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.AnalyticsDatabase.Tables;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.CheckinUri;
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
import java.util.Arrays;
@@ -40,7 +41,10 @@ public class AnalyticsProvider extends ContentProvider {
private static final int MESSAGE = 400;
private static final int MESSAGE_ID = 401;
private static final int CHECKIN_URI = 500;
private static final int CHECKIN_URI_ID = 501;
private static final int EVENT_LEADERBOARD_COMPETITOR_JOINED = 600;
private static final int EVENT_GPS_FIXES_JOINED = 700;
@@ -57,6 +61,9 @@ public class AnalyticsProvider extends ContentProvider {
matcher.addURI(authority, "leaderboards", LEADERBOARD);
matcher.addURI(authority, "leaderboards/*", LEADERBOARD_ID);
matcher.addURI(authority, "checkin_uris", CHECKIN_URI);
matcher.addURI(authority, "checkin_uris/*", CHECKIN_URI_ID);
matcher.addURI(authority, "events", EVENT);
matcher.addURI(authority, "events/*", EVENT_ID);
@@ -147,7 +154,10 @@ public class AnalyticsProvider extends ContentProvider {
case LEADERBOARD_ID:
return Leaderboard.CONTENT_ITEM_TYPE;
case CHECKIN_URI:
return CheckinUri.CONTENT_TYPE;
case CHECKIN_URI_ID:
return CheckinUri.CONTENT_ITEM_TYPE;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
@@ -177,7 +187,10 @@ public class AnalyticsProvider extends ContentProvider {
long leaderboardId = db.insertOrThrow(Tables.LEADERBOARDS, null, values);
notifyChange(uri);
return Leaderboard.buildLeaderboardUri(String.valueOf(leaderboardId));
case CHECKIN_URI:
long checkinUriID = db.insertOrThrow(Tables.CHECKIN_URIS, null, values);
notifyChange(uri);
return CheckinUri.builCheckInUri(String.valueOf(checkinUriID));
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
@@ -209,7 +222,10 @@ public class AnalyticsProvider extends ContentProvider {
int numLeaderboardRowsDeleted = db.delete(Tables.LEADERBOARDS, selection, selectionArgs);
notifyChange(uri);
return numLeaderboardRowsDeleted;
case CHECKIN_URI:
int numCheckinUriRowsDeleted = db.delete(Tables.CHECKIN_URIS, selection, selectionArgs);
notifyChange(uri);
return numCheckinUriRowsDeleted;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
@@ -263,6 +279,12 @@ public class AnalyticsProvider extends ContentProvider {
final String event_id = Event.getEventId(uri);
return builder.table(Tables.EVENTS)
.where(Event.EVENT_ID + " = ?", event_id);
case CHECKIN_URI:
return builder.table(Tables.CHECKIN_URIS);
case CHECKIN_URI_ID:
final String checkinUriId = AnalyticsContract.CheckinUri.getCheckinUriId(uri);
return builder.table(Tables.CHECKIN_URIS)
.where(BaseColumns._ID + " = ?", checkinUriId);
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
@@ -1,5 +1,9 @@
package com.sap.sailing.android.tracking.app.ui.activities;
import android.app.AlertDialog;
import android.content.DialogInterface;
import com.sap.sailing.android.tracking.app.R;
import com.sap.sailing.android.tracking.app.utils.CheckinManager;
import com.sap.sailing.android.tracking.app.valueobjects.CheckinData;
@@ -7,4 +11,23 @@ public abstract class CheckinDataActivity extends BaseActivity implements Checki
@Override
public abstract void onCheckinDataAvailable(CheckinData data);
/**
* Shows a pop-up-dialog that informs the user than an DB-operation has failed.
*/
public void displayDatabaseError() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.notify_user_db_operation_failed));
builder.setCancelable(true);
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
@@ -23,6 +23,7 @@ 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.ui.fragments.RegattaFragment;
import com.sap.sailing.android.tracking.app.utils.CheckinManager;
import com.sap.sailing.android.tracking.app.utils.DatabaseHelper;
import com.sap.sailing.android.tracking.app.utils.NetworkHelper;
import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperError;
@@ -30,6 +31,7 @@ import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperFai
import com.sap.sailing.android.tracking.app.utils.NetworkHelper.NetworkHelperSuccessListener;
import com.sap.sailing.android.tracking.app.utils.UniqueDeviceUuid;
import com.sap.sailing.android.tracking.app.valueobjects.CheckinData;
import com.sap.sailing.android.tracking.app.valueobjects.CheckinUrlInfo;
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;
@@ -51,7 +53,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
public class RegattaActivity extends CheckinDataActivity {
public class RegattaActivity extends CheckinDataActivity implements RegattaFragment.FragmentWatcher {
private final static String TAG = RegattaActivity.class.getName();
private final static String LEADERBOARD_IMAGE_FILENAME_PREFIX = "leaderboardImage_";
@@ -60,8 +62,11 @@ public class RegattaActivity extends CheckinDataActivity {
public EventInfo event;
public CompetitorInfo competitor;
public LeaderboardInfo leaderboard;
public CheckinUrlInfo checkinUrl;
private boolean hasPicture;
private String checkinDigest;
private CheckinManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -73,7 +78,10 @@ public class RegattaActivity extends CheckinDataActivity {
competitor = new CompetitorInfo();
leaderboard = new LeaderboardInfo();
String checkinDigest = intent.getStringExtra(getString(R.string.checkin_digest));
checkinDigest = intent.getStringExtra(getString(R.string.checkin_digest));
checkinUrl = DatabaseHelper.getInstance().getCheckinUrl(this, checkinDigest);
manager = new CheckinManager(checkinUrl.urlString, this);
competitor = DatabaseHelper.getInstance().getCompetitor(this, checkinDigest);
event = DatabaseHelper.getInstance().getEventInfo(this, checkinDigest);
@@ -93,7 +101,9 @@ public class RegattaActivity extends CheckinDataActivity {
getSupportActionBar().setTitle(leaderboard.name);
getSupportActionBar().setSubtitle(event.name);
}
replaceFragment(R.id.content_frame, new RegattaFragment());
RegattaFragment regattaFragment = new RegattaFragment();
regattaFragment.setFragmentWatcher(this);
replaceFragment(R.id.content_frame, regattaFragment);
}
@Override
@@ -115,12 +125,9 @@ public class RegattaActivity extends CheckinDataActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem teamPhotoItem = menu.findItem(R.id.options_menu_add_team_image);
if(hasPicture)
{
if (hasPicture) {
teamPhotoItem.setTitle(getString(R.string.options_replace_team_photo));
}
else
{
} else {
teamPhotoItem.setTitle(getString(R.string.options_add_team_photo));
}
return super.onPrepareOptionsMenu(menu);
@@ -129,20 +136,23 @@ public class RegattaActivity extends CheckinDataActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.options_menu_settings:
ExLog.i(this, TAG, "Clicked SETTINGS.");
startActivity(new Intent(this, SettingsActivity.class));
return true;
case R.id.options_menu_checkout:
ExLog.i(this, TAG, "Clicked CHECKOUT.");
checkout();
return true;
case R.id.options_menu_add_team_image:
ExLog.i(this, TAG, "Clicked ADD TEAM IMAGE");
getRegattaFragment().showChooseExistingPictureOrTakeNewPhotoAlert();
return true;
default:
return super.onOptionsItemSelected(item);
case R.id.options_menu_settings:
ExLog.i(this, TAG, "Clicked SETTINGS.");
startActivity(new Intent(this, SettingsActivity.class));
return true;
case R.id.options_menu_checkout:
ExLog.i(this, TAG, "Clicked CHECKOUT.");
checkout();
return true;
case R.id.options_menu_add_team_image:
ExLog.i(this, TAG, "Clicked ADD TEAM IMAGE");
getRegattaFragment().showChooseExistingPictureOrTakeNewPhotoAlert();
return true;
case R.id.options_menu_refresh:
manager.callServerAndGenerateCheckinData();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@@ -175,6 +185,15 @@ public class RegattaActivity extends CheckinDataActivity {
@Override
protected void onResume() {
setUpView();
RegattaFragment regattaFragment = getRegattaFragment();
if (regattaFragment != null) {
regattaFragment.setFragmentWatcher(this);
}
super.onResume();
}
private void setUpView() {
TextView competitorNameTextView = (TextView) findViewById(R.id.competitor_name);
competitorNameTextView.setText(competitor.name);
@@ -208,7 +227,6 @@ public class RegattaActivity extends CheckinDataActivity {
imageView.setImageBitmap(storedImage);
userImageUpdated();
}
ImageView flagImageView = (ImageView) findViewById(R.id.flag_image);
@@ -221,11 +239,9 @@ public class RegattaActivity extends CheckinDataActivity {
} else {
flagImageView.setImageBitmap(storedFlagImage);
}
super.onResume();
}
/**
*
* @param bitmap
*/
public void updateLeaderboardPictureChosenByUser(final Bitmap bitmap) {
@@ -242,7 +258,7 @@ public class RegattaActivity extends CheckinDataActivity {
/**
* Store image for quicker retrieval later and trigger upload to server.
*
*
* @param images
*/
private void storeImageAndSendToServer(Bitmap image, String fileName, boolean sendToServer) {
@@ -267,7 +283,7 @@ public class RegattaActivity extends CheckinDataActivity {
/**
* Get stored image if there's one saved.
*
*
* @return
*/
private Bitmap getStoredImage(String fileName) {
@@ -284,7 +300,7 @@ public class RegattaActivity extends CheckinDataActivity {
/**
* Silently send the team image to the server.
*
*
* @param imageFile
*/
private void sendTeamImageToServer(File imageFile) {
@@ -298,7 +314,7 @@ public class RegattaActivity extends CheckinDataActivity {
/**
* Get Path for cached leaderbaord image.
*
*
* @return
*/
public File getImageFile(String fileName) {
@@ -342,7 +358,28 @@ public class RegattaActivity extends CheckinDataActivity {
@Override
public void onCheckinDataAvailable(CheckinData data) {
if (data != null) {
try {
DatabaseHelper.getInstance().deleteRegattaFromDatabase(this, checkinDigest);
DatabaseHelper.getInstance().storeCheckinRow(this, data.getEvent(),
data.getCompetitor(), data.getLeaderboard(), data.getCheckinUrl());
competitor = DatabaseHelper.getInstance().getCompetitor(this, checkinDigest);
event = DatabaseHelper.getInstance().getEventInfo(this, checkinDigest);
leaderboard = DatabaseHelper.getInstance().getLeaderboard(this, checkinDigest);
checkinUrl = DatabaseHelper.getInstance().getCheckinUrl(this, checkinDigest);
RegattaFragment regattaFragment = new RegattaFragment();
regattaFragment.setFragmentWatcher(this);
replaceFragment(R.id.content_frame, regattaFragment);
} catch (DatabaseHelper.GeneralDatabaseHelperException e) {
ExLog.e(this, TAG, "Batch insert failed: " + e.getMessage());
displayDatabaseError();
}
}
}
@Override
public void onViewCreated() {
setUpView();
}
private class UploadTeamImageTask extends AsyncTask<String, Void, String> {
@@ -111,6 +111,9 @@ public class StartActivity extends CheckinDataActivity {
@Override
public void onCheckinDataAvailable(CheckinData data) {
getHomeFragment().displayUserConfirmationScreen(data);
if(data != null)
{
getHomeFragment().displayUserConfirmationScreen(data);
}
}
}
@@ -60,8 +60,6 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
private int requestCodeQRCode = 442;
private RegattaAdapter adapter;
private CheckinData checkinData;
@SuppressLint("InflateParams")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -208,12 +206,12 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
checkinData.checkinDigest)) {
try {
DatabaseHelper.getInstance().storeCheckinRow(getActivity(), checkinData.getEvent(),
checkinData.getCompetitor(), checkinData.getLeaderboard());
checkinData.getCompetitor(), checkinData.getLeaderboard(), checkinData.getCheckinUrl());
adapter.notifyDataSetChanged();
} catch (GeneralDatabaseHelperException e) {
ExLog.e(getActivity(), TAG, "Batch insert failed: " + e.getMessage());
displayDatabaseError();
((StartActivity) getActivity()).displayDatabaseError();
return;
}
@@ -273,25 +271,6 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
alert.show();
}
/**
* Shows a pop-up-dialog that informs the user than an DB-operation has failed.
*/
private void displayDatabaseError() {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(getString(R.string.notify_user_db_operation_failed));
builder.setCancelable(true);
builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
/**
* Start regatta activity.
*
@@ -47,6 +47,8 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
private TimerRunnable timer;
private FragmentWatcher watcher;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
@@ -132,6 +134,10 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
@Override
public void onResume() {
super.onResume();
if(watcher != null)
{
watcher.onViewCreated();
}
timer = new TimerRunnable();
timer.start();
checkAndSwitchToThankYouScreenIfRegattaOver();
@@ -362,6 +368,10 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
}
}
public void setFragmentWatcher(FragmentWatcher fWatcher){
watcher = fWatcher;
}
private class TimerRunnable implements Runnable {
public Thread t;
@@ -395,6 +405,11 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
public void stop() {
running = false;
}
}
public interface FragmentWatcher{
public void onViewCreated();
}
}
@@ -51,6 +51,7 @@ public class CheckinManager {
final URLData urlData = extractRequestParametersFromUri(uri, scheme);
if (urlData == null)
{
setCheckinData(null);
return;
}
@@ -199,7 +200,6 @@ public class CheckinManager {
"Failed to get leaderboard from API: " + e.getMessage());
activity.dismissProgressDialog();
displayAPIErrorRecommendRetry();
return;
}
});
}
@@ -243,7 +243,6 @@ public class CheckinManager {
+ e.getMessage());
activity.dismissProgressDialog();
displayAPIErrorRecommendRetry();
return;
}
});
}
@@ -265,6 +264,7 @@ public class CheckinManager {
data.leaderboardName = leaderboardName;
data.deviceUid = urlData.deviceUuid
.getStringRepresentation();
data.uriString = urlData.uriStr;
try {
data.setCheckinDigestFromString(urlData.uriStr);
setCheckinData(data);
@@ -276,7 +276,6 @@ public class CheckinManager {
+ e.getMessage());
activity.dismissProgressDialog();
displayAPIErrorRecommendRetry();
return;
} catch (NoSuchAlgorithmException e) {
ExLog.e(activity,
TAG,
@@ -285,16 +284,12 @@ public class CheckinManager {
+ e.getMessage());
activity.dismissProgressDialog();
displayAPIErrorRecommendRetry();
return;
}
}
public void setCheckinData(CheckinData data){
if(data != null)
{
checkinData = data;
activity.onCheckinDataAvailable(getCheckinData());
}
checkinData = data;
activity.onCheckinDataAvailable(getCheckinData());
}
public CheckinData getCheckinData(){
@@ -318,6 +313,7 @@ public class CheckinManager {
});
AlertDialog alert = builder.create();
alert.show();
setCheckinData(null);
}
public interface CheckinDataHandler{
@@ -16,6 +16,8 @@ import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Competito
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Event;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.EventLeaderboardCompetitorJoined;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Leaderboard;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.CheckinUri;
import com.sap.sailing.android.tracking.app.valueobjects.CheckinUrlInfo;
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;
@@ -196,6 +198,22 @@ public class DatabaseHelper {
return leaderboard;
}
public CheckinUrlInfo getCheckinUrl(Context context, String checkinDigest){
CheckinUrlInfo checkinUrlInfo = new CheckinUrlInfo();
checkinUrlInfo.checkinDigest = checkinDigest;
Cursor uc = context.getContentResolver().query(CheckinUri.CONTENT_URI, null,
CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = \"" + checkinDigest + "\"", null, null);
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
}
uc.close();
return checkinUrlInfo;
}
// public void deleteRegattaFromDatabase(Context context, String eventId, String competitorId, String
// leaderboardName)
// {
@@ -222,11 +240,14 @@ public class DatabaseHelper {
+ "\"", null);
int d3 = cr.delete(Leaderboard.CONTENT_URI, Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = \"" + checkinDigest
+ "\"", null);
int d4 = cr.delete(CheckinUri.CONTENT_URI, CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = \"" + checkinDigest
+ "\"", null);
if (BuildConfig.DEBUG) {
ExLog.i(context, TAG, "Checkout, number of events deleted: " + d1);
ExLog.i(context, TAG, "Checkout, number of competitors deleted: " + d2);
ExLog.i(context, TAG, "Checkout, number of leaderbards deleted: " + d3);
ExLog.i(context, TAG, "Checkout, number of checkinurls deleted: " + d4);
}
}
@@ -242,7 +263,8 @@ public class DatabaseHelper {
* @throws OperationApplicationException
* @throws RemoteException
*/
public void storeCheckinRow(Context context, EventInfo event, CompetitorInfo competitor, LeaderboardInfo leaderboard)
public void storeCheckinRow(Context context, EventInfo event, CompetitorInfo competitor,
LeaderboardInfo leaderboard, CheckinUrlInfo checkinURL)
throws GeneralDatabaseHelperException {
// inserting leaderboard first
@@ -282,6 +304,16 @@ public class DatabaseHelper {
opList.add(ContentProviderOperation.newInsert(Competitor.CONTENT_URI).withValues(ccv).build());
// checkin url
ContentValues ccuv = new ContentValues();
ccuv.put(CheckinUri.CHECKIN_URI_VALUE, checkinURL.urlString);
ccuv.put(CheckinUri.CHECKIN_URI_CHECKIN_DIGEST, checkinURL.checkinDigest);
cr.insert(CheckinUri.CONTENT_URI, ccuv);
opList.add(ContentProviderOperation.newInsert(CheckinUri.CONTENT_URI).withValues(ccuv).build());
try {
cr.applyBatch(AnalyticsContract.CONTENT_AUTHORITY, opList);
} catch (RemoteException e) {
@@ -20,6 +20,7 @@ public class CheckinData {
public String competitorNationality;
public String competitorCountryCode;
public String deviceUid;
public String uriString;
public String checkinDigest;
public void setCheckinDigestFromString(String checkinString) throws UnsupportedEncodingException,
@@ -63,4 +64,11 @@ public class CheckinData {
competitor.checkinDigest = checkinDigest;
return competitor;
}
public CheckinUrlInfo getCheckinUrl(){
CheckinUrlInfo checkinUrlInfo = new CheckinUrlInfo();
checkinUrlInfo.urlString = uriString;
checkinUrlInfo.checkinDigest = checkinDigest;
return checkinUrlInfo;
}
}
@@ -0,0 +1,10 @@
package com.sap.sailing.android.tracking.app.valueobjects;
/**
* Created by brunsen on 11.03.15.
*/
public class CheckinUrlInfo {
public String urlString;
public String checkinDigest;
public int rowId;
}