Try reusing old remoteId property as the new uuid property by recasting it as a string

pull/14/head
Sam Bosley 12 years ago
parent 0db2ff6089
commit 9079309539

@ -50,6 +50,15 @@ abstract public class RemoteModel extends AbstractModel {
/** constant value for no uuid */
public static final String NO_UUID = "0"; //$NON-NLS-1$
public static final boolean isValidUuid(String uuid) {
try {
long value = Long.parseLong(uuid);
return value > 0;
} catch (NumberFormatException e) {
return isUuidEmpty(uuid);
}
}
/**
* Utility method to get the identifier of the model, if it exists.
*

@ -278,7 +278,8 @@ public abstract class CommentsFragment extends ListFragment {
if (hasModel()) {
performFetch(manual, doneRunnable);
} else {
actFmSyncService.fetchPersonalUpdates(manual, doneRunnable);
// actFmSyncService.fetchPersonalUpdates(manual, doneRunnable);
doneRunnable.run();
}
callback.incrementProgress(50);
}

@ -110,7 +110,8 @@ public class TagCommentsFragment extends CommentsFragment {
@Override
protected void performFetch(boolean manual, Runnable done) {
actFmSyncService.fetchUpdatesForTag(tagData, manual, done);
done.run();
// actFmSyncService.fetchUpdatesForTag(tagData, manual, done);
}
@Override
@ -120,7 +121,7 @@ public class TagCommentsFragment extends CommentsFragment {
update.setValue(Update.MESSAGE, addCommentField.getText().toString());
update.setValue(Update.ACTION_CODE, "tag_comment");
update.setValue(Update.USER_ID, Task.USER_ID_SELF);
update.setValue(Update.TAGS, "," + tagData.getValue(TagData.REMOTE_ID) + ",");
update.setValue(Update.TAGS, "," + tagData.getValue(TagData.UUID) + ",");
update.setValue(Update.TAGS_LOCAL, "," + tagData.getId() + ",");
update.setValue(Update.CREATION_DATE, DateUtilities.now());
update.setValue(Update.TARGET_NAME, tagData.getValue(TagData.NAME));
@ -134,8 +135,8 @@ public class TagCommentsFragment extends CommentsFragment {
@Override
protected void setLastViewed() {
if(tagData != null && tagData.getValue(TagData.REMOTE_ID) > 0) {
Preferences.setLong(UPDATES_LAST_VIEWED + tagData.getValue(TagData.REMOTE_ID), DateUtilities.now());
if(tagData != null && RemoteModel.isValidUuid(tagData.getValue(TagData.UUID))) {
Preferences.setLong(UPDATES_LAST_VIEWED + tagData.getValue(TagData.UUID), DateUtilities.now());
Activity activity = getActivity();
if (activity instanceof TaskListActivity)
((TaskListActivity) activity).setCommentsCount(0);

@ -55,11 +55,11 @@ public class TaskCommentsFragment extends CommentsFragment {
@Override
protected Cursor getCursor() {
if (!task.containsNonNullValue(Task.REMOTE_ID))
if (!task.containsNonNullValue(Task.UUID))
return updateDao.query(Query.select(Update.PROPERTIES).where(Update.TASK_LOCAL.eq(task.getId())).orderBy(Order.desc(Update.CREATION_DATE)));
else
return updateDao.query(Query.select(Update.PROPERTIES).where(Criterion.or(
Update.TASK.eq(task.getValue(Task.REMOTE_ID)), Update.TASK_LOCAL.eq(task.getId()))).orderBy(Order.desc(Update.CREATION_DATE)));
Update.TASK.eq(task.getValue(Task.UUID)), Update.TASK_LOCAL.eq(task.getId()))).orderBy(Order.desc(Update.CREATION_DATE)));
}
@Override
@ -79,7 +79,8 @@ public class TaskCommentsFragment extends CommentsFragment {
@Override
protected void performFetch(boolean manual, Runnable done) {
actFmSyncService.fetchUpdatesForTask(task, manual, done);
done.run();
// actFmSyncService.fetchUpdatesForTask(task, manual, done);
}
@Override
@ -88,7 +89,7 @@ public class TaskCommentsFragment extends CommentsFragment {
update.setValue(Update.MESSAGE, addCommentField.getText().toString());
update.setValue(Update.ACTION_CODE, UpdateAdapter.UPDATE_TASK_COMMENT);
update.setValue(Update.USER_ID, Task.USER_ID_SELF);
if (task.containsNonNullValue(Task.REMOTE_ID))
if (task.containsNonNullValue(Task.UUID))
update.setValue(Update.TASK_UUID, task.getValue(Task.UUID));
update.setValue(Update.TASK_LOCAL, task.getId());
update.setValue(Update.CREATION_DATE, DateUtilities.now());

@ -10,7 +10,6 @@ import org.json.JSONObject;
import android.content.Context;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
@ -20,9 +19,9 @@ import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
@ -57,32 +56,6 @@ public final class ActFmDataService {
// --- task and metadata methods
/**
* Currently, this method does nothing, there is an alternate method to create tasks
* @param properties
* @return
*/
public TodorooCursor<Task> getLocallyCreated(Property<?>[] properties) {
return taskDao.query(Query.select(properties).where(Criterion.and(TaskCriteria.isActive(),
Task.REMOTE_ID.isNull())));
}
/**
* Gets tasks that were modified since last sync
* @param properties
* @return null if never sync'd
*/
public TodorooCursor<Task> getLocallyUpdated(Property<?>[] properties) {
long lastSyncDate = actFmPreferenceService.getLastSyncDate();
if(lastSyncDate == 0)
return taskDao.query(Query.select(properties).where(Criterion.none));
return
taskDao.query(Query.select(properties).
where(Criterion.and(Task.REMOTE_ID.isNotNull(),
Task.MODIFICATION_DATE.gt(lastSyncDate),
Task.MODIFICATION_DATE.gt(Task.LAST_SYNC))).groupBy(Task.ID));
}
/**
* Save / Merge JSON tagData
* @param tagObject
@ -91,8 +64,8 @@ public final class ActFmDataService {
@SuppressWarnings("nls")
public void saveTagData(JSONObject tagObject) throws JSONException {
TodorooCursor<TagData> cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where(
Criterion.or(TagData.REMOTE_ID.eq(tagObject.get("id")),
Criterion.and(TagData.REMOTE_ID.eq(0),
Criterion.or(TagData.UUID.eq(tagObject.get("id")),
Criterion.and(TagData.UUID.eq(RemoteModel.NO_UUID),
TagData.NAME.eqCaseInsensitive(tagObject.getString("name"))))));
try {
cursor.moveToNext();
@ -122,7 +95,7 @@ public final class ActFmDataService {
@SuppressWarnings("nls")
public void saveFeaturedList(JSONObject featObject) throws JSONException {
TodorooCursor<TagData> cursor = tagDataService.query(Query.select(TagData.PROPERTIES).where(
Criterion.and(Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_FEATURED).gt(0), TagData.REMOTE_ID.eq(featObject.get("id")))));
Criterion.and(Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_FEATURED).gt(0), TagData.UUID.eq(featObject.get("id")))));
try {
cursor.moveToNext();
TagData tagData = new TagData();

@ -22,13 +22,11 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.billing.BillingConstants;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
@ -42,8 +40,8 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.SubtasksUpdater;
import com.todoroo.astrid.sync.SyncResultCallback;
import com.todoroo.astrid.sync.SyncV2Provider;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.tags.TagService;
import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.utility.Flags;
/**
@ -107,7 +105,7 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
@Override
public void pushRemoteModel(User model) {
actFmSyncService.pushUser(model);
// actFmSyncService.pushUser(model);
}
};
@ -115,14 +113,14 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
@Override
public void pushRemoteModel(Metadata model) {
long taskId = model.getValue(Metadata.TASK);
Task localTask = taskService.fetchById(taskId, Task.REMOTE_ID);
long remoteTaskId = localTask.getValue(Task.REMOTE_ID);
if (model.getValue(FileMetadata.DELETION_DATE) > 0)
actFmSyncService.deleteAttachment(model);
else if (remoteTaskId > 0)
actFmSyncService.pushAttachment(remoteTaskId, model);
// long taskId = model.getValue(Metadata.TASK);
// Task localTask = taskService.fetchById(taskId, Task.REMOTE_ID);
// long remoteTaskId = localTask.getValue(Task.REMOTE_ID);
//
// if (model.getValue(FileMetadata.DELETION_DATE) > 0)
// actFmSyncService.deleteAttachment(model);
// else if (remoteTaskId > 0)
// actFmSyncService.pushAttachment(remoteTaskId, model);
};
public Metadata getRemoteModelInstance(TodorooCursor<Metadata> cursor) {
@ -239,21 +237,21 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
new Thread(new Runnable() {
@Override
public void run() {
int time = Preferences.getInt(LAST_USERS_FETCH_TIME, 0);
try {
pushQueuedUsers(callback, finisher);
time = actFmSyncService.fetchUsers();
Preferences.setInt(LAST_USERS_FETCH_TIME, time);
} catch (JSONException e) {
handler.handleException("actfm-sync", e, e.toString()); //$NON-NLS-1$
} catch (IOException e) {
handler.handleException("actfm-sync", e, e.toString()); //$NON-NLS-1$
} finally {
callback.incrementProgress(20);
if(finisher.decrementAndGet() == 0) {
finishSync(callback);
}
}
// int time = Preferences.getInt(LAST_USERS_FETCH_TIME, 0);
// try {
// pushQueuedUsers(callback, finisher);
// time = actFmSyncService.fetchUsers();
// Preferences.setInt(LAST_USERS_FETCH_TIME, time);
// } catch (JSONException e) {
// handler.handleException("actfm-sync", e, e.toString()); //$NON-NLS-1$
// } catch (IOException e) {
// handler.handleException("actfm-sync", e, e.toString()); //$NON-NLS-1$
// } finally {
// callback.incrementProgress(20);
// if(finisher.decrementAndGet() == 0) {
// finishSync(callback);
// }
// }
}
}).start();
}
@ -286,15 +284,15 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
/** fetch changes to personal updates and push unpushed updates */
private void startUpdatesFetcher(final boolean manual, final SyncResultCallback callback,
final AtomicInteger finisher) {
actFmSyncService.fetchPersonalUpdates(manual, new Runnable() { // Also pushes queued updates
@Override
public void run() {
callback.incrementProgress(20);
if (finisher.decrementAndGet() == 0) {
finishSync(callback);
}
}
});
// actFmSyncService.fetchPersonalUpdates(manual, new Runnable() { // Also pushes queued updates
// @Override
// public void run() {
// callback.incrementProgress(20);
// if (finisher.decrementAndGet() == 0) {
// finishSync(callback);
// }
// }
// });
}
/** fetch changes to tags */
@ -392,48 +390,48 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
private void pushQueuedTasks(final SyncResultCallback callback,
final AtomicInteger finisher) {
TodorooCursor<Task> taskCursor;
Query query = Query.select(Task.PROPERTIES).
where(Criterion.or(
Criterion.and(TaskCriteria.isActive(),
Task.REMOTE_ID.isNull()),
Criterion.and(Task.REMOTE_ID.isNotNull(),
Task.MODIFICATION_DATE.gt(Task.LAST_SYNC))));
taskCursor = taskService.query(query);
try {
pushQueued(callback, finisher, taskCursor, true, taskPusher);
} finally {
taskCursor.close();
}
if (ActFmPreferenceService.isPremiumUser()) {
TodorooCursor<Metadata> filesCursor = metadataService.query(Query.select(Metadata.PROPERTIES)
.where(Criterion.and(
MetadataCriteria.withKey(FileMetadata.METADATA_KEY),
Criterion.or(FileMetadata.REMOTE_ID.eq(0), FileMetadata.DELETION_DATE.gt(0)))));
try {
pushQueued(callback, finisher, filesCursor, false, filesPusher);
} finally {
filesCursor.close();
}
}
// TodorooCursor<Task> taskCursor;
// Query query = Query.select(Task.PROPERTIES).
// where(Criterion.or(
// Criterion.and(TaskCriteria.isActive(),
// Task.REMOTE_ID.isNull()),
// Criterion.and(Task.REMOTE_ID.isNotNull(),
// Task.MODIFICATION_DATE.gt(Task.LAST_SYNC))));
// taskCursor = taskService.query(query);
//
// try {
// pushQueued(callback, finisher, taskCursor, true, taskPusher);
// } finally {
// taskCursor.close();
// }
//
// if (ActFmPreferenceService.isPremiumUser()) {
// TodorooCursor<Metadata> filesCursor = metadataService.query(Query.select(Metadata.PROPERTIES)
// .where(Criterion.and(
// MetadataCriteria.withKey(FileMetadata.METADATA_KEY),
// Criterion.or(FileMetadata.REMOTE_ID.eq(0), FileMetadata.DELETION_DATE.gt(0)))));
// try {
// pushQueued(callback, finisher, filesCursor, false, filesPusher);
// } finally {
// filesCursor.close();
// }
// }
}
private void pushQueuedTags(final SyncResultCallback callback,
final AtomicInteger finisher, int lastTagSyncTime) {
TodorooCursor<TagData> tagDataCursor = tagDataService.query(Query.select(TagData.PROPERTIES)
.where(Criterion.and(
Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_FEATURED).eq(0),
Criterion.or(
TagData.REMOTE_ID.eq(0),
Criterion.and(TagData.REMOTE_ID.gt(0),
TagData.MODIFICATION_DATE.gt(lastTagSyncTime))))));
try {
pushQueued(callback, finisher, tagDataCursor, true, tagPusher);
} finally {
tagDataCursor.close();
}
// TodorooCursor<TagData> tagDataCursor = tagDataService.query(Query.select(TagData.PROPERTIES)
// .where(Criterion.and(
// Functions.bitwiseAnd(TagData.FLAGS, TagData.FLAG_FEATURED).eq(0),
// Criterion.or(
// TagData.REMOTE_ID.eq(0),
// Criterion.and(TagData.REMOTE_ID.gt(0),
// TagData.MODIFICATION_DATE.gt(lastTagSyncTime))))));
// try {
// pushQueued(callback, finisher, tagDataCursor, true, tagPusher);
// } finally {
// tagDataCursor.close();
// }
}
@ -487,24 +485,24 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
}
private void synchronizeUser(final User user, final boolean manual, final SyncResultCallback callback) {
if (user.getValue(User.REMOTE_ID) == 0)
return;
new Thread(new Runnable() {
@Override
public void run() {
callback.started();
callback.incrementMax(100);
actFmSyncService.waitUntilEmpty();
actFmSyncService.fetchTasksForUser(user, manual, new Runnable() {
public void run() {
callback.finished();
}
});
callback.incrementProgress(50);
}
}).start();
// if (user.getValue(User.REMOTE_ID) == 0)
// return;
//
// new Thread(new Runnable() {
// @Override
// public void run() {
// callback.started();
// callback.incrementMax(100);
//
// actFmSyncService.waitUntilEmpty();
// actFmSyncService.fetchTasksForUser(user, manual, new Runnable() {
// public void run() {
// callback.finished();
// }
// });
// callback.incrementProgress(50);
// }
// }).start();
}
private void fetchTagData(final TagData tagData, final boolean noRemoteId,
@ -541,14 +539,14 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
private void fetchUpdatesForTag(final TagData tagData, boolean manual, final SyncResultCallback callback,
final AtomicInteger finisher) {
actFmSyncService.fetchUpdatesForTag(tagData, manual, new Runnable() {
@Override
public void run() {
callback.incrementProgress(20);
if(finisher.decrementAndGet() == 0)
callback.finished();
}
});
// actFmSyncService.fetchUpdatesForTag(tagData, manual, new Runnable() {
// @Override
// public void run() {
// callback.incrementProgress(20);
// if(finisher.decrementAndGet() == 0)
// callback.finished();
// }
// });
}
private void fetchTasksForTag(final TagData tagData, boolean manual, final boolean pushOrder, final SyncResultCallback callback,
@ -587,19 +585,19 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
allTagged.close();
}
TodorooCursor<Task> taskCursor = taskService.query(Query.select(Task.PROPERTIES)
.join(Join.inner(Metadata.TABLE, Criterion.and(Metadata.KEY.eq(TaskToTagMetadata.KEY), Metadata.TASK.eq(Task.ID),
TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME)))))
.where(Criterion.or(
Criterion.and(TaskCriteria.isActive(),
Task.REMOTE_ID.isNull()),
Criterion.and(Task.REMOTE_ID.isNotNull(),
Task.MODIFICATION_DATE.gt(Task.LAST_SYNC)))));
try {
pushQueued(callback, finisher, taskCursor, true, taskPusher);
} finally {
taskCursor.close();
}
// TodorooCursor<Task> taskCursor = taskService.query(Query.select(Task.PROPERTIES)
// .join(Join.inner(Metadata.TABLE, Criterion.and(Metadata.KEY.eq(TaskToTagMetadata.KEY), Metadata.TASK.eq(Task.ID),
// TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tagData.getValue(TagData.NAME)))))
// .where(Criterion.or(
// Criterion.and(TaskCriteria.isActive(),
// Task.REMOTE_ID.isNull()),
// Criterion.and(Task.REMOTE_ID.isNotNull(),
// Task.MODIFICATION_DATE.gt(Task.LAST_SYNC)))));
// try {
// pushQueued(callback, finisher, taskCursor, true, taskPusher);
// } finally {
// taskCursor.close();
// }
TodorooCursor<Metadata> filesCursor = metadataService.query(Query.select(Metadata.PROPERTIES)
.where(Criterion.and(

@ -79,10 +79,10 @@ public class AstridNewSyncMigrator {
// --------------
// Then ensure that every remote model has a remote id, by generating one using the uuid generator for all those without one
// --------------
Query tagsQuery = Query.select(TagData.ID, TagData.REMOTE_ID).where(Criterion.all);
Query tagsQuery = Query.select(TagData.ID, TagData.UUID).where(Criterion.or(TagData.UUID.eq(RemoteModel.NO_UUID), TagData.UUID.isNull()));
assertUUIDsExist(tagsQuery, new TagData(), tagDataDao, null);
Query tasksQuery = Query.select(Task.ID, Task.REMOTE_ID, Task.RECURRENCE, Task.FLAGS).where(Criterion.all);
Query tasksQuery = Query.select(Task.ID, Task.UUID, Task.RECURRENCE, Task.FLAGS).where(Criterion.all);
assertUUIDsExist(tasksQuery, new Task(), taskDao, new UUIDAssertionExtras<Task>() {
@Override
public void beforeSave(Task instance) {
@ -109,7 +109,7 @@ public class AstridNewSyncMigrator {
}
});
Query updatesWithoutUUIDQuery = Query.select(Update.ID, Update.REMOTE_ID, Update.TASK).where(Criterion.all);
Query updatesWithoutUUIDQuery = Query.select(Update.ID, Update.UUID, Update.TASK).where(Criterion.all);
assertUUIDsExist(updatesWithoutUUIDQuery, new Update(), updateDao, new UUIDAssertionExtras<Update>() {
@Override
public void beforeSave(Update instance) {
@ -173,12 +173,9 @@ public class AstridNewSyncMigrator {
try {
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
instance.readPropertiesFromCursor(cursor);
if (!instance.containsNonNullValue(RemoteModel.REMOTE_ID_PROPERTY) || instance.getValue(RemoteModel.REMOTE_ID_PROPERTY) == 0) {
if (!instance.containsNonNullValue(RemoteModel.UUID_PROPERTY) || RemoteModel.NO_UUID.equals(instance.getValue(RemoteModel.UUID_PROPERTY))) {
// No remote id exists, just create a UUID
instance.setValue(RemoteModel.UUID_PROPERTY, UUIDHelper.newUUID());
} else {
// Migrate remote id to uuid field
instance.setValue(RemoteModel.UUID_PROPERTY, Long.toString(instance.getValue(RemoteModel.REMOTE_ID_PROPERTY)));
}
if (extras != null)
extras.beforeSave(instance);

@ -416,13 +416,15 @@ public class EditNoteActivity extends LinearLayout implements TimerActionListene
}
actFmSyncService.fetchUpdatesForTask(task, manual, new Runnable() {
@Override
public void run() {
// actFmSyncService.fetchUpdatesForTask(task, manual, new Runnable() {
// @Override
// public void run() {
// callback.incrementProgress(50);
// callback.finished();
// }
// });
callback.incrementProgress(50);
callback.finished();
}
});
callback.incrementProgress(50);
}

@ -86,7 +86,7 @@ public class PeopleFilterExposer extends BroadcastReceiver {
String email = user.getValue(User.EMAIL);
Criterion criterion;
if (TextUtils.isEmpty(email) || "null".equals(email))
criterion = Task.USER_ID.eq(user.getValue(User.REMOTE_ID));
criterion = Task.USER_ID.eq(user.getValue(User.UUID));
else
criterion = Criterion.or(Task.USER_ID.eq(user.getValue(User.UUID)),
Task.USER.like("%" + email + "%")); // Deprecated field OK for backwards compatibility

@ -203,7 +203,7 @@ public class PersonViewFragment extends TaskListFragment {
public void run() {
// TODO: Fix friend status logic for new sync scheme
if (!TextUtils.isEmpty(user.getValue(User.PENDING_STATUS))) {
actFmSyncService.pushUser(user);
// actFmSyncService.pushUser(user);
user = userDao.fetch(user.getId(), User.PROPERTIES);
}
// SyncResultCallback callback;

@ -147,23 +147,23 @@ public class SubtasksHelper {
if (localToRemote)
criterion = Task.ID.in(localIds);
else
criterion = Task.REMOTE_ID.in(localIds);
criterion = Task.UUID.in(localIds);
TodorooCursor<Task> tasks = PluginServices.getTaskService().query(Query.select(Task.ID, Task.REMOTE_ID).where(criterion));
TodorooCursor<Task> tasks = PluginServices.getTaskService().query(Query.select(Task.ID, Task.UUID).where(criterion));
try {
Task t = new Task();
for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
t.clear();
t.readFromCursor(tasks);
if (t.containsNonNullValue(Task.REMOTE_ID)) {
if (t.containsNonNullValue(Task.UUID)) {
Long key;
Long value;
if (localToRemote) {
key = t.getId();
value = t.getValue(Task.REMOTE_ID);
value = Long.parseLong(t.getValue(Task.UUID));
} else {
key = t.getValue(Task.REMOTE_ID);
key = Long.parseLong(t.getValue(Task.UUID));
value = t.getId();
}

@ -53,8 +53,8 @@ public class TagCaseMigrator {
if (first.tag.equalsIgnoreCase(second.tag)) {
shouldShowDialog = true;
markForRenaming(first.tag, first.remoteId);
markForRenaming(second.tag, second.remoteId);
markForRenaming(first.tag, Long.parseLong(first.uuid));
markForRenaming(second.tag, Long.parseLong(second.uuid));
}
}
@ -92,9 +92,9 @@ public class TagCaseMigrator {
private void updateTagData(String tag) {
long remoteId = nameToRemoteId.get(tag);
TodorooCursor<TagData> tagData = tagDataService.query(Query.select(TagData.NAME, TagData.REMOTE_ID)
TodorooCursor<TagData> tagData = tagDataService.query(Query.select(TagData.NAME, TagData.UUID)
.where(Criterion.and(
TagData.NAME.eq(tag), TagData.REMOTE_ID.eq(remoteId))));
TagData.NAME.eq(tag), TagData.UUID.eq(remoteId))));
try {
for (tagData.moveToFirst(); !tagData.isAfterLast(); tagData.moveToNext()) {
TagData curr = new TagData(tagData);

@ -111,8 +111,6 @@ public final class TagService {
public String userId;
public long memberCount;
@Deprecated public long remoteId;
public static Tag tagFromUUID(String uuid) {
TodorooCursor<TagData> tagData = PluginServices.getTagDataService().query(Query.select(TagData.PROPERTIES).where(TagData.UUID.eq(uuid)));
try {
@ -132,7 +130,6 @@ public final class TagService {
id = tagData.getId();
tag = tagData.getValue(TagData.NAME);
count = tagData.getValue(TagData.TASK_COUNT);
remoteId = tagData.getValue(TagData.REMOTE_ID);
uuid = tagData.getValue(TagData.UUID);
image = tagData.getPictureUrl(TagData.PICTURE, RemoteModel.PICTURE_THUMB);
userId = tagData.getValue(TagData.USER_ID);

@ -207,7 +207,7 @@ public class Database extends AbstractDatabase {
database.execSQL(createTableSql(visitor, Update.TABLE.name, Update.PROPERTIES));
onCreateTables();
Property<?>[] properties = new Property<?>[] { Task.REMOTE_ID,
Property<?>[] properties = new Property<?>[] { Task.UUID,
Task.USER_ID };
for(Property<?> property : properties) {
@ -291,7 +291,7 @@ public class Database extends AbstractDatabase {
case 20: try {
String tasks = Task.TABLE.name;
String id = Task.ID.name;
String remoteId = Task.REMOTE_ID.name;
String remoteId = Task.UUID.name;
// Delete any items that have duplicate remote ids
String deleteDuplicates = String.format("DELETE FROM %s WHERE %s IN (SELECT %s.%s FROM %s, %s AS t2 WHERE %s.%s < t2.%s AND %s.%s = t2.%s AND %s.%s > 0 GROUP BY %s.%s)",
@ -363,18 +363,14 @@ public class Database extends AbstractDatabase {
database.execSQL(createTableSql(visitor, TagMetadata.TABLE.name, TagMetadata.PROPERTIES));
database.execSQL(addColumnSql(Task.TABLE, Task.PUSHED_AT, visitor, null));
database.execSQL(addColumnSql(Task.TABLE, Task.UUID, visitor, null));
database.execSQL(addColumnSql(Task.TABLE, Task.IS_PUBLIC, visitor, "0"));
database.execSQL(addColumnSql(Task.TABLE, Task.IS_READONLY, visitor, "0"));
database.execSQL(addColumnSql(Task.TABLE, Task.CLASSIFICATION, visitor, null));
database.execSQL(addColumnSql(TagData.TABLE, TagData.PUSHED_AT, visitor, null));
database.execSQL(addColumnSql(TagData.TABLE, TagData.UUID, visitor, null));
database.execSQL(addColumnSql(Update.TABLE, Update.PUSHED_AT, visitor, null));
database.execSQL(addColumnSql(Update.TABLE, Update.UUID, visitor, null));
database.execSQL(addColumnSql(Update.TABLE, Update.TASK_UUID, visitor, null));
database.execSQL(addColumnSql(Metadata.TABLE, Metadata.DELETION_DATE, visitor, "0"));
database.execSQL(addColumnSql(User.TABLE, User.PUSHED_AT, visitor, null));
database.execSQL(addColumnSql(User.TABLE, User.UUID, visitor, null));
database.execSQL(addColumnSql(User.TABLE, User.FIRST_NAME, visitor, null));
database.execSQL(addColumnSql(User.TABLE, User.LAST_NAME, visitor, null));
} catch (SQLiteException e) {

@ -300,14 +300,14 @@ public class StartupService {
// For some reason these properties are missing for some users.
// Make them exist!
try {
TodorooCursor<Task> tasks = taskService.query(Query.select(Task.REMOTE_ID, Task.USER_ID, Task.USER).limit(1));
TodorooCursor<Task> tasks = taskService.query(Query.select(Task.UUID, Task.USER_ID, Task.USER).limit(1));
try {
System.err.println(tasks.getCount());
} finally {
tasks.close();
}
} catch (SQLiteException e) {
database.tryAddColumn(Task.TABLE, Task.REMOTE_ID, "0"); //$NON-NLS-1$
database.tryAddColumn(Task.TABLE, Task.UUID, "'0'"); //$NON-NLS-1$
database.tryAddColumn(Task.TABLE, Task.USER_ID, "0"); //$NON-NLS-1$
database.tryAddColumn(Task.TABLE, Task.USER, null);
}

@ -14,21 +14,21 @@ public class SubtasksHelperTest extends SubtasksTestCase {
updater.initializeFromSerializedTree(SubtasksUpdater.ACTIVE_TASKS_ORDER, filter, DEFAULT_SERIALIZED_TREE);
}
private Task createTask(String title, long remoteId) {
private Task createTask(String title, String uuid) {
Task t = new Task();
t.setValue(Task.TITLE, title);
t.setValue(Task.REMOTE_ID, remoteId);
t.setValue(Task.UUID, uuid);
PluginServices.getTaskService().save(t);
return t;
}
private void createTasks() {
A = createTask("A", 6); // Local id 1
B = createTask("B", 4); // Local id 2
C = createTask("C", 3); // Local id 3
D = createTask("D", 1); // Local id 4
E = createTask("E", 2); // Local id 5
F = createTask("F", 5); // Local id 6
A = createTask("A", "6"); // Local id 1
B = createTask("B", "4"); // Local id 2
C = createTask("C", "3"); // Local id 3
D = createTask("D", "1"); // Local id 4
E = createTask("E", "2"); // Local id 5
F = createTask("F", "5"); // Local id 6
}
private static final Long[] EXPECTED_ORDER = {-1L, 1L, 2L, 3L, 4L, 5L, 6L };

Loading…
Cancel
Save