|
|
@ -93,7 +93,7 @@ public final class TagService {
|
|
|
|
* Property for retrieving count of aggregated rows
|
|
|
|
* Property for retrieving count of aggregated rows
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private static final CountProperty COUNT = new CountProperty();
|
|
|
|
private static final CountProperty COUNT = new CountProperty();
|
|
|
|
public static final Order GROUPED_TAGS_BY_ALPHA = Order.asc(Functions.upper(TagMetadata.TAG_NAME));
|
|
|
|
public static final Order GROUPED_TAGS_BY_ALPHA = Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME));
|
|
|
|
public static final Order GROUPED_TAGS_BY_SIZE = Order.desc(COUNT);
|
|
|
|
public static final Order GROUPED_TAGS_BY_SIZE = Order.desc(COUNT);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -152,11 +152,11 @@ public final class TagService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public QueryTemplate queryTemplate(Criterion criterion) {
|
|
|
|
public QueryTemplate queryTemplate(Criterion criterion) {
|
|
|
|
Criterion fullCriterion = Criterion.and(
|
|
|
|
Criterion fullCriterion = Criterion.and(
|
|
|
|
Field.field("mtags." + Metadata.KEY.name).eq(TagMetadata.KEY),
|
|
|
|
Field.field("mtags." + Metadata.KEY.name).eq(TaskToTagMetadata.KEY),
|
|
|
|
Field.field("mtags." + TagMetadata.TAG_UUID.name).eq(uuid),
|
|
|
|
Field.field("mtags." + TaskToTagMetadata.TAG_UUID.name).eq(uuid),
|
|
|
|
Field.field("mtags." + Metadata.DELETION_DATE.name).eq(0),
|
|
|
|
Field.field("mtags." + Metadata.DELETION_DATE.name).eq(0),
|
|
|
|
criterion);
|
|
|
|
criterion);
|
|
|
|
return new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), Task.UUID.eq(Field.field("mtags." + TagMetadata.TASK_UUID.name))))
|
|
|
|
return new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), Task.UUID.eq(Field.field("mtags." + TaskToTagMetadata.TASK_UUID.name))))
|
|
|
|
.where(fullCriterion);
|
|
|
|
.where(fullCriterion);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -165,13 +165,13 @@ public final class TagService {
|
|
|
|
@Deprecated
|
|
|
|
@Deprecated
|
|
|
|
private static Criterion tagEq(String tag, Criterion additionalCriterion) {
|
|
|
|
private static Criterion tagEq(String tag, Criterion additionalCriterion) {
|
|
|
|
return Criterion.and(
|
|
|
|
return Criterion.and(
|
|
|
|
MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eq(tag),
|
|
|
|
MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eq(tag),
|
|
|
|
additionalCriterion);
|
|
|
|
additionalCriterion);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static Criterion tagEqIgnoreCase(String tag, Criterion additionalCriterion) {
|
|
|
|
public static Criterion tagEqIgnoreCase(String tag, Criterion additionalCriterion) {
|
|
|
|
return Criterion.and(
|
|
|
|
return Criterion.and(
|
|
|
|
MetadataCriteria.withKey(TagMetadata.KEY), TagMetadata.TAG_NAME.eqCaseInsensitive(tag),
|
|
|
|
MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_NAME.eqCaseInsensitive(tag),
|
|
|
|
additionalCriterion);
|
|
|
|
additionalCriterion);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -179,8 +179,8 @@ public final class TagService {
|
|
|
|
String[] emergentTags = getEmergentTagIds();
|
|
|
|
String[] emergentTags = getEmergentTagIds();
|
|
|
|
|
|
|
|
|
|
|
|
return new QueryTemplate().where(Criterion.and(
|
|
|
|
return new QueryTemplate().where(Criterion.and(
|
|
|
|
Criterion.not(Task.UUID.in(Query.select(TagMetadata.TASK_UUID).from(Metadata.TABLE)
|
|
|
|
Criterion.not(Task.UUID.in(Query.select(TaskToTagMetadata.TASK_UUID).from(Metadata.TABLE)
|
|
|
|
.where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0), Criterion.not(TagMetadata.TAG_UUID.in(emergentTags)))))),
|
|
|
|
.where(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0), Criterion.not(TaskToTagMetadata.TAG_UUID.in(emergentTags)))))),
|
|
|
|
TaskCriteria.isActive(),
|
|
|
|
TaskCriteria.isActive(),
|
|
|
|
TaskApiDao.TaskCriteria.ownedByMe(),
|
|
|
|
TaskApiDao.TaskCriteria.ownedByMe(),
|
|
|
|
TaskCriteria.isVisible()));
|
|
|
|
TaskCriteria.isVisible()));
|
|
|
@ -197,19 +197,19 @@ public final class TagService {
|
|
|
|
public Tag[] getGroupedTags(Order order, Criterion activeStatus, boolean includeEmergent) {
|
|
|
|
public Tag[] getGroupedTags(Order order, Criterion activeStatus, boolean includeEmergent) {
|
|
|
|
Criterion criterion;
|
|
|
|
Criterion criterion;
|
|
|
|
if (includeEmergent)
|
|
|
|
if (includeEmergent)
|
|
|
|
criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TagMetadata.KEY));
|
|
|
|
criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TaskToTagMetadata.KEY));
|
|
|
|
else
|
|
|
|
else
|
|
|
|
criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TagMetadata.KEY), Criterion.not(TagMetadata.TAG_UUID.in(getEmergentTagIds())));
|
|
|
|
criterion = Criterion.and(activeStatus, MetadataCriteria.withKey(TaskToTagMetadata.KEY), Criterion.not(TaskToTagMetadata.TAG_UUID.in(getEmergentTagIds())));
|
|
|
|
Query query = Query.select(TagMetadata.TAG_NAME, TagMetadata.TAG_UUID, COUNT).
|
|
|
|
Query query = Query.select(TaskToTagMetadata.TAG_NAME, TaskToTagMetadata.TAG_UUID, COUNT).
|
|
|
|
join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))).
|
|
|
|
join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))).
|
|
|
|
where(criterion).
|
|
|
|
where(criterion).
|
|
|
|
orderBy(order).groupBy(TagMetadata.TAG_NAME);
|
|
|
|
orderBy(order).groupBy(TaskToTagMetadata.TAG_NAME);
|
|
|
|
TodorooCursor<Metadata> cursor = metadataDao.query(query);
|
|
|
|
TodorooCursor<Metadata> cursor = metadataDao.query(query);
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
ArrayList<Tag> array = new ArrayList<Tag>();
|
|
|
|
ArrayList<Tag> array = new ArrayList<Tag>();
|
|
|
|
for (int i = 0; i < cursor.getCount(); i++) {
|
|
|
|
for (int i = 0; i < cursor.getCount(); i++) {
|
|
|
|
cursor.moveToNext();
|
|
|
|
cursor.moveToNext();
|
|
|
|
Tag tag = Tag.tagFromUUID(cursor.get(TagMetadata.TAG_UUID));
|
|
|
|
Tag tag = Tag.tagFromUUID(cursor.get(TaskToTagMetadata.TAG_UUID));
|
|
|
|
if (tag != null)
|
|
|
|
if (tag != null)
|
|
|
|
array.add(tag);
|
|
|
|
array.add(tag);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -258,9 +258,9 @@ public final class TagService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void createLink(Task task, String tagName, String tagUuid) {
|
|
|
|
public void createLink(Task task, String tagName, String tagUuid) {
|
|
|
|
Metadata link = TagMetadata.newTagMetadata(task.getId(), task.getUuid(), tagName, tagUuid);
|
|
|
|
Metadata link = TaskToTagMetadata.newTagMetadata(task.getId(), task.getUuid(), tagName, tagUuid);
|
|
|
|
if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(task.getId(), TagMetadata.KEY),
|
|
|
|
if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(task.getId(), TaskToTagMetadata.KEY),
|
|
|
|
TagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
|
|
|
|
TaskToTagMetadata.TASK_UUID.eq(task.getValue(Task.UUID)), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
|
|
|
|
metadataDao.createNew(link);
|
|
|
|
metadataDao.createNew(link);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -282,11 +282,11 @@ public final class TagService {
|
|
|
|
name = tagData.getValue(TagData.NAME);
|
|
|
|
name = tagData.getValue(TagData.NAME);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Metadata link = TagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid);
|
|
|
|
Metadata link = TaskToTagMetadata.newTagMetadata(taskId, taskUuid, name, tagUuid);
|
|
|
|
if (suppressOutstanding)
|
|
|
|
if (suppressOutstanding)
|
|
|
|
link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY),
|
|
|
|
if (metadataDao.update(Criterion.and(MetadataCriteria.byTaskAndwithKey(taskId, TaskToTagMetadata.KEY),
|
|
|
|
TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
|
|
|
|
TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), link) <= 0) {
|
|
|
|
if (suppressOutstanding)
|
|
|
|
if (suppressOutstanding)
|
|
|
|
link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
link.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
metadataDao.createNew(link);
|
|
|
|
metadataDao.createNew(link);
|
|
|
@ -307,10 +307,10 @@ public final class TagService {
|
|
|
|
if (suppressOutstanding)
|
|
|
|
if (suppressOutstanding)
|
|
|
|
deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
deleteTemplate.setValue(Metadata.TASK, taskId); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(Metadata.TASK, taskId); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(TagMetadata.TAG_UUID, tagUuid); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(TaskToTagMetadata.TAG_UUID, tagUuid); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
|
|
|
|
deleteTemplate.setValue(Metadata.DELETION_DATE, DateUtilities.now());
|
|
|
|
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
|
|
|
|
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
|
|
|
|
TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(tagUuid)), deleteTemplate);
|
|
|
|
TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(tagUuid)), deleteTemplate);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -326,11 +326,11 @@ public final class TagService {
|
|
|
|
for (String uuid : tagUuids) {
|
|
|
|
for (String uuid : tagUuids) {
|
|
|
|
// TODO: Right now this is in a loop because each deleteTemplate needs the individual tagUuid in order to record
|
|
|
|
// TODO: Right now this is in a loop because each deleteTemplate needs the individual tagUuid in order to record
|
|
|
|
// the outstanding entry correctly. If possible, this should be improved to a single query
|
|
|
|
// the outstanding entry correctly. If possible, this should be improved to a single query
|
|
|
|
deleteTemplate.setValue(TagMetadata.TAG_UUID, uuid); // Need this for recording changes in outstanding table
|
|
|
|
deleteTemplate.setValue(TaskToTagMetadata.TAG_UUID, uuid); // Need this for recording changes in outstanding table
|
|
|
|
if (suppressOutstanding)
|
|
|
|
if (suppressOutstanding)
|
|
|
|
deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
deleteTemplate.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
|
|
|
|
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
|
|
|
|
metadataDao.update(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY), Metadata.DELETION_DATE.eq(0),
|
|
|
|
TagMetadata.TASK_UUID.eq(taskUuid), TagMetadata.TAG_UUID.eq(uuid)), deleteTemplate);
|
|
|
|
TaskToTagMetadata.TASK_UUID.eq(taskUuid), TaskToTagMetadata.TAG_UUID.eq(uuid)), deleteTemplate);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -344,21 +344,21 @@ public final class TagService {
|
|
|
|
public TodorooCursor<Metadata> getTags(long taskId, boolean includeEmergent) {
|
|
|
|
public TodorooCursor<Metadata> getTags(long taskId, boolean includeEmergent) {
|
|
|
|
Criterion criterion;
|
|
|
|
Criterion criterion;
|
|
|
|
if (includeEmergent)
|
|
|
|
if (includeEmergent)
|
|
|
|
criterion = Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
|
|
|
|
criterion = Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
MetadataCriteria.byTask(taskId));
|
|
|
|
MetadataCriteria.byTask(taskId));
|
|
|
|
else
|
|
|
|
else
|
|
|
|
criterion = Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
|
|
|
|
criterion = Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
MetadataCriteria.byTask(taskId), Criterion.not(TagMetadata.TAG_UUID.in(getEmergentTagIds())));
|
|
|
|
MetadataCriteria.byTask(taskId), Criterion.not(TaskToTagMetadata.TAG_UUID.in(getEmergentTagIds())));
|
|
|
|
Query query = Query.select(TagMetadata.TAG_NAME, TagMetadata.TAG_UUID).where(criterion).orderBy(Order.asc(Functions.upper(TagMetadata.TAG_NAME)));
|
|
|
|
Query query = Query.select(TaskToTagMetadata.TAG_NAME, TaskToTagMetadata.TAG_UUID).where(criterion).orderBy(Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME)));
|
|
|
|
return metadataDao.query(query);
|
|
|
|
return metadataDao.query(query);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public TodorooCursor<TagData> getTagDataForTask(long taskId, boolean includeEmergent, Property<?>... properties) {
|
|
|
|
public TodorooCursor<TagData> getTagDataForTask(long taskId, boolean includeEmergent, Property<?>... properties) {
|
|
|
|
Criterion criterion = TagData.UUID.in(Query.select(TagMetadata.TAG_UUID)
|
|
|
|
Criterion criterion = TagData.UUID.in(Query.select(TaskToTagMetadata.TAG_UUID)
|
|
|
|
.from(Metadata.TABLE)
|
|
|
|
.from(Metadata.TABLE)
|
|
|
|
.where(Criterion.and(MetadataCriteria.withKey(TagMetadata.KEY),
|
|
|
|
.where(Criterion.and(MetadataCriteria.withKey(TaskToTagMetadata.KEY),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
Metadata.DELETION_DATE.eq(0),
|
|
|
|
Metadata.TASK.eq(taskId))));
|
|
|
|
Metadata.TASK.eq(taskId))));
|
|
|
|
if (!includeEmergent)
|
|
|
|
if (!includeEmergent)
|
|
|
@ -368,9 +368,9 @@ public final class TagService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public TodorooCursor<TagData> getTagDataForTask(long taskId, Criterion additionalCriterion, Property<?>... properties) {
|
|
|
|
public TodorooCursor<TagData> getTagDataForTask(long taskId, Criterion additionalCriterion, Property<?>... properties) {
|
|
|
|
Criterion criterion = TagData.UUID.in(Query.select(TagMetadata.TAG_UUID).from(Metadata.TABLE).where(
|
|
|
|
Criterion criterion = TagData.UUID.in(Query.select(TaskToTagMetadata.TAG_UUID).from(Metadata.TABLE).where(
|
|
|
|
Criterion.and(Metadata.DELETION_DATE.eq(0),
|
|
|
|
Criterion.and(Metadata.DELETION_DATE.eq(0),
|
|
|
|
MetadataCriteria.byTaskAndwithKey(taskId, TagMetadata.KEY))));
|
|
|
|
MetadataCriteria.byTaskAndwithKey(taskId, TaskToTagMetadata.KEY))));
|
|
|
|
return tagDataService.query(Query.select(properties).where(Criterion.and(criterion, additionalCriterion)));
|
|
|
|
return tagDataService.query(Query.select(properties).where(Criterion.and(criterion, additionalCriterion)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -399,7 +399,7 @@ public final class TagService {
|
|
|
|
for (int i = 0; i < length; i++) {
|
|
|
|
for (int i = 0; i < length; i++) {
|
|
|
|
tags.moveToNext();
|
|
|
|
tags.moveToNext();
|
|
|
|
metadata.readFromCursor(tags);
|
|
|
|
metadata.readFromCursor(tags);
|
|
|
|
tagBuilder.append(metadata.getValue(TagMetadata.TAG_NAME));
|
|
|
|
tagBuilder.append(metadata.getValue(TaskToTagMetadata.TAG_NAME));
|
|
|
|
if (i < length - 1)
|
|
|
|
if (i < length - 1)
|
|
|
|
tagBuilder.append(separator);
|
|
|
|
tagBuilder.append(separator);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -492,11 +492,11 @@ public final class TagService {
|
|
|
|
public boolean synchronizeTags(long taskId, String taskUuid, Set<String> tags) {
|
|
|
|
public boolean synchronizeTags(long taskId, String taskUuid, Set<String> tags) {
|
|
|
|
HashSet<String> existingLinks = new HashSet<String>();
|
|
|
|
HashSet<String> existingLinks = new HashSet<String>();
|
|
|
|
TodorooCursor<Metadata> links = metadataDao.query(Query.select(Metadata.PROPERTIES)
|
|
|
|
TodorooCursor<Metadata> links = metadataDao.query(Query.select(Metadata.PROPERTIES)
|
|
|
|
.where(Criterion.and(TagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0))));
|
|
|
|
.where(Criterion.and(TaskToTagMetadata.TASK_UUID.eq(taskUuid), Metadata.DELETION_DATE.eq(0))));
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
for (links.moveToFirst(); !links.isAfterLast(); links.moveToNext()) {
|
|
|
|
for (links.moveToFirst(); !links.isAfterLast(); links.moveToNext()) {
|
|
|
|
Metadata link = new Metadata(links);
|
|
|
|
Metadata link = new Metadata(links);
|
|
|
|
existingLinks.add(link.getValue(TagMetadata.TAG_UUID));
|
|
|
|
existingLinks.add(link.getValue(TaskToTagMetadata.TAG_UUID));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
links.close();
|
|
|
|
links.close();
|
|
|
@ -512,7 +512,7 @@ public final class TagService {
|
|
|
|
if (existingLinks.contains(tagData.getValue(TagData.UUID))) {
|
|
|
|
if (existingLinks.contains(tagData.getValue(TagData.UUID))) {
|
|
|
|
existingLinks.remove(tagData.getValue(TagData.UUID));
|
|
|
|
existingLinks.remove(tagData.getValue(TagData.UUID));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Metadata newLink = TagMetadata.newTagMetadata(taskId, taskUuid, tag, tagData.getValue(TagData.UUID));
|
|
|
|
Metadata newLink = TaskToTagMetadata.newTagMetadata(taskId, taskUuid, tag, tagData.getValue(TagData.UUID));
|
|
|
|
metadataDao.createNew(newLink);
|
|
|
|
metadataDao.createNew(newLink);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -532,12 +532,12 @@ public final class TagService {
|
|
|
|
public String getTagWithCase(String tag) {
|
|
|
|
public String getTagWithCase(String tag) {
|
|
|
|
MetadataService service = PluginServices.getMetadataService();
|
|
|
|
MetadataService service = PluginServices.getMetadataService();
|
|
|
|
String tagWithCase = tag;
|
|
|
|
String tagWithCase = tag;
|
|
|
|
TodorooCursor<Metadata> tagMetadata = service.query(Query.select(TagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1));
|
|
|
|
TodorooCursor<Metadata> tagMetadata = service.query(Query.select(TaskToTagMetadata.TAG_NAME).where(TagService.tagEqIgnoreCase(tag, Criterion.all)).limit(1));
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
if (tagMetadata.getCount() > 0) {
|
|
|
|
if (tagMetadata.getCount() > 0) {
|
|
|
|
tagMetadata.moveToFirst();
|
|
|
|
tagMetadata.moveToFirst();
|
|
|
|
Metadata tagMatch = new Metadata(tagMetadata);
|
|
|
|
Metadata tagMatch = new Metadata(tagMetadata);
|
|
|
|
tagWithCase = tagMatch.getValue(TagMetadata.TAG_NAME);
|
|
|
|
tagWithCase = tagMatch.getValue(TaskToTagMetadata.TAG_NAME);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
TodorooCursor<TagData> tagData = tagDataService.query(Query.select(TagData.NAME).where(TagData.NAME.eqCaseInsensitive(tag)));
|
|
|
|
TodorooCursor<TagData> tagData = tagDataService.query(Query.select(TagData.NAME).where(TagData.NAME.eqCaseInsensitive(tag)));
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -595,7 +595,7 @@ public final class TagService {
|
|
|
|
|
|
|
|
|
|
|
|
// Then rename all instances of oldTag to newTag.
|
|
|
|
// Then rename all instances of oldTag to newTag.
|
|
|
|
Metadata metadata = new Metadata();
|
|
|
|
Metadata metadata = new Metadata();
|
|
|
|
metadata.setValue(TagMetadata.TAG_NAME, newTag);
|
|
|
|
metadata.setValue(TaskToTagMetadata.TAG_NAME, newTag);
|
|
|
|
int ret;
|
|
|
|
int ret;
|
|
|
|
if (caseSensitive)
|
|
|
|
if (caseSensitive)
|
|
|
|
ret = metadataService.update(tagEq(oldTag, Criterion.all), metadata);
|
|
|
|
ret = metadataService.update(tagEq(oldTag, Criterion.all), metadata);
|
|
|
|