@SuppressWarnings("nls") private TodorooCursor<Task> constructCursor() { String tagName = null; if (getActiveTagData() != null) tagName = getActiveTagData().getValue(TagData.NAME); String[] emergentTags = TagService.getInstance().getEmergentTags(); StringProperty tagProperty = new StringProperty(null, TAGS_METADATA_JOIN + "." + TagService.TAG.name); Criterion tagsJoinCriterion = Criterion.and( Field.field(TAGS_METADATA_JOIN + "." + Metadata.KEY.name) .eq(TagService.KEY), // $NON-NLS-1$ Task.ID.eq(Field.field(TAGS_METADATA_JOIN + "." + Metadata.TASK.name)), Criterion.not(tagProperty.in(emergentTags))); if (tagName != null) tagsJoinCriterion = Criterion.and( tagsJoinCriterion, Field.field(TAGS_METADATA_JOIN + "." + TagService.TAG.name).neq(tagName)); // TODO: For now, we'll modify the query to join and include the task rabbit and tag data here. // Eventually, we might consider restructuring things so that this query is constructed // elsewhere. String joinedQuery = Join.left( Metadata.TABLE.as(TR_METADATA_JOIN), Criterion.and( Field.field(TR_METADATA_JOIN + "." + Metadata.KEY.name) .eq(TaskRabbitMetadata.METADATA_KEY), // $NON-NLS-1$ Task.ID.eq(Field.field(TR_METADATA_JOIN + "." + Metadata.TASK.name)))) .toString() //$NON-NLS-1$ + Join.left(Metadata.TABLE.as(TAGS_METADATA_JOIN), tagsJoinCriterion) .toString() //$NON-NLS-1$ + filter.getSqlQuery(); sqlQueryTemplate.set(SortHelper.adjustQueryForFlagsAndSort(joinedQuery, sortFlags, sortSort)); String groupedQuery; if (sqlQueryTemplate.get().contains("GROUP BY")) groupedQuery = sqlQueryTemplate.get(); else if (sqlQueryTemplate.get().contains("ORDER BY")) // $NON-NLS-1$ groupedQuery = sqlQueryTemplate .get() .replace("ORDER BY", "GROUP BY " + Task.ID + " ORDER BY"); // $NON-NLS-1$ else groupedQuery = sqlQueryTemplate.get() + " GROUP BY " + Task.ID; sqlQueryTemplate.set(groupedQuery); // Peform query try { return taskService.fetchFiltered(sqlQueryTemplate.get(), null, taskProperties()); } catch (SQLiteException e) { // We don't show this error anymore--seems like this can get triggered // by a strange bug, but there seems to not be any negative side effect. // For now, we'll suppress the error // See http://astrid.com/home#tags-7tsoi/task-1119pk return null; } }
private TodorooCursor<Task> constructCursor() { String tagName = null; if (getActiveTagData() != null) { tagName = getActiveTagData().getName(); } Criterion tagsJoinCriterion = Criterion.and( Field.field(TAGS_METADATA_JOIN + "." + Metadata.KEY.name) .eq(TaskToTagMetadata.KEY), // $NON-NLS-1$ Field.field(TAGS_METADATA_JOIN + "." + Metadata.DELETION_DATE.name).eq(0), Task.ID.eq(Field.field(TAGS_METADATA_JOIN + "." + Metadata.TASK.name))); if (tagName != null) { tagsJoinCriterion = Criterion.and( tagsJoinCriterion, Field.field(TAGS_METADATA_JOIN + "." + TaskToTagMetadata.TAG_NAME.name).neq(tagName)); } // TODO: For now, we'll modify the query to join and include the things like tag data here. // Eventually, we might consider restructuring things so that this query is constructed // elsewhere. String joinedQuery = Join.left(Metadata.TABLE.as(TAGS_METADATA_JOIN), tagsJoinCriterion) .toString() //$NON-NLS-1$ + Join.left( TaskAttachment.TABLE.as(FILE_METADATA_JOIN), Task.UUID.eq(Field.field(FILE_METADATA_JOIN + "." + TaskAttachment.TASK_UUID.name))) + filter.getSqlQuery(); sqlQueryTemplate.set(SortHelper.adjustQueryForFlagsAndSort(joinedQuery, sortFlags, sortSort)); String groupedQuery; if (sqlQueryTemplate.get().contains("GROUP BY")) { groupedQuery = sqlQueryTemplate.get(); } else if (sqlQueryTemplate.get().contains("ORDER BY")) // $NON-NLS-1$ { groupedQuery = sqlQueryTemplate .get() .replace("ORDER BY", "GROUP BY " + Task.ID + " ORDER BY"); // $NON-NLS-1$ } else { groupedQuery = sqlQueryTemplate.get() + " GROUP BY " + Task.ID; } sqlQueryTemplate.set(groupedQuery); // Peform query try { return taskService.fetchFiltered(sqlQueryTemplate.get(), null, taskProperties()); } catch (SQLiteException e) { // We don't show this error anymore--seems like this can get triggered // by a strange bug, but there seems to not be any negative side effect. // For now, we'll suppress the error // See http://astrid.com/home#tags-7tsoi/task-1119pk log.error(e.getMessage(), e); return null; } }
/** * Fill in the Task List with current items * * @param withCustomId force task with given custom id to be part of list */ protected void setUpTaskList() { if (filter == null) return; // TODO: For now, we'll modify the query to join and include the task rabbit data here. // Eventually, we might consider restructuring things so that this query is constructed // elsewhere. String joinedTaskRabbitQuery = Join.left( Metadata.TABLE.as(TR_METADATA_JOIN), Criterion.and( Field.field(TR_METADATA_JOIN + "." + Metadata.KEY.name) .eq(TaskRabbitMetadata.METADATA_KEY), // $NON-NLS-1$ Task.ID.eq( Field.field(TR_METADATA_JOIN) + "." + Metadata.TASK.name))) // $NON-NLS-1$ + filter.getSqlQuery(); sqlQueryTemplate.set( SortHelper.adjustQueryForFlagsAndSort(joinedTaskRabbitQuery, sortFlags, sortSort)); // perform query TodorooCursor<Task> currentCursor; try { currentCursor = taskService.fetchFiltered(sqlQueryTemplate.get(), null, taskProperties()); } catch (SQLiteException e) { StartupService.handleSQLiteColumnMissing(getActivity(), e); return; } // set up list adapters taskAdapter = createTaskAdapter(currentCursor); setListAdapter(taskAdapter); getListView().setOnScrollListener(this); registerForContextMenu(getListView()); loadTaskListContent(true); }