mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
First part of regatta reloading at open
Regatta data is reloaded in oncreate of RegattaActivity.
This commit is contained in:
1 parent
613f8fc8f9
commit
2573e96165
8 files changed
+96
-37
No files matched your search
+6
-2
@@ -134,8 +134,12 @@ public class AnalyticsContract {
|
||||
+ "/vnd.sap_sailing_analytics.uri";
|
||||
public static final String DEFAULT_SORT = BaseColumns._ID + " ASC ";
|
||||
|
||||
public static Uri buildLeaderboardUri(String leaderboardId) {
|
||||
return CONTENT_URI.buildUpon().appendPath(leaderboardId).build();
|
||||
public static Uri builCheckInUri(String checkinUriId) {
|
||||
return CONTENT_URI.buildUpon().appendPath(checkinUriId).build();
|
||||
}
|
||||
|
||||
public static String getCheckinUriId(Uri uri) {
|
||||
return uri.getPathSegments().get(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-2
@@ -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;
|
||||
}
|
||||
|
||||
+26
-4
@@ -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);
|
||||
|
||||
+23
@@ -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
-2
@@ -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;
|
||||
@@ -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,11 @@ 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);
|
||||
manager.callServerAndGenerateCheckinData();
|
||||
|
||||
competitor = DatabaseHelper.getInstance().getCompetitor(this, checkinDigest);
|
||||
event = DatabaseHelper.getInstance().getEventInfo(this, checkinDigest);
|
||||
@@ -342,7 +351,19 @@ public class RegattaActivity extends CheckinDataActivity {
|
||||
|
||||
@Override
|
||||
public void onCheckinDataAvailable(CheckinData data) {
|
||||
|
||||
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);
|
||||
replaceFragment(R.id.content_frame, new RegattaFragment());
|
||||
} catch (DatabaseHelper.GeneralDatabaseHelperException e) {
|
||||
ExLog.e(this, TAG, "Batch insert failed: " + e.getMessage());
|
||||
displayDatabaseError();
|
||||
}
|
||||
}
|
||||
|
||||
private class UploadTeamImageTask extends AsyncTask<String, Void, String> {
|
||||
|
||||
+1
-20
@@ -211,7 +211,7 @@ public class HomeFragment extends BaseFragment implements LoaderCallbacks<Cursor
|
||||
adapter.notifyDataSetChanged();
|
||||
} catch (GeneralDatabaseHelperException e) {
|
||||
ExLog.e(getActivity(), TAG, "Batch insert failed: " + e.getMessage());
|
||||
displayDatabaseError();
|
||||
((StartActivity) getActivity()).displayDatabaseError();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -271,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.
|
||||
*
|
||||
|
||||
+3
-3
@@ -309,10 +309,10 @@ public class DatabaseHelper {
|
||||
ContentValues ccuv = new ContentValues();
|
||||
|
||||
ccuv.put(CheckinUri.CHECKIN_URI_VALUE, checkinURL.urlString);
|
||||
ccuv.put(Leaderboard.LEADERBOARD_CHECKIN_DIGEST, checkinURL.checkinDigest);
|
||||
cr.insert(Leaderboard.CONTENT_URI, ccuv);
|
||||
ccuv.put(CheckinUri.CHECKIN_URI_CHECKIN_DIGEST, checkinURL.checkinDigest);
|
||||
cr.insert(CheckinUri.CONTENT_URI, ccuv);
|
||||
|
||||
opList.add(ContentProviderOperation.newInsert(Competitor.CONTENT_URI).withValues(ccuv).build());
|
||||
opList.add(ContentProviderOperation.newInsert(CheckinUri.CONTENT_URI).withValues(ccuv).build());
|
||||
|
||||
try {
|
||||
cr.applyBatch(AnalyticsContract.CONTENT_AUTHORITY, opList);
|
||||
|
||||
+4
-4
@@ -66,9 +66,9 @@ public class CheckinData {
|
||||
}
|
||||
|
||||
public CheckinUrlInfo getCheckinUrl(){
|
||||
CheckinUrlInfo checkinUrl = new CheckinUrlInfo();
|
||||
checkinUrl.urlString = uriString;
|
||||
checkinUrl.checkinDigest = checkinDigest;
|
||||
return checkinUrl;
|
||||
CheckinUrlInfo checkinUrlInfo = new CheckinUrlInfo();
|
||||
checkinUrlInfo.urlString = uriString;
|
||||
checkinUrlInfo.checkinDigest = checkinDigest;
|
||||
return checkinUrlInfo;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user