From 28f0e1fc4fa16722f53eb3e02797e7cbcac87ab2 Mon Sep 17 00:00:00 2001 From: Bennet Brunsen Date: Thu, 7 Jul 2016 11:54:55 +0200 Subject: [PATCH] Add new column checkin type to checkin table --- .../android/shared/data/CheckinUrlInfo.java | 1 + .../app/provider/AnalyticsContract.java | 9 ++--- .../app/provider/AnalyticsDatabase.java | 14 ++++---- .../app/provider/AnalyticsProvider.java | 18 +++++----- .../tracking/app/utils/DatabaseHelper.java | 36 +++++++++++-------- 5 files changed, 44 insertions(+), 34 deletions(-) diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/CheckinUrlInfo.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/CheckinUrlInfo.java index f2498c25f26..4dbc6ecc6b8 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/CheckinUrlInfo.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/data/CheckinUrlInfo.java @@ -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; } diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsContract.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsContract.java index ea2178198d2..df1716ee844 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsContract.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsContract.java @@ -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"; diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsDatabase.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsDatabase.java index e89c06028c3..14834fa0533 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsDatabase.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/provider/AnalyticsDatabase.java @@ -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"); } } 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 f4b05792b5e..371eb397bef 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 @@ -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: 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 b712058348b..ab9425588db 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 @@ -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 getCheckinUrls(Context context) { List 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.)