Loading app/src/main/java/net/fabiszewski/ulogger/db/DbAccess.java +48 −5 Original line number Diff line number Diff line Loading @@ -104,8 +104,9 @@ public class DbAccess implements AutoCloseable { * @param loc Location * @param comment Comment * @param imageUri Image URI * @param isWaypoint Waypoint if true, trackpoint otherwise */ private void writeLocation(@NonNull Location loc, @Nullable String comment, @Nullable String imageUri) { private void writeLocation(@NonNull Location loc, @Nullable String comment, @Nullable String imageUri, boolean isWaypoint) { if (Logger.DEBUG) { Log.d(TAG, "[writeLocation]"); } Loading @@ -132,6 +133,9 @@ public class DbAccess implements AutoCloseable { if (imageUri != null && !imageUri.isEmpty()) { values.put(DbContract.Positions.COLUMN_IMAGE_URI, imageUri); } if (isWaypoint) { values.put(DbContract.Positions.COLUMN_WAYPOINT, 1); } db.insert(DbContract.Positions.TABLE_NAME, null, values); } Loading @@ -141,7 +145,20 @@ public class DbAccess implements AutoCloseable { * @param location Location */ public static void writeLocation(@NonNull Context context, @NonNull Location location) { writeLocation(context, location, null, null); writeLocation(context, location, null, null, false); } /** * Write waypoint to database. * * @param context Context * @param location Location * @param comment Comment * @param imageUri Image URI */ public static void writeWaypoint(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri) { writeLocation(context, location, comment, imageUri, true); } /** Loading @@ -151,10 +168,11 @@ public class DbAccess implements AutoCloseable { * @param location Location * @param comment Comment * @param imageUri Image URI * @param isWaypoint Waypoint if true, trackpoint otherwise */ public static void writeLocation(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri) { public static void writeLocation(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri, boolean isWaypoint) { try (DbAccess dbAccess = getOpenInstance(context)) { dbAccess.writeLocation(location, comment, imageUri); dbAccess.writeLocation(location, comment, imageUri, isWaypoint); } } Loading Loading @@ -210,6 +228,21 @@ public class DbAccess implements AutoCloseable { DbContract.Positions.COLUMN_TIME); } /** * Get result set containing waypoints. * * @return Result set */ @NonNull public Cursor getWaypoints() { return db.query(DbContract.Positions.TABLE_NAME, new String[]{ "*" }, DbContract.Positions.COLUMN_WAYPOINT + " = ?", new String[]{ "1" }, null, null, DbContract.Positions.COLUMN_TIME); } /** * Get error message stored in track table. * Loading Loading @@ -268,7 +301,7 @@ public class DbAccess implements AutoCloseable { */ public void setSynced(@NonNull Context context, int id) { ContentValues values = new ContentValues(); values.put(DbContract.Positions.COLUMN_SYNCED, "1"); values.put(DbContract.Positions.COLUMN_SYNCED, 1); db.update(DbContract.Positions.TABLE_NAME, values, DbContract.Positions._ID + " = ?", Loading Loading @@ -760,6 +793,16 @@ public class DbAccess implements AutoCloseable { return isColumnNotNull(cursor, DbContract.Positions.COLUMN_COMMENT); } /** * Check if cursor data is waypoint * * @param cursor Cursor * @return True if it is waypoint */ public static boolean isWaypoint(@NonNull Cursor cursor) { return cursor.getInt(cursor.getColumnIndexOrThrow(DbContract.Positions.COLUMN_WAYPOINT)) == 1; } /** * Get latitude from positions cursor * Loading app/src/main/java/net/fabiszewski/ulogger/db/DbContract.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,9 +34,11 @@ public final class DbContract { static final String COLUMN_COMMENT = "comment"; static final String COLUMN_IMAGE_URI = "imageUri"; static final String COLUMN_SYNCED = "synced"; static final String COLUMN_WAYPOINT = "waypoint"; static final String INDEX_TIME = "timeIdx"; static final String INDEX_SYNCED = "syncedIdx"; static final String INDEX_WAYPOINT = "waypointIdx"; } /** Track table */ Loading app/src/main/java/net/fabiszewski/ulogger/db/DbHelper.java +27 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ class DbHelper extends SQLiteOpenHelper { private static final String TAG = DbHelper.class.getSimpleName(); private static final int DATABASE_VERSION = 3; private static final int DATABASE_VERSION = 4; private static final String DATABASE_NAME = "ulogger.db"; private static final String BACKUP_SUFFIX = "_backup"; Loading @@ -46,6 +46,7 @@ class DbHelper extends SQLiteOpenHelper { DbContract.Positions.COLUMN_PROVIDER + " TEXT," + DbContract.Positions.COLUMN_COMMENT + " TEXT DEFAULT NULL," + DbContract.Positions.COLUMN_IMAGE_URI + " TEXT DEFAULT NULL," + DbContract.Positions.COLUMN_WAYPOINT + " INTEGER DEFAULT 0," + DbContract.Positions.COLUMN_SYNCED + " INTEGER DEFAULT 0)"; private static final String SQL_POS_CREATE_INDEX_SYNCED = Loading @@ -56,6 +57,10 @@ class DbHelper extends SQLiteOpenHelper { "CREATE INDEX " + DbContract.Positions.INDEX_TIME + " " + "ON " + DbContract.Positions.TABLE_NAME + "(" + DbContract.Positions.COLUMN_TIME + ")"; private static final String SQL_POS_CREATE_INDEX_WAYPOINT = "CREATE INDEX " + DbContract.Positions.INDEX_WAYPOINT + " " + "ON " + DbContract.Positions.TABLE_NAME + "(" + DbContract.Positions.COLUMN_WAYPOINT + ")"; private static final String SQL_POS_DROP_INDEX_SYNCED = "DROP INDEX IF EXISTS " + DbContract.Positions.INDEX_SYNCED; Loading @@ -82,6 +87,10 @@ class DbHelper extends SQLiteOpenHelper { "ALTER TABLE " + DbContract.Positions.TABLE_NAME + " ADD COLUMN " + DbContract.Positions.COLUMN_COMMENT + " TEXT DEFAULT NULL"; private static final String SQL_POS_ADD_COLUMN_WAYPOINT = "ALTER TABLE " + DbContract.Positions.TABLE_NAME + " ADD COLUMN " + DbContract.Positions.COLUMN_WAYPOINT + " INTEGER DEFAULT 0"; private static final String SQL_TRACK_ADD_COLUMN_ERROR = "ALTER TABLE " + DbContract.Track.TABLE_NAME + " ADD COLUMN " + DbContract.Track.COLUMN_ERROR + " TEXT DEFAULT NULL"; Loading Loading @@ -153,6 +162,7 @@ class DbHelper extends SQLiteOpenHelper { db.execSQL(SQL_CREATE_POSITIONS); db.execSQL(SQL_POS_CREATE_INDEX_TIME); db.execSQL(SQL_POS_CREATE_INDEX_SYNCED); db.execSQL(SQL_POS_CREATE_INDEX_WAYPOINT); db.execSQL(SQL_CREATE_TRACK); } Loading @@ -172,6 +182,9 @@ class DbHelper extends SQLiteOpenHelper { case 2: migrateToVersion3(db); break; case 3: migrateToVersion4(db); break; default: dropAndCreate(db); } Loading Loading @@ -226,6 +239,19 @@ class DbHelper extends SQLiteOpenHelper { db.execSQL(SQL_DROP_POSITIONS_BACKUP); } /** * Migrates base from version 3 to 4 * * @param db Database handle */ private void migrateToVersion4(@NonNull SQLiteDatabase db) { if (Logger.DEBUG) { Log.d(TAG, "[migrateToVersion4]"); } // only affects positions schema db.execSQL(SQL_POS_ADD_COLUMN_WAYPOINT); db.execSQL(SQL_POS_CREATE_INDEX_WAYPOINT); } /** * On downgrade just drop and recreate tables * Warning: data will be lost Loading app/src/main/java/net/fabiszewski/ulogger/ui/WaypointFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ public class WaypointFragment extends Fragment implements LoggerTask.LoggerTaskC } String comment = commentEditText.getText().toString(); String uri = (photoUri == null) ? null : photoUri.toString(); DbAccess.writeLocation(view.getContext(), location, comment, uri); DbAccess.writeWaypoint(view.getContext(), location, comment, uri); photoUri = null; if (Logger.DEBUG) { Log.d(TAG, "[saveWaypoint: " + location + ", " + comment + ", " + uri + "]"); } } Loading Loading
app/src/main/java/net/fabiszewski/ulogger/db/DbAccess.java +48 −5 Original line number Diff line number Diff line Loading @@ -104,8 +104,9 @@ public class DbAccess implements AutoCloseable { * @param loc Location * @param comment Comment * @param imageUri Image URI * @param isWaypoint Waypoint if true, trackpoint otherwise */ private void writeLocation(@NonNull Location loc, @Nullable String comment, @Nullable String imageUri) { private void writeLocation(@NonNull Location loc, @Nullable String comment, @Nullable String imageUri, boolean isWaypoint) { if (Logger.DEBUG) { Log.d(TAG, "[writeLocation]"); } Loading @@ -132,6 +133,9 @@ public class DbAccess implements AutoCloseable { if (imageUri != null && !imageUri.isEmpty()) { values.put(DbContract.Positions.COLUMN_IMAGE_URI, imageUri); } if (isWaypoint) { values.put(DbContract.Positions.COLUMN_WAYPOINT, 1); } db.insert(DbContract.Positions.TABLE_NAME, null, values); } Loading @@ -141,7 +145,20 @@ public class DbAccess implements AutoCloseable { * @param location Location */ public static void writeLocation(@NonNull Context context, @NonNull Location location) { writeLocation(context, location, null, null); writeLocation(context, location, null, null, false); } /** * Write waypoint to database. * * @param context Context * @param location Location * @param comment Comment * @param imageUri Image URI */ public static void writeWaypoint(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri) { writeLocation(context, location, comment, imageUri, true); } /** Loading @@ -151,10 +168,11 @@ public class DbAccess implements AutoCloseable { * @param location Location * @param comment Comment * @param imageUri Image URI * @param isWaypoint Waypoint if true, trackpoint otherwise */ public static void writeLocation(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri) { public static void writeLocation(@NonNull Context context, @NonNull Location location, @Nullable String comment, @Nullable String imageUri, boolean isWaypoint) { try (DbAccess dbAccess = getOpenInstance(context)) { dbAccess.writeLocation(location, comment, imageUri); dbAccess.writeLocation(location, comment, imageUri, isWaypoint); } } Loading Loading @@ -210,6 +228,21 @@ public class DbAccess implements AutoCloseable { DbContract.Positions.COLUMN_TIME); } /** * Get result set containing waypoints. * * @return Result set */ @NonNull public Cursor getWaypoints() { return db.query(DbContract.Positions.TABLE_NAME, new String[]{ "*" }, DbContract.Positions.COLUMN_WAYPOINT + " = ?", new String[]{ "1" }, null, null, DbContract.Positions.COLUMN_TIME); } /** * Get error message stored in track table. * Loading Loading @@ -268,7 +301,7 @@ public class DbAccess implements AutoCloseable { */ public void setSynced(@NonNull Context context, int id) { ContentValues values = new ContentValues(); values.put(DbContract.Positions.COLUMN_SYNCED, "1"); values.put(DbContract.Positions.COLUMN_SYNCED, 1); db.update(DbContract.Positions.TABLE_NAME, values, DbContract.Positions._ID + " = ?", Loading Loading @@ -760,6 +793,16 @@ public class DbAccess implements AutoCloseable { return isColumnNotNull(cursor, DbContract.Positions.COLUMN_COMMENT); } /** * Check if cursor data is waypoint * * @param cursor Cursor * @return True if it is waypoint */ public static boolean isWaypoint(@NonNull Cursor cursor) { return cursor.getInt(cursor.getColumnIndexOrThrow(DbContract.Positions.COLUMN_WAYPOINT)) == 1; } /** * Get latitude from positions cursor * Loading
app/src/main/java/net/fabiszewski/ulogger/db/DbContract.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,9 +34,11 @@ public final class DbContract { static final String COLUMN_COMMENT = "comment"; static final String COLUMN_IMAGE_URI = "imageUri"; static final String COLUMN_SYNCED = "synced"; static final String COLUMN_WAYPOINT = "waypoint"; static final String INDEX_TIME = "timeIdx"; static final String INDEX_SYNCED = "syncedIdx"; static final String INDEX_WAYPOINT = "waypointIdx"; } /** Track table */ Loading
app/src/main/java/net/fabiszewski/ulogger/db/DbHelper.java +27 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ class DbHelper extends SQLiteOpenHelper { private static final String TAG = DbHelper.class.getSimpleName(); private static final int DATABASE_VERSION = 3; private static final int DATABASE_VERSION = 4; private static final String DATABASE_NAME = "ulogger.db"; private static final String BACKUP_SUFFIX = "_backup"; Loading @@ -46,6 +46,7 @@ class DbHelper extends SQLiteOpenHelper { DbContract.Positions.COLUMN_PROVIDER + " TEXT," + DbContract.Positions.COLUMN_COMMENT + " TEXT DEFAULT NULL," + DbContract.Positions.COLUMN_IMAGE_URI + " TEXT DEFAULT NULL," + DbContract.Positions.COLUMN_WAYPOINT + " INTEGER DEFAULT 0," + DbContract.Positions.COLUMN_SYNCED + " INTEGER DEFAULT 0)"; private static final String SQL_POS_CREATE_INDEX_SYNCED = Loading @@ -56,6 +57,10 @@ class DbHelper extends SQLiteOpenHelper { "CREATE INDEX " + DbContract.Positions.INDEX_TIME + " " + "ON " + DbContract.Positions.TABLE_NAME + "(" + DbContract.Positions.COLUMN_TIME + ")"; private static final String SQL_POS_CREATE_INDEX_WAYPOINT = "CREATE INDEX " + DbContract.Positions.INDEX_WAYPOINT + " " + "ON " + DbContract.Positions.TABLE_NAME + "(" + DbContract.Positions.COLUMN_WAYPOINT + ")"; private static final String SQL_POS_DROP_INDEX_SYNCED = "DROP INDEX IF EXISTS " + DbContract.Positions.INDEX_SYNCED; Loading @@ -82,6 +87,10 @@ class DbHelper extends SQLiteOpenHelper { "ALTER TABLE " + DbContract.Positions.TABLE_NAME + " ADD COLUMN " + DbContract.Positions.COLUMN_COMMENT + " TEXT DEFAULT NULL"; private static final String SQL_POS_ADD_COLUMN_WAYPOINT = "ALTER TABLE " + DbContract.Positions.TABLE_NAME + " ADD COLUMN " + DbContract.Positions.COLUMN_WAYPOINT + " INTEGER DEFAULT 0"; private static final String SQL_TRACK_ADD_COLUMN_ERROR = "ALTER TABLE " + DbContract.Track.TABLE_NAME + " ADD COLUMN " + DbContract.Track.COLUMN_ERROR + " TEXT DEFAULT NULL"; Loading Loading @@ -153,6 +162,7 @@ class DbHelper extends SQLiteOpenHelper { db.execSQL(SQL_CREATE_POSITIONS); db.execSQL(SQL_POS_CREATE_INDEX_TIME); db.execSQL(SQL_POS_CREATE_INDEX_SYNCED); db.execSQL(SQL_POS_CREATE_INDEX_WAYPOINT); db.execSQL(SQL_CREATE_TRACK); } Loading @@ -172,6 +182,9 @@ class DbHelper extends SQLiteOpenHelper { case 2: migrateToVersion3(db); break; case 3: migrateToVersion4(db); break; default: dropAndCreate(db); } Loading Loading @@ -226,6 +239,19 @@ class DbHelper extends SQLiteOpenHelper { db.execSQL(SQL_DROP_POSITIONS_BACKUP); } /** * Migrates base from version 3 to 4 * * @param db Database handle */ private void migrateToVersion4(@NonNull SQLiteDatabase db) { if (Logger.DEBUG) { Log.d(TAG, "[migrateToVersion4]"); } // only affects positions schema db.execSQL(SQL_POS_ADD_COLUMN_WAYPOINT); db.execSQL(SQL_POS_CREATE_INDEX_WAYPOINT); } /** * On downgrade just drop and recreate tables * Warning: data will be lost Loading
app/src/main/java/net/fabiszewski/ulogger/ui/WaypointFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ public class WaypointFragment extends Fragment implements LoggerTask.LoggerTaskC } String comment = commentEditText.getText().toString(); String uri = (photoUri == null) ? null : photoUri.toString(); DbAccess.writeLocation(view.getContext(), location, comment, uri); DbAccess.writeWaypoint(view.getContext(), location, comment, uri); photoUri = null; if (Logger.DEBUG) { Log.d(TAG, "[saveWaypoint: " + location + ", " + comment + ", " + uri + "]"); } } Loading