diff --git a/src/main/java/eu/openaire/urls_controller/controllers/UrlController.java b/src/main/java/eu/openaire/urls_controller/controllers/UrlController.java index 04a6d1c..d9cbaa6 100644 --- a/src/main/java/eu/openaire/urls_controller/controllers/UrlController.java +++ b/src/main/java/eu/openaire/urls_controller/controllers/UrlController.java @@ -26,18 +26,25 @@ public class UrlController { private static final Logger logger = LoggerFactory.getLogger(UrlController.class); - private static AtomicLong assignmentCounter = new AtomicLong(); // Just for the "getTestUrls"-endpoint. + private static AtomicLong assignmentCounter = new AtomicLong(0); // Just for the "getTestUrls"-endpoint. } @GetMapping("") - public ResponseEntity getUrls(@RequestParam String workerId, @RequestParam int workerTasksLimit) { + public ResponseEntity getUrls(@RequestParam String workerId, @RequestParam int workerAssignmentsLimit) { List tasks = new ArrayList<>(); // TODO - Create the Assignment from the id-urls stored in the database up to the tasks-limit. - Date date = new Date(); // Store it here, in order to have the same date for all current assignments. + + // TODO - Make sure the Date is the same for all entries! + Date date = new Date(); // Store it here, in order to have the same for sure. + + + int assignmentsLimit = ControllerConstants.ASSIGNMENTS_LIMIT; + if ( assignmentsLimit > workerAssignmentsLimit ) + assignmentsLimit = workerAssignmentsLimit; int tasksLimitForAssignment = ControllerConstants.ASSIGNMENTS_LIMIT; @@ -50,9 +57,9 @@ public class UrlController { // TODO - Write the Assignment details to the database and then send it to the worker. - logger.info("Sending assignment_" + assignmentCounter.get() + " to worker with ID: " + workerId); + logger.info("Sending assignment_" + assignmentCounter.incrementAndGet() + " to worker with ID: " + workerId); - return ResponseEntity.status(200).header("Content-Type", "application/json").body(new AssignmentResponse(assignmentCounter.incrementAndGet(), assignments)); + return ResponseEntity.status(200).header("Content-Type", "application/json").body(new AssignmentResponse(assignmentCounter.get(), assignments)); } @PostMapping("addWorkerReport") @@ -70,7 +77,7 @@ public class UrlController { @GetMapping("test") - public ResponseEntity getTestUrls(@RequestParam String workerId, @RequestParam int assignmentsLimit) { + public ResponseEntity getTestUrls(@RequestParam String workerId, @RequestParam int workerAssignmentsLimit) { try { new FileUtils(); // Find the input file. @@ -98,7 +105,7 @@ public class UrlController { for ( Map.Entry pair : pairs ) { - if ( assignments.size() >= assignmentsLimit ) { + if ( assignments.size() >= workerAssignmentsLimit ) { assignmentsLimitReached = true; break; } @@ -108,7 +115,7 @@ public class UrlController { }// end pairs-for-loop if ( assignmentsLimitReached ) { - logger.debug("Done loading urls from the inputFile as the assignmentsLimit (" + assignmentsLimit + ") was reached."); + logger.debug("Done loading urls from the inputFile as the assignmentsLimit (" + workerAssignmentsLimit + ") was reached."); break; } }// end loading-while-loop @@ -116,9 +123,9 @@ public class UrlController { if ( FileUtils.inputScanner.get() != null ) // Check if the initial value is null. FileUtils.inputScanner.get().close(); - logger.info("Sending AssignmentResponse_" + assignmentCounter.get() + " with " + assignments.size() + " assignments (" + FileUtils.duplicateIdUrlEntries.get() + " more assignments were discarded as duplicates), to worker with ID: " + workerId); + logger.info("Sending AssignmentResponse_" + assignmentCounter.incrementAndGet() + " with " + assignments.size() + " assignments (" + FileUtils.duplicateIdUrlEntries.get() + " more assignments were discarded as duplicates), to worker with ID: " + workerId); - return ResponseEntity.status(200).header("Content-Type", "application/json").body(new AssignmentResponse(assignmentCounter.incrementAndGet(), assignments)); + return ResponseEntity.status(200).header("Content-Type", "application/json").body(new AssignmentResponse(assignmentCounter.get(), assignments)); } } diff --git a/src/main/java/eu/openaire/urls_controller/models/Assignment.java b/src/main/java/eu/openaire/urls_controller/models/Assignment.java index 7da1fa5..f48fa5e 100644 --- a/src/main/java/eu/openaire/urls_controller/models/Assignment.java +++ b/src/main/java/eu/openaire/urls_controller/models/Assignment.java @@ -7,7 +7,6 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; //import javax.persistence.*; import java.io.Serializable; import java.util.Date; -import java.util.List; //@Entity diff --git a/src/main/java/eu/openaire/urls_controller/models/Error.java b/src/main/java/eu/openaire/urls_controller/models/Error.java index 3edc6b0..20a3124 100644 --- a/src/main/java/eu/openaire/urls_controller/models/Error.java +++ b/src/main/java/eu/openaire/urls_controller/models/Error.java @@ -11,18 +11,27 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; }) public class Error { + public enum ErrorType { + couldRetry, noRetry + } + @JsonProperty("type") - private String type; + private ErrorType type; @JsonProperty("message") private String message; - public String getType() { + public Error(ErrorType type, String message) { + this.type = type; + this.message = message; + } + + public ErrorType getType() { return type; } - public void setType(String type) { - type = type; + public void setType(ErrorType type) { + this.type = type; } public String getMessage() { @@ -36,7 +45,7 @@ public class Error { @Override public String toString() { return "Error{" + - "type='" + type + '\'' + + "type=" + type + ", message='" + message + '\'' + '}'; } diff --git a/src/main/java/eu/openaire/urls_controller/models/UrlReport.java b/src/main/java/eu/openaire/urls_controller/models/UrlReport.java index da95163..51dc09f 100644 --- a/src/main/java/eu/openaire/urls_controller/models/UrlReport.java +++ b/src/main/java/eu/openaire/urls_controller/models/UrlReport.java @@ -8,7 +8,8 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ "status", - "payload" + "payload", + "error" }) public class UrlReport { @@ -18,10 +19,14 @@ public class UrlReport { @JsonProperty("payload") private Payload payload; + @JsonProperty("error") + private Error error; - public UrlReport(String status, Payload payload) { + + public UrlReport(String status, Payload payload, Error error) { this.status = status; this.payload = payload; + this.error = error; } @@ -41,11 +46,20 @@ public class UrlReport { this.payload = payload; } + public Error getError() { + return error; + } + + public void setError(Error error) { + this.error = error; + } + @Override public String toString() { return "UrlReport{" + "status='" + status + '\'' + ", payload=" + payload + + ", error=" + error + '}'; } }