private static Predicate<Task> queryFilter(final TaskQuery query) {
return new Predicate<Task>() {
@Override
public boolean apply(Task canonicalTask) {
IScheduledTask task = canonicalTask.storedTask;
ITaskConfig config = task.getAssignedTask().getTask();
if (query.getOwner() != null) {
if (!StringUtils.isBlank(query.getOwner().getRole())
&& !query.getOwner().getRole().equals(config.getOwner().getRole())) {
return false;
}
if (!StringUtils.isBlank(query.getOwner().getUser())
&& !query.getOwner().getUser().equals(config.getOwner().getUser())) {
return false;
}
}
if (query.getEnvironment() != null
&& !query.getEnvironment().equals(config.getEnvironment())) {
return false;
}
if (query.getJobName() != null && !query.getJobName().equals(config.getJobName())) {
return false;
}
if (query.getJobKeysSize() > 0
&& !query.getJobKeys().contains(JobKeys.from(config).newBuilder())) {
return false;
}
if (query.getTaskIds() != null && !query.getTaskIds().contains(Tasks.id(task))) {
return false;
}
if (query.getStatusesSize() > 0 && !query.getStatuses().contains(task.getStatus())) {
return false;
}
if (query.getSlaveHostsSize() > 0
&& !query.getSlaveHosts().contains(task.getAssignedTask().getSlaveHost())) {
return false;
}
if (query.getInstanceIdsSize() > 0
&& !query.getInstanceIds().contains(task.getAssignedTask().getInstanceId())) {
return false;
}
return true;
}