Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
vrindanayak committed Jun 21, 2018
1 parent fa2481f commit 4b3bbce
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 120 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;

/**
* @author Vrinda Nayak <vrinda.nayak@j4care.com>
Expand Down Expand Up @@ -167,15 +166,11 @@ public Response listDiffTasks(@QueryParam("accept") String accept) {
logRequest();
Output output = selectMediaType(accept);
if (output == null)
return Response.notAcceptable(
Variant.mediaTypes(MediaType.APPLICATION_JSON_TYPE, MediaTypes.TEXT_CSV_UTF8_TYPE).build())
.build();
return notAcceptable();

DiffTaskQuery diffTasks = diffService.listDiffTasks(
MatchTask.matchQueueMessage(
null, deviceName, status(), batchID, null, null, null, null),
MatchTask.matchDiffTask(localAET, primaryAET, secondaryAET, checkDifferent, checkMissing,
comparefields, createdTime, updatedTime),
matchQueueMessage(status(), null, null),
matchDiffTask(),
MatchTask.diffTaskOrder(orderby),
parseInt(offset), parseInt(limit));

Expand All @@ -189,10 +184,8 @@ null, deviceName, status(), batchID, null, null, null, null),
public Response countDiffTasks() {
logRequest();
return count(diffService.countDiffTasks(
MatchTask.matchQueueMessage(
null, deviceName, status(), batchID, null, null, null, null),
MatchTask.matchDiffTask(localAET, primaryAET, secondaryAET, checkDifferent, checkMissing,
comparefields, createdTime, updatedTime)));
matchQueueMessage(status(), null, null),
matchDiffTask()));
}

@GET
Expand Down Expand Up @@ -241,11 +234,8 @@ public Response cancelDiffTasks() {
try {
LOG.info("Cancel processing of Diff Tasks with Status {}", status);
long count = diffService.cancelDiffTasks(
MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null,null, updatedTime, null),
MatchTask.matchDiffTask(
localAET, primaryAET, secondaryAET, checkDifferent, checkMissing,
comparefields, createdTime, updatedTime),
matchQueueMessage(status, updatedTime, null),
matchDiffTask(),
status);
queueEvent.setCount(count);
return count(count);
Expand Down Expand Up @@ -287,8 +277,7 @@ public Response rescheduleDiffTasks() throws Exception {
if (status == QueueMessage.Status.SCHEDULED || status == QueueMessage.Status.IN_PROCESS)
return rsp(Response.Status.BAD_REQUEST, "Cannot reschedule tasks with status: " + status);

Predicate matchQueueMessage = MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, null, new Date());
Predicate matchQueueMessage = matchQueueMessage(status, null, new Date());

if (deviceName == null) {
List<String> distinctDeviceNames = queueMgr.listDistinctDeviceNames(matchQueueMessage);
Expand All @@ -309,12 +298,9 @@ public Response rescheduleDiffTasks() throws Exception {
private Response rescheduleTasks(Predicate matchQueueMessage) {
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.RescheduleTasks);
try {
Predicate matchDiffTask = MatchTask.matchDiffTask(
localAET, primaryAET, secondaryAET, checkDifferent, checkMissing,
comparefields, createdTime, updatedTime);
int count = 0;
try (DiffTaskQuery diffTasks = diffService.listDiffTasks(
matchQueueMessage, matchDiffTask, null, 0,0)) {
matchQueueMessage, matchDiffTask(), null, 0,0)) {
for (DiffTask diffTask : diffTasks) {
diffService.rescheduleDiffTask(diffTask.getPk(), null);
count++;
Expand Down Expand Up @@ -345,27 +331,19 @@ public String deleteTasks() {
logRequest();
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.DeleteTasks);
int deleted = diffService.deleteTasks(
MatchTask.matchQueueMessage(
null, deviceName, status(), batchID, null, null, null, null),
MatchTask.matchDiffTask(
localAET, primaryAET, secondaryAET, checkDifferent, checkMissing,
comparefields, createdTime, updatedTime));
matchQueueMessage(status(), null, null),
matchDiffTask());
queueEvent.setCount(deleted);
bulkQueueMsgEvent.fire(queueEvent);
return "{\"deleted\":" + deleted + '}';
}

private Output selectMediaType(String accept) {
Stream<MediaType> acceptableTypes = httpHeaders.getAcceptableMediaTypes().stream();
if (accept != null) {
try {
MediaType type = MediaType.valueOf(accept);
return acceptableTypes.anyMatch(type::isCompatible) ? Output.valueOf(type) : null;
} catch (IllegalArgumentException ae) {
return null;
}
}
return acceptableTypes.map(Output::valueOf)
if (accept != null)
httpHeaders.getRequestHeaders().putSingle("Accept", accept);

return httpHeaders.getAcceptableMediaTypes().stream()
.map(Output::valueOf)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
Expand Down Expand Up @@ -471,11 +449,28 @@ private static Response rsp(boolean result) {
.build();
}

private Response notAcceptable() {
return Response.notAcceptable(
Variant.mediaTypes(MediaType.APPLICATION_JSON_TYPE, MediaTypes.TEXT_CSV_UTF8_TYPE).build())
.build();
}

private static int parseInt(String s) {
return s != null ? Integer.parseInt(s) : 0;
}

private QueueMessage.Status status() {
return status != null ? QueueMessage.Status.fromString(status) : null;
}

private Predicate matchDiffTask() {
return MatchTask.matchDiffTask(
localAET, primaryAET, secondaryAET, checkDifferent, checkMissing, comparefields, createdTime, updatedTime);
}

private Predicate matchQueueMessage(QueueMessage.Status status, String updatedTime, Date updatedBefore) {
return MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, updatedTime, updatedBefore);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@
import javax.ws.rs.core.*;
import java.io.*;
import java.util.*;
import java.util.stream.Stream;

/**
* @author Vrinda Nayak <vrinda.nayak@j4care.com>
Expand Down Expand Up @@ -150,14 +149,12 @@ public Response listExportTasks(@QueryParam("accept") String accept) {
logRequest();
Output output = selectMediaType(accept);
if (output == null)
return Response.notAcceptable(
Variant.mediaTypes(MediaType.APPLICATION_JSON_TYPE, MediaTypes.TEXT_CSV_UTF8_TYPE).build())
.build();
return notAcceptable();

QueueMessage.Status status = status();
ExportTaskQuery tasks = mgr.listExportTasks(status,
MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null,null, null, null),
MatchTask.matchExportTask(uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, updatedTime),
matchQueueMessage(status, null, null),
matchExportTask(updatedTime),
MatchTask.exportTaskOrder(orderby),
parseInt(offset), parseInt(limit)
);
Expand All @@ -172,10 +169,8 @@ public Response countExportTasks() {
logRequest();
QueueMessage.Status status = status();
return count(mgr.countExportTasks(status,
MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, null, null),
MatchTask.matchExportTask(
uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, updatedTime)));
matchQueueMessage(status, null, null),
matchExportTask(updatedTime)));
}

@POST
Expand Down Expand Up @@ -208,10 +203,8 @@ public Response cancelExportTasks() {
try {
LOG.info("Cancel processing of Export Tasks with Status {}", status);
long count = mgr.cancelExportTasks(
MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, updatedTime, null),
MatchTask.matchExportTask(
uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, null),
matchQueueMessage(status, updatedTime, null),
matchExportTask(null),
status);
queueEvent.setCount(count);
return count(count);
Expand Down Expand Up @@ -269,8 +262,7 @@ private Response rescheduleTasks(String newExporterID) throws Exception {
if (status == QueueMessage.Status.SCHEDULED || status == QueueMessage.Status.IN_PROCESS)
return rsp(Response.Status.BAD_REQUEST, "Cannot reschedule tasks with status: " + status);

Predicate matchQueueMessage = MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, null, new Date());
Predicate matchQueueMessage = matchQueueMessage(status, null, new Date());

if (deviceName == null) {
List<String> distinctDeviceNames = queueMgr.listDistinctDeviceNames(matchQueueMessage);
Expand All @@ -296,11 +288,9 @@ private Response rescheduleTasks(String newExporterID, QueueMessage.Status statu
return rsp(Response.Status.NOT_FOUND, "No such exporter - " + newExporterID);

try {
Predicate matchExportTask = MatchTask.matchExportTask(
uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, updatedTime);
int count = 0;
try (ExportTaskQuery exportTasks = mgr.listExportTasks(status,
matchQueueMessage, matchExportTask, null, 0, 0)) {
matchQueueMessage, matchExportTask(updatedTime), null, 0, 0)) {
for (ExportTask task : exportTasks) {
mgr.rescheduleExportTask(
task.getPk(),
Expand Down Expand Up @@ -336,9 +326,8 @@ public String deleteTasks() {
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.DeleteTasks);
QueueMessage.Status status = status();
int deleted = mgr.deleteTasks(status,
MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, null, null),
MatchTask.matchExportTask(uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, updatedTime));
matchQueueMessage(status, null, null),
matchExportTask(updatedTime));
queueEvent.setCount(deleted);
bulkQueueMsgEvent.fire(queueEvent);
return "{\"deleted\":" + deleted + '}';
Expand Down Expand Up @@ -372,16 +361,11 @@ private int count(Response response) {
}

private Output selectMediaType(String accept) {
Stream<MediaType> acceptableTypes = httpHeaders.getAcceptableMediaTypes().stream();
if (accept != null) {
try {
MediaType type = MediaType.valueOf(accept);
return acceptableTypes.anyMatch(type::isCompatible) ? Output.valueOf(type) : null;
} catch (IllegalArgumentException ae) {
return null;
}
}
return acceptableTypes.map(Output::valueOf)
if (accept != null)
httpHeaders.getRequestHeaders().putSingle("Accept", accept);

return httpHeaders.getAcceptableMediaTypes().stream()
.map(Output::valueOf)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
Expand Down Expand Up @@ -455,6 +439,21 @@ private QueueMessage.Status status() {
return status != null ? QueueMessage.Status.fromString(status) : null;
}

private Predicate matchExportTask(String updatedTime) {
return MatchTask.matchExportTask(uriInfo.getQueryParameters().get("ExporterID"), deviceName, studyUID, createdTime, updatedTime);
}

private Predicate matchQueueMessage(QueueMessage.Status status, String updatedTime, Date updatedBefore) {
return MatchTask.matchQueueMessage(
null, deviceName, status, batchID, null, null, updatedTime, updatedBefore);
}

private Response notAcceptable() {
return Response.notAcceptable(
Variant.mediaTypes(MediaType.APPLICATION_JSON_TYPE, MediaTypes.TEXT_CSV_UTF8_TYPE).build())
.build();
}

private static int parseInt(String s) {
return s != null ? Integer.parseInt(s) : 0;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.validation.constraints.Pattern;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.*;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
Expand Down Expand Up @@ -139,7 +137,7 @@ public class QueueManagerRS {
public Response search() {
logRequest();
QueueMessageQuery queueMessages = mgr.listQueueMessages(
MatchTask.matchQueueMessage(queueName, deviceName, status(), batchID, jmsMessageID, createdTime, updatedTime, null),
matchQueueMessage(status(), null),
MatchTask.queueMessageOrder(orderby), parseInt(offset), parseInt(limit));
return Response.ok(toEntity(queueMessages)).build();
}
Expand All @@ -150,8 +148,7 @@ public Response search() {
@Produces("application/json")
public Response countTasks() {
logRequest();
return count(mgr.countTasks(MatchTask.matchQueueMessage(
queueName, deviceName, status(), batchID, jmsMessageID, createdTime, updatedTime, null)));
return count(mgr.countTasks(matchQueueMessage(status(), null)));
}

@POST
Expand Down Expand Up @@ -182,9 +179,7 @@ public Response cancelTasks() {
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.CancelTasks);
try {
LOG.info("Cancel processing of Tasks with Status {} at Queue {}", this.status, queueName);
Predicate matchQueueMessage = MatchTask.matchQueueMessage(queueName, deviceName, status, batchID, jmsMessageID,
createdTime, updatedTime, null);
long count = mgr.cancelTasks(matchQueueMessage, status);
long count = mgr.cancelTasks(matchQueueMessage(status,null), status);
queueEvent.setCount(count);
return count(count);
} catch (IllegalTaskStateException e) {
Expand Down Expand Up @@ -225,8 +220,7 @@ public Response rescheduleMessages() throws Exception {
if (status == QueueMessage.Status.SCHEDULED || status == QueueMessage.Status.IN_PROCESS)
return rsp(Response.Status.BAD_REQUEST, "Cannot reschedule tasks with status: " + status);

Predicate matchQueueMessage = MatchTask.matchQueueMessage(
queueName, deviceName, status, batchID, jmsMessageID, createdTime, updatedTime, new Date());
Predicate matchQueueMessage = matchQueueMessage(status, new Date());

if (deviceName == null) {
List<String> distinctDeviceNames = mgr.listDistinctDeviceNames(matchQueueMessage);
Expand Down Expand Up @@ -278,8 +272,7 @@ public Response deleteMessage(@PathParam("msgId") String msgId) {
public String deleteMessages() {
logRequest();
BulkQueueMessageEvent queueEvent = new BulkQueueMessageEvent(request, QueueMessageOperation.DeleteTasks);
int deleted = mgr.deleteTasks(queueName, MatchTask.matchQueueMessage(
queueName, deviceName, status(), batchID, jmsMessageID, createdTime, updatedTime, null));
int deleted = mgr.deleteTasks(queueName, matchQueueMessage(status(), null));
queueEvent.setCount(deleted);
bulkQueueMsgEvent.fire(queueEvent);
return "{\"deleted\":" + deleted + '}';
Expand Down Expand Up @@ -333,6 +326,11 @@ private QueueMessage.Status status() {
return status != null ? QueueMessage.Status.fromString(status) : null;
}

private Predicate matchQueueMessage(QueueMessage.Status status, Date updatedBefore) {
return MatchTask.matchQueueMessage(
queueName, deviceName, status, batchID, jmsMessageID, createdTime, updatedTime, updatedBefore);
}

private static int parseInt(String s) {
return s != null ? Integer.parseInt(s) : 0;
}
Expand Down

0 comments on commit 4b3bbce

Please sign in to comment.