Improved checking of whether outstanding entries should be recorded; added unit test for ReplayOutstandingEntries

pull/14/head
Sam Bosley 12 years ago
parent bc7ee6f4e7
commit ed28990e1e

@ -124,6 +124,15 @@ public class NameMaps {
return map.get(col);
}
public static boolean shouldRecordOutstandingColumnForTable(String table, String column) {
if (TABLE_ID_TASKS.equals(table)) {
return TASK_COLUMN_NAMES_TO_PROPERTIES.containsKey(column);
} else if (TABLE_ID_TAGS.equals(table)) {
return TAG_DATA_COLUMN_NAMES_TO_PROPERTIES.containsKey(column);
}
return false;
}
public static String localColumnNameToServerColumnName(String table, String localColumn) {
return mapColumnName(table, localColumn, TASK_COLUMNS_LOCAL_TO_SERVER, TAG_DATA_COLUMNS_LOCAL_TO_SERVER);
}

@ -8,7 +8,7 @@ package com.todoroo.astrid.dao;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.data.TagData;
/**
@ -28,15 +28,9 @@ public class TagDataDao extends RemoteModelDao<TagData> {
setDatabase(database);
}
private static final String[] IGNORE_OUTSTANDING_COLUMNS = new String[] {
TagData.MODIFICATION_DATE.name,
TagData.UUID.name,
TagData.PUSHED_AT.name,
};
@Override
protected boolean shouldRecordOutstandingEntry(String columnName) {
return AndroidUtilities.indexOf(IGNORE_OUTSTANDING_COLUMNS, columnName) < 0;
return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TAGS, columnName);
}
// --- SQL clause generators

@ -20,9 +20,9 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.data.Task;
@ -315,21 +315,9 @@ public class TaskDao extends RemoteModelDao<Task> {
Task.RECURRENCE
};
private static final String[] IGNORE_OUTSTANDING_COLUMNS = new String[] {
Task.MODIFICATION_DATE.name,
Task.DETAILS.name,
Task.DETAILS_DATE.name,
Task.CALENDAR_URI.name,
Task.UUID.name,
Task.PUSHED_AT.name,
Task.LAST_SYNC.name,
Task.ESTIMATED_SECONDS.name,
Task.TIMER_START.name,
};
@Override
protected boolean shouldRecordOutstandingEntry(String columnName) {
return AndroidUtilities.indexOf(IGNORE_OUTSTANDING_COLUMNS, columnName) < 0;
return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TASKS, columnName);
}
public void saveExistingWithSqlConstraintCheck(Task item) {

@ -25,6 +25,7 @@ public class NewSyncTestCase extends DatabaseTestCase {
protected Task createTask(String title, boolean suppress) {
Task task = new Task();
task.setValue(Task.TITLE, title);
task.setValue(Task.IMPORTANCE, SYNC_TASK_IMPORTANCE);
if (suppress)
task.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
@ -36,8 +37,11 @@ public class NewSyncTestCase extends DatabaseTestCase {
return createTask(false);
}
public static final String SYNC_TASK_TITLE = "new title";
public static final int SYNC_TASK_IMPORTANCE = Task.IMPORTANCE_MUST_DO;
protected Task createTask(boolean suppress) {
return createTask("new title", suppress);
return createTask(SYNC_TASK_TITLE, suppress);
}
protected TagData createTagData(String name, boolean suppress) {

@ -7,9 +7,13 @@ import org.json.JSONObject;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.actfm.sync.messages.ReplayOutstandingEntries;
import com.todoroo.astrid.actfm.sync.messages.ServerToClientMessage;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
public class SyncMessageTest extends NewSyncTestCase {
@ -64,4 +68,19 @@ public class SyncMessageTest extends NewSyncTestCase {
}
}
public void testReplayOutstandingEntries() {
Task t = createTask();
t.setValue(Task.TITLE, "change title");
t.setValue(Task.IMPORTANCE, Task.IMPORTANCE_NONE);
t.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
taskDao.save(t);
new ReplayOutstandingEntries<Task, TaskOutstanding>(Task.class, NameMaps.TABLE_ID_TASKS, taskDao, taskOutstandingDao).execute();
t = taskDao.fetch(t.getId(), Task.TITLE, Task.IMPORTANCE);
assertEquals(SYNC_TASK_TITLE, t.getValue(Task.TITLE));
assertEquals(SYNC_TASK_IMPORTANCE, t.getValue(Task.IMPORTANCE).intValue());
}
}

Loading…
Cancel
Save