Validate certain values in ChangesHappened so we can know whether or not to kill the message (e.g. for empty task titles)

pull/14/head
Sam Bosley 11 years ago
parent 3af22f6ca9
commit 52c12a55f3

@ -140,7 +140,11 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
if (serverColumn == null)
throw new RuntimeException("No server column found for local column " + localColumn + " in table " + table);
changeJson.put("value", localProperty.accept(visitor, change));
Object value = localProperty.accept(visitor, change);
if (!validateValue(localProperty, value))
return null;
changeJson.put("value", value);
}
changeJson.put("column", serverColumn);
@ -176,6 +180,16 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
}
}
// Return false if value is detected to be something that would definitely cause a server error
// (e.g. empty task title, etc.)
private boolean validateValue(Property<?> property, Object value) {
if (Task.TITLE.equals(property)) {
if (!(value instanceof String) || TextUtils.isEmpty((String) value))
return false;
}
return true;
}
private JSONObject getFileJson(String value) {
try {
JSONObject obj = new JSONObject(value);

@ -35,12 +35,14 @@ import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.TaskOutstandingDao;
import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.History;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.gcal.GCalHelper;
@ -78,6 +80,9 @@ public class TaskService {
@Autowired
private TaskDao taskDao;
@Autowired
private TaskOutstandingDao taskOutstandingDao;
@Autowired
private MetadataDao metadataDao;
@ -242,6 +247,7 @@ public class TaskService {
return;
else if(item.containsValue(Task.TITLE) && item.getValue(Task.TITLE).length() == 0) {
taskDao.delete(item.getId());
taskOutstandingDao.deleteWhere(TaskOutstanding.ENTITY_ID_PROPERTY.eq(item.getId()));
item.setId(Task.NO_ID);
} else {
long id = item.getId();

Loading…
Cancel
Save