Skip to content

v0.2.50..v0.2.51 changeset JobsResource.java

Garret Voltz edited this page Jan 15, 2020 · 1 revision
diff --git a/hoot-services/src/main/java/hoot/services/controllers/jobs/JobsResource.java b/hoot-services/src/main/java/hoot/services/controllers/jobs/JobsResource.java
index d035a27..f166d82 100644
--- a/hoot-services/src/main/java/hoot/services/controllers/jobs/JobsResource.java
+++ b/hoot-services/src/main/java/hoot/services/controllers/jobs/JobsResource.java
@@ -29,12 +29,18 @@ package hoot.services.controllers.jobs;
 import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.transaction.annotation.Transactional;
@@ -47,7 +53,7 @@ import hoot.services.models.db.Users;
 @Path("")
 @Transactional
 public class JobsResource {
-    private static final int MAX_SIZE = 10;
+    private static final Logger logger = LoggerFactory.getLogger(JobsResource.class);
 
     @Autowired
     private JobsStatusesManager jobsStatusesManager;
@@ -56,21 +62,6 @@ public class JobsResource {
     public JobsResource() {}
 
     /**
-     * This service allows for tracking the status of Hootenanny jobs launched by other web services.
-     *
-     * GET hoot-services/jobs/recent
-     *
-     * @return job status JSON
-     */
-    @GET
-    @Path("/recent")
-    @Produces(MediaType.APPLICATION_JSON)
-    public List<JobStatusResponse> getJobStatus(@Context HttpServletRequest request) {
-        Users user = Users.fromRequest(request);
-        return this.jobsStatusesManager.getRecentJobs(user, MAX_SIZE);
-    }
-
-    /**
      * This service allows for tracking the status of running Hootenanny jobs launched all users.
      *
      * GET hoot-services/jobs/running
@@ -81,7 +72,7 @@ public class JobsResource {
     @Path("/running")
     @Produces(MediaType.APPLICATION_JSON)
     public List<JobStatusResponse> getRunningJobs() {
-        return this.jobsStatusesManager.getRunningJobs();
+        return jobsStatusesManager.getRunningJobs();
     }
 
     /**
@@ -94,9 +85,21 @@ public class JobsResource {
     @GET
     @Path("/history")
     @Produces(MediaType.APPLICATION_JSON)
-    public List<JobStatusResponse> getHistoryJobs(@Context HttpServletRequest request) {
+    public JobHistory getHistoryJobs(@Context HttpServletRequest request,
+            @QueryParam("sort") @DefaultValue("") String sort,
+            @QueryParam("offset") @DefaultValue("0") long offset,
+            @QueryParam("limit") @DefaultValue("25") long limit,
+            @QueryParam("jobType") @DefaultValue("") String type,
+            @QueryParam("status") @DefaultValue("") String status
+            ) {
         Users user = Users.fromRequest(request);
-        return this.jobsStatusesManager.getJobsHistory(user);
+        try {
+            return jobsStatusesManager.getJobsHistory(user, sort, offset, limit, type, status);
+        } catch (IllegalArgumentException iae) {
+            logger.error(iae.getMessage(), iae);
+            throw new WebApplicationException(iae, Response.status(Response.Status.BAD_REQUEST).entity(iae.getMessage()).build());
+        }
     }
 
+
 }
Clone this wiki locally