Add new column checkin type to checkin table

This commit is contained in:
Bennet Brunsen
2016-07-07 11:54:55 +02:00
parent fc457e4fbf
commit 28f0e1fc4f
5 changed files with 44 additions and 34 deletions
@@ -3,5 +3,6 @@ package com.sap.sailing.android.shared.data;
public class CheckinUrlInfo {
public String urlString;
public String checkinDigest;
public int type;
public int rowId;
}
@@ -30,15 +30,16 @@ public class AnalyticsContract {
String EVENT_CHECKIN_DIGEST = "event_checkin_digest";
}
interface MarkColums {
interface markColums {
String MARK_ID = "mark.id";
String MARKNAME = "mark.name";
String MARK_CHECKIN_DIGEST = "mark.checkin_digest";
}
interface CheckinUriColumns {
interface CheckinColumns {
String CHECKIN_URI_VALUE = "uri_value";
String CHECKIN_URI_CHECKIN_DIGEST = "uri_checkin_digest";
String CHECKIN_TYPE = "checkin_type";
}
public static final String CONTENT_AUTHORITY = "com.sap.sailing.android.tracking.app.provider.db";
@@ -123,7 +124,7 @@ public class AnalyticsContract {
}
}
public static class CheckinUri implements CheckinUriColumns, BaseColumns {
public static class Checkin implements CheckinColumns, 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
@@ -141,7 +142,7 @@ public class AnalyticsContract {
}
}
public static class Mark implements MarkColums, BaseColumns {
public static class mark implements markColums, BaseColumns {
public static final Uri CONTENT_URI = BASE_CONTENT_URI.buildUpon().appendPath(PATH_MARK).build();
public static final String CONTENT_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE
+ "/vnd.sap_sailing_analytics.mark";
@@ -12,7 +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;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.CheckinColumns;
public class AnalyticsDatabase extends SQLiteOpenHelper {
@@ -24,9 +24,9 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
private static final int CUR_DATABASE_VERSION = VER_2016_RELEASE_1;
private static final String createMarkTable = "CREATE TABLE " + Tables.MARKS + " (" +BaseColumns._ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + AnalyticsContract.Mark.MARK_ID + " TEXT, "
+ AnalyticsContract.Mark.MARKNAME + " TEXT, "
+ AnalyticsContract.Mark.MARK_CHECKIN_DIGEST + " TEXT );" ;
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + AnalyticsContract.mark.MARK_ID + " TEXT, "
+ AnalyticsContract.mark.MARKNAME + " TEXT, "
+ AnalyticsContract.mark.MARK_CHECKIN_DIGEST + " TEXT );" ;
private final Context mContext;
@@ -60,8 +60,9 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
+ 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 );");
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + CheckinColumns.CHECKIN_URI_CHECKIN_DIGEST + " TEXT, "
+ CheckinColumns.CHECKIN_URI_VALUE + " TEXT, "
+ CheckinColumns.CHECKIN_TYPE + " INTEGER );");
db.execSQL("CREATE TABLE " + Tables.COMPETITORS + " (" + BaseColumns._ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + CompetitorColumns.COMPETITOR_ID + " TEXT, "
@@ -84,6 +85,7 @@ public class AnalyticsDatabase extends SQLiteOpenHelper {
ExLog.i(mContext, TAG, "onUpgrade() from " + oldVersion + " to " + newVersion);
if (oldVersion == 1 && newVersion == 2) {
db.execSQL(createMarkTable);
db.execSQL("ALTER TABLE " + Tables.CHECKIN_URIS + "ADD COLUMN " + AnalyticsContract.Checkin.CHECKIN_TYPE + " INTEGER DEFAULT 0");
}
}
@@ -15,7 +15,7 @@ import android.provider.BaseColumns;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.util.SelectionBuilder;
import com.sap.sailing.android.tracking.app.BuildConfig;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.CheckinUri;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Checkin;
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;
@@ -159,13 +159,13 @@ public class AnalyticsProvider extends ContentProvider {
case LEADERBOARD_ID:
return Leaderboard.CONTENT_ITEM_TYPE;
case CHECKIN_URI:
return CheckinUri.CONTENT_TYPE;
return Checkin.CONTENT_TYPE;
case CHECKIN_URI_ID:
return CheckinUri.CONTENT_ITEM_TYPE;
return Checkin.CONTENT_ITEM_TYPE;
case MARK:
return AnalyticsContract.Mark.CONTENT_TYPE;
return AnalyticsContract.mark.CONTENT_TYPE;
case MARK_ID:
return AnalyticsContract.Mark.CONTENT_ITEM_TYPE;
return AnalyticsContract.mark.CONTENT_ITEM_TYPE;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
}
@@ -199,12 +199,12 @@ public class AnalyticsProvider extends ContentProvider {
case CHECKIN_URI:
long checkinUriID = db.insertOrThrow(Tables.CHECKIN_URIS, null, values);
notifyChange(uri);
return CheckinUri.builCheckInUri(String.valueOf(checkinUriID));
return Checkin.builCheckInUri(String.valueOf(checkinUriID));
case MARK:
long markUriID = db.insertOrThrow(Tables.MARKS, null, values);
notifyChange(uri);
return AnalyticsContract.Mark.buildMarkUri(String.valueOf(markUriID));
return AnalyticsContract.mark.buildMarkUri(String.valueOf(markUriID));
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
@@ -297,12 +297,12 @@ public class AnalyticsProvider extends ContentProvider {
case CHECKIN_URI:
return builder.table(Tables.CHECKIN_URIS);
case CHECKIN_URI_ID:
final String checkinUriId = AnalyticsContract.CheckinUri.getCheckinUriId(uri);
final String checkinUriId = Checkin.getCheckinUriId(uri);
return builder.table(Tables.CHECKIN_URIS).where(BaseColumns._ID + " = ?", checkinUriId);
case MARK:
return builder.table(Tables.MARKS);
case MARK_ID:
final String mark_id = AnalyticsContract.Mark.getMarkId(uri);
final String mark_id = AnalyticsContract.mark.getMarkId(uri);
return builder.table(Tables.MARKS).where(BaseColumns._ID + " = ?", mark_id);
default:
@@ -1,5 +1,8 @@
package com.sap.sailing.android.tracking.app.utils;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
@@ -9,22 +12,19 @@ import android.database.Cursor;
import android.os.RemoteException;
import android.provider.BaseColumns;
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
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;
import com.sap.sailing.android.tracking.app.provider.AnalyticsContract.Checkin;
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.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.provider.AnalyticsDatabase;
import com.sap.sailing.android.tracking.app.valueobjects.CompetitorInfo;
import com.sap.sailing.android.tracking.app.valueobjects.EventInfo;
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHelper {
@@ -43,11 +43,11 @@ public class DatabaseHelper {
public List<String> getCheckinUrls(Context context) {
List<String> checkinUrls = new ArrayList<>();
ContentResolver cr = context.getContentResolver();
Cursor cursor = cr.query(CheckinUri.CONTENT_URI, null, null, null, null);
Cursor cursor = cr.query(Checkin.CONTENT_URI, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String checkinUrl = cursor.getString(cursor.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
String checkinUrl = cursor.getString(cursor.getColumnIndex(Checkin.CHECKIN_URI_VALUE));
if (!checkinUrls.contains(checkinUrl)) {
checkinUrls.add(checkinUrl);
}
@@ -161,12 +161,13 @@ public class DatabaseHelper {
CheckinUrlInfo checkinUrlInfo = new CheckinUrlInfo();
checkinUrlInfo.checkinDigest = checkinDigest;
Cursor uc = context.getContentResolver().query(CheckinUri.CONTENT_URI, null,
CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
Cursor uc = context.getContentResolver().query(Checkin.CONTENT_URI, null,
Checkin.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (uc != null) {
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(Checkin.CHECKIN_URI_VALUE));
checkinUrlInfo.type = uc.getInt(uc.getColumnIndex(Checkin.CHECKIN_TYPE));
}
uc.close();
@@ -175,13 +176,15 @@ public class DatabaseHelper {
return checkinUrlInfo;
}
// TODO: Get Mark
public void deleteRegattaFromDatabase(Context context, String checkinDigest) {
ContentResolver cr = context.getContentResolver();
int d1 = cr.delete(Event.CONTENT_URI, Event.EVENT_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest });
int d2 = cr.delete(Competitor.CONTENT_URI, Competitor.COMPETITOR_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest });
int d3 = cr.delete(Leaderboard.CONTENT_URI, Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest });
int d4 = cr.delete(CheckinUri.CONTENT_URI, CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest });
int d4 = cr.delete(Checkin.CONTENT_URI, Checkin.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest });
if (BuildConfig.DEBUG) {
ExLog.i(context, TAG, "Checkout, number of events deleted: " + d1);
@@ -245,10 +248,11 @@ public class DatabaseHelper {
ContentValues ccuv = new ContentValues();
ccuv.put(CheckinUri.CHECKIN_URI_VALUE, checkinURL.urlString);
ccuv.put(CheckinUri.CHECKIN_URI_CHECKIN_DIGEST, checkinURL.checkinDigest);
ccuv.put(Checkin.CHECKIN_URI_VALUE, checkinURL.urlString);
ccuv.put(Checkin.CHECKIN_URI_CHECKIN_DIGEST, checkinURL.checkinDigest);
ccuv.put(Checkin.CHECKIN_TYPE, checkinURL.type);
opList.add(ContentProviderOperation.newInsert(CheckinUri.CONTENT_URI).withValues(ccuv).build());
opList.add(ContentProviderOperation.newInsert(Checkin.CONTENT_URI).withValues(ccuv).build());
try {
cr.applyBatch(AnalyticsContract.CONTENT_AUTHORITY, opList);
@@ -259,6 +263,8 @@ public class DatabaseHelper {
}
}
// TODO: Store mark
/**
* Return true if the combination of event, leaderboard and competitor does not exist in the DB. (based on the
* digest of the checkin- url obtained from the QR-code.)