private Collection<TaskArtifact> filterByCompletedAndStateAndSelectedUser( Collection<? extends Artifact> artifacts) throws OseeCoreException { Set<TaskArtifact> tasks = new HashSet<TaskArtifact>(); String selectedState = getSelectedState(); boolean isSelectedStateValid = Strings.isValid(selectedState); for (Artifact art : artifacts) { TaskArtifact taskArt = (TaskArtifact) art; if (isSelectedStateValid) { if (!taskArt.getCurrentStateName().equals(selectedState)) { continue; } } // If not include completed and task is such, skip this task if (!isIncludeCompletedCheckbox() && taskArt.isCompleted()) { continue; } if (!isIncludeCancelledCheckbox() && taskArt.isCancelled()) { continue; } boolean isIncludeCompletedAndCompleted = isIncludeCompletedCheckbox() && taskArt.isCompleted(); boolean isIncludeCancelledAndCancelled = isIncludeCancelledCheckbox() && taskArt.isCancelled(); // If include completed and task is such and user not implementer, skip this task if ((isIncludeCompletedAndCompleted || isIncludeCancelledAndCancelled) && getSelectedUser() != null && taskArt.getImplementers().contains(getSelectedUser())) { tasks.add(taskArt); continue; } // If user is selected and not user is assigned, skip this task else if (getSelectedUser() != null && !taskArt.getStateMgr().getAssignees().contains(getSelectedUser())) { continue; } tasks.add(taskArt); } return tasks; }