|
|
@ -5,14 +5,21 @@
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package com.todoroo.astrid.dao;
|
|
|
|
package com.todoroo.astrid.dao;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.ContentValues;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.todoroo.andlib.data.AbstractModel;
|
|
|
|
import com.todoroo.andlib.data.DatabaseDao;
|
|
|
|
import com.todoroo.andlib.data.DatabaseDao;
|
|
|
|
import com.todoroo.andlib.service.Autowired;
|
|
|
|
import com.todoroo.andlib.service.Autowired;
|
|
|
|
import com.todoroo.andlib.service.DependencyInjectionService;
|
|
|
|
import com.todoroo.andlib.service.DependencyInjectionService;
|
|
|
|
import com.todoroo.andlib.sql.Criterion;
|
|
|
|
import com.todoroo.andlib.sql.Criterion;
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
|
|
|
|
import com.todoroo.astrid.data.Metadata;
|
|
|
|
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.SyncFlags;
|
|
|
|
import com.todoroo.astrid.data.TagMetadata;
|
|
|
|
import com.todoroo.astrid.data.TagMetadata;
|
|
|
|
|
|
|
|
import com.todoroo.astrid.data.TagOutstanding;
|
|
|
|
import com.todoroo.astrid.tags.TagMemberMetadata;
|
|
|
|
import com.todoroo.astrid.tags.TagMemberMetadata;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -50,17 +57,53 @@ public class TagMetadataDao extends DatabaseDao<TagMetadata> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void createMemberLink(String tagUuid, String memberId) {
|
|
|
|
@Override
|
|
|
|
TagMetadata newMetadata = TagMemberMetadata.newMemberMetadata(tagUuid, memberId);
|
|
|
|
protected boolean shouldRecordOutstanding(TagMetadata item) {
|
|
|
|
|
|
|
|
ContentValues cv = item.getSetValues();
|
|
|
|
|
|
|
|
return super.shouldRecordOutstanding(item) && cv != null &&
|
|
|
|
|
|
|
|
((cv.containsKey(TagMetadata.KEY.name) &&
|
|
|
|
|
|
|
|
TagMemberMetadata.KEY.equals(item.getValue(TagMetadata.KEY))) ||
|
|
|
|
|
|
|
|
(cv.containsKey(TagMetadata.DELETION_DATE.name) &&
|
|
|
|
|
|
|
|
item.getValue(TagMetadata.DELETION_DATE) > 0));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
protected boolean createOutstandingEntries(long modelId, ContentValues modelSetValues) {
|
|
|
|
|
|
|
|
Long tagDataId = modelSetValues.getAsLong(TagMetadata.TAG_ID.name);
|
|
|
|
|
|
|
|
String memberId = modelSetValues.getAsString(TagMemberMetadata.USER_UUID.name);
|
|
|
|
|
|
|
|
Long deletionDate = modelSetValues.getAsLong(TagMetadata.DELETION_DATE.name);
|
|
|
|
|
|
|
|
if (tagDataId == null || tagDataId == AbstractModel.NO_ID || RemoteModel.isUuidEmpty(memberId))
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TagOutstanding to = new TagOutstanding();
|
|
|
|
|
|
|
|
to.setValue(OutstandingEntry.ENTITY_ID_PROPERTY, tagDataId);
|
|
|
|
|
|
|
|
to.setValue(OutstandingEntry.CREATED_AT_PROPERTY, DateUtilities.now());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String addedOrRemoved = NameMaps.MEMBER_ADDED_COLUMN;
|
|
|
|
|
|
|
|
if (deletionDate != null && deletionDate > 0)
|
|
|
|
|
|
|
|
addedOrRemoved = NameMaps.MEMBER_REMOVED_COLUMN;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to.setValue(OutstandingEntry.COLUMN_STRING_PROPERTY, addedOrRemoved);
|
|
|
|
|
|
|
|
to.setValue(OutstandingEntry.VALUE_STRING_PROPERTY, memberId);
|
|
|
|
|
|
|
|
database.insert(outstandingTable.name, null, to.getSetValues());
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void createMemberLink(long tagId, String tagUuid, String memberId, boolean suppressOutstanding) {
|
|
|
|
|
|
|
|
TagMetadata newMetadata = TagMemberMetadata.newMemberMetadata(tagId, tagUuid, memberId);
|
|
|
|
|
|
|
|
if (suppressOutstanding)
|
|
|
|
|
|
|
|
newMetadata.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
if (update(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY),
|
|
|
|
if (update(Criterion.and(TagMetadataCriteria.byTagAndWithKey(tagUuid, TagMemberMetadata.KEY),
|
|
|
|
TagMemberMetadata.USER_UUID.eq(memberId)), newMetadata) <= 0) {
|
|
|
|
TagMemberMetadata.USER_UUID.eq(memberId)), newMetadata) <= 0) {
|
|
|
|
|
|
|
|
if (suppressOutstanding)
|
|
|
|
|
|
|
|
newMetadata.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
createNew(newMetadata);
|
|
|
|
createNew(newMetadata);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void removeMemberLinks(String tagUuid, String[] memberIds, boolean suppressOutstanding) {
|
|
|
|
public void removeMemberLinks(long tagId, String tagUuid, String[] memberIds, boolean suppressOutstanding) {
|
|
|
|
TagMetadata deleteTemplate = new TagMetadata();
|
|
|
|
TagMetadata deleteTemplate = new TagMetadata();
|
|
|
|
deleteTemplate.setValue(TagMetadata.TAG_UUID, tagUuid); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(TagMetadata.TAG_ID, tagId); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
|
|
|
|
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
|
|
|
|
if (memberIds != null) {
|
|
|
|
if (memberIds != null) {
|
|
|
|
for (String uuid : memberIds) {
|
|
|
|
for (String uuid : memberIds) {
|
|
|
|