Skip to content

Commit

Permalink
List Batch RESTful services : Apply selected filters also to results …
Browse files Browse the repository at this point in the history
…shown within a batch dcm4che#1946
  • Loading branch information
gunterze committed Apr 18, 2019
1 parent f780a65 commit 1a3c32d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public List<Predicate> exportBatchPredicates(
}

public List<Predicate> retrieveBatchPredicates(
From<RetrieveTask, QueueMessage> queueMsg, Root<RetrieveTask> retrieveTask,
Path<QueueMessage> queueMsg, Path<RetrieveTask> retrieveTask,
TaskQueryParam queueBatchQueryParam, TaskQueryParam retrieveBatchQueryParam) {
List<Predicate> predicates = new ArrayList<>();
matchQueueBatch(predicates, queueBatchQueryParam, queueMsg);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -392,16 +392,20 @@ RetrieveBatch toRetrieveBatch(Tuple tuple) {
tuple.get(minUpdatedTime),
tuple.get(maxUpdatedTime));

CriteriaQuery<String> queryDistinct = cb.createQuery(String.class).distinct(true);
Root<RetrieveTask> retrieveTask = queryDistinct.from(RetrieveTask.class);
From<RetrieveTask, QueueMessage> queueMsg = retrieveTask.join(RetrieveTask_.queueMessage);
queryDistinct.where(predicates(queueMsg, retrieveTask, batchID));
retrieveBatch.setDeviceNames(
queueMsgSelectionList(queueBatchQueryParam, retrieveBatchQueryParam, batchID, QueueMessage_.deviceName));
em.createQuery(queryDistinct.select(queueMsg.get(QueueMessage_.deviceName))).getResultList());
retrieveBatch.setQueueNames(
queueMsgSelectionList(queueBatchQueryParam, retrieveBatchQueryParam, batchID, QueueMessage_.queueName));
em.createQuery(queryDistinct.select(queueMsg.get(QueueMessage_.queueName))).getResultList());
retrieveBatch.setLocalAETs(
retrieveTaskSelectionList(queueBatchQueryParam, retrieveBatchQueryParam, batchID, RetrieveTask_.localAET));
em.createQuery(queryDistinct.select(retrieveTask.get(RetrieveTask_.localAET))).getResultList());
retrieveBatch.setRemoteAETs(
retrieveTaskSelectionList(queueBatchQueryParam, retrieveBatchQueryParam, batchID, RetrieveTask_.remoteAET));
em.createQuery(queryDistinct.select(retrieveTask.get(RetrieveTask_.remoteAET))).getResultList());
retrieveBatch.setDestinationAETs(
retrieveTaskSelectionList(queueBatchQueryParam, retrieveBatchQueryParam, batchID, RetrieveTask_.destinationAET));
em.createQuery(queryDistinct.select(retrieveTask.get(RetrieveTask_.destinationAET))).getResultList());

retrieveBatch.setCompleted(tuple.get(completed));
retrieveBatch.setCanceled(tuple.get(canceled));
Expand All @@ -412,32 +416,11 @@ RetrieveBatch toRetrieveBatch(Tuple tuple) {
return retrieveBatch;
}

private List<String> queueMsgSelectionList(
TaskQueryParam queueBatchQueryParam, TaskQueryParam retrieveBatchQueryParam,
String batchID, SingularAttribute<QueueMessage, String> selection) {
CriteriaQuery<String> query = cb.createQuery(String.class);
Root<RetrieveTask> retrieveTask = query.from(RetrieveTask.class);
From<RetrieveTask, QueueMessage> queueMsg = retrieveTask.join(RetrieveTask_.queueMessage);
List<Predicate> predicates = matchTask.retrieveBatchPredicates(
queueMsg, retrieveTask, queueBatchQueryParam, retrieveBatchQueryParam);
predicates.add(cb.equal(queueMsg.get(QueueMessage_.batchID), batchID));
query.where(predicates.toArray(new Predicate[0]));
query.select(queueMsg.get(selection)).distinct(true);
return em.createQuery(query).getResultList();
}

private List<String> retrieveTaskSelectionList(
TaskQueryParam queueBatchQueryParam, TaskQueryParam retrieveBatchQueryParam,
String batchID, SingularAttribute<RetrieveTask, String> selection) {
CriteriaQuery<String> query = cb.createQuery(String.class);
Root<RetrieveTask> retrieveTask = query.from(RetrieveTask.class);
From<RetrieveTask, QueueMessage> queueMsg = retrieveTask.join(RetrieveTask_.queueMessage);
private Predicate[] predicates(Path<QueueMessage> queueMsg, Path<RetrieveTask> retrieveTask, String batchID) {
List<Predicate> predicates = matchTask.retrieveBatchPredicates(
queueMsg, retrieveTask, queueBatchQueryParam, retrieveBatchQueryParam);
predicates.add(cb.equal(queueMsg.get(QueueMessage_.batchID), batchID));
query.where(predicates.toArray(new Predicate[0]));
query.select(retrieveTask.get(selection)).distinct(true);
return em.createQuery(query).getResultList();
return predicates.toArray(new Predicate[0]);
}
}

Expand Down

0 comments on commit 1a3c32d

Please sign in to comment.