Skip to content

Commit

Permalink
RESTful service List Export Tasks does not return tasks which are not…
Browse files Browse the repository at this point in the history
… yet scheduled #1362
  • Loading branch information
vrindanayak committed Apr 30, 2018
1 parent 2eef6d2 commit 0d68d20
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ void scheduleExportTask(String studyUID, String seriesUID, String objectUID, Exp
ExportTaskQuery listExportTasks(Predicate matchQueueMessage, Predicate matchExportTask,
OrderSpecifier<Date> order, int offset, int limit);

long countExportTasks(Predicate matchQueueMessage, Predicate matchExportTask);
long countExportTasks(QueueMessage.Status status, Predicate matchQueueMessage, Predicate matchExportTask);

boolean deleteExportTask(Long pk, QueueMessageEvent queueEvent);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@

import com.querydsl.core.Tuple;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.Predicate;
import com.querydsl.jpa.hibernate.HibernateDeleteClause;
Expand Down Expand Up @@ -320,8 +321,12 @@ public ExportTaskQuery listExportTasks(Predicate matchQueueMessage, Predicate ma
}

@Override
public long countExportTasks(Predicate matchQueueMessage, Predicate matchExportTask) {
return createQuery(matchQueueMessage, matchExportTask).fetchCount();
public long countExportTasks(QueueMessage.Status status, Predicate matchQueueMessage, Predicate matchExportTask) {
return status == QueueMessage.Status.TO_SCHEDULE
? createQueryToSchedule(matchExportTask).fetchCount()
: status == null
? createQueryToSchedule(matchExportTask).fetchCount() + createQuery(matchQueueMessage, matchExportTask).fetchCount()
: createQuery(matchQueueMessage, matchExportTask).fetchCount();
}

private HibernateQuery<ExportTask> createQuery(Predicate matchQueueMessage, Predicate matchExportTask) {
Expand All @@ -335,6 +340,12 @@ private HibernateQuery<ExportTask> createQuery(Predicate matchQueueMessage, Pred
.where(matchExportTask, QExportTask.exportTask.queueMessage.in(queueMsgQuery));
}

private HibernateQuery<ExportTask> createQueryToSchedule(Predicate matchExportTask) {
return new HibernateQuery<ExportTask>(em.unwrap(Session.class))
.from(QExportTask.exportTask)
.where(matchExportTask, QExportTask.exportTask.queueMessage.isNull());
}

@Override
public boolean deleteExportTask(Long pk, QueueMessageEvent queueEvent) {
ExportTask task = em.find(ExportTask.class, pk);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,10 @@ null, deviceName, status(), batchID, null,null, null, null),
@Produces("application/json")
public Response countExportTasks() {
logRequest();
return count(mgr.countExportTasks(
QueueMessage.Status status = status();
return count(mgr.countExportTasks(status,
MatchTask.matchQueueMessage(
null, deviceName, status(), batchID, null, null, null, null),
null, deviceName, status, batchID, null, null, null, null),
MatchTask.matchExportTask(
exporterID, deviceName, studyUID, createdTime, updatedTime)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,8 @@ public static Predicate matchQueueMessage(
BooleanBuilder predicate = new BooleanBuilder();
if (queueName != null)
predicate.and(QQueueMessage.queueMessage.queueName.eq(queueName));
if (status != null)
predicate.and(status == QueueMessage.Status.TO_SCHEDULE
? QExportTask.exportTask.queueMessage.isNull()
: QQueueMessage.queueMessage.status.eq(status));
if (status != null && status != QueueMessage.Status.TO_SCHEDULE)
predicate.and(QQueueMessage.queueMessage.status.eq(status));
if (deviceName != null)
predicate.and(QQueueMessage.queueMessage.deviceName.eq(deviceName));
if (batchID != null)
Expand Down

0 comments on commit 0d68d20

Please sign in to comment.