Fixed some queries to use deletion_date correctly, enqueue changes happened when tags or members added to metadata tables

pull/14/head
Sam Bosley 12 years ago
parent f010730549
commit 0f4b94011b

@ -38,6 +38,7 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
@ -49,6 +50,7 @@ import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.ShortcutActivity;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TagMetadataDao;
import com.todoroo.astrid.dao.TagMetadataDao.TagMetadataCriteria;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
@ -428,7 +430,7 @@ public class TagSettingsActivity extends FragmentActivity {
people = new JSONArray();
TodorooCursor<User> members = userDao.query(Query.select(User.PROPERTIES)
.where(User.UUID.in(Query.select(TagMemberMetadata.USER_UUID)
.from(TagMetadata.TABLE).where(TagMetadata.TAG_UUID.eq(tagUuid)))));
.from(TagMetadata.TABLE).where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY), TagMetadata.DELETION_DATE.eq(0))))));
try {
User user = new User();
for (members.moveToFirst(); !members.isAfterLast(); members.moveToNext()) {
@ -445,6 +447,28 @@ public class TagSettingsActivity extends FragmentActivity {
} finally {
members.close();
}
TodorooCursor<TagMetadata> emailMembers = tagMetadataDao.query(Query.select(TagMemberMetadata.USER_UUID)
.where(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY),
TagMetadata.DELETION_DATE.eq(0),
TagMemberMetadata.USER_UUID.like("%@%"))));
try {
TagMetadata m = new TagMetadata();
for (emailMembers.moveToFirst(); !emailMembers.isAfterLast(); emailMembers.moveToNext()) {
m.clear();
m.readFromCursor(emailMembers);
try {
JSONObject userJson = new JSONObject();
userJson.put("email", m.getValue(TagMemberMetadata.USER_UUID));
people.put(userJson);
} catch (JSONException e2) {
//
}
}
} finally {
emailMembers.close();
}
}
}

@ -91,9 +91,13 @@ public final class PluginServices {
DependencyInjectionService.getInstance().inject(this);
}
private synchronized static PluginServices getInstance() {
if(instance == null)
instance = new PluginServices();
private static PluginServices getInstance() {
if(instance == null) {
synchronized (PluginServices.class) {
if (instance == null)
instance = new PluginServices();
}
}
return instance;
}

@ -19,7 +19,10 @@ import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.OutstandingEntry;
import com.todoroo.astrid.data.RemoteModel;
@ -102,6 +105,8 @@ public class MetadataDao extends DatabaseDao<Metadata> {
to.setValue(OutstandingEntry.COLUMN_STRING_PROPERTY, addedOrRemoved);
to.setValue(OutstandingEntry.VALUE_STRING_PROPERTY, tagUuid);
database.insert(outstandingTable.name, null, to.getSetValues());
ActFmSyncThread.getInstance().enqueueMessage(new ChangesHappened<Task, TaskOutstanding>(taskId, Task.class,
PluginServices.getTaskDao(), PluginServices.getTaskOutstandingDao()));
return true;
}

@ -22,11 +22,15 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.actfm.sync.ActFmSyncThread;
import com.todoroo.astrid.actfm.sync.messages.ChangesHappened;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.OutstandingEntry;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagMetadata;
import com.todoroo.astrid.data.TagOutstanding;
import com.todoroo.astrid.tags.TagMemberMetadata;
@ -95,6 +99,8 @@ public class TagMetadataDao extends DatabaseDao<TagMetadata> {
to.setValue(OutstandingEntry.COLUMN_STRING_PROPERTY, addedOrRemoved);
to.setValue(OutstandingEntry.VALUE_STRING_PROPERTY, memberId);
database.insert(outstandingTable.name, null, to.getSetValues());
ActFmSyncThread.getInstance().enqueueMessage(new ChangesHappened<TagData, TagOutstanding>(tagDataId, TagData.class,
PluginServices.getTagDataDao(), PluginServices.getTagOutstandingDao()));
return true;
}

Loading…
Cancel
Save