/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package qa.qcri.aidr.predictui.api; import java.util.ArrayList; import java.util.List; import qa.qcri.aidr.dbmanager.dto.ModelDTO; import qa.qcri.aidr.dbmanager.dto.taggerapi.ModelHistoryWrapper; import qa.qcri.aidr.dbmanager.dto.taggerapi.ModelWrapper; import qa.qcri.aidr.predictui.util.ResponseWrapper; import qa.qcri.aidr.predictui.util.TaggerAPIConfigurationProperty; import qa.qcri.aidr.predictui.util.TaggerAPIConfigurator; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import qa.qcri.aidr.predictui.facade.ModelFacade; /** * REST Web Service * * @author Imran */ @Path("/model") @Stateless public class ModelResource { @Context private UriInfo context; @EJB private ModelFacade modelLocalEJB; public ModelResource() { } @GET @Produces("application/json") @Path("/all") public Response getAllModels() { List<ModelDTO> modelList = modelLocalEJB.getAllModels(); ResponseWrapper response = new ResponseWrapper(); response.setMessage(TaggerAPIConfigurator.getInstance().getProperty(TaggerAPIConfigurationProperty.STATUS_CODE_SUCCESS)); response.setModels(modelList); return Response.ok(response).build(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("{id}") public Response getModelByID(@PathParam("id") Long id){ ModelDTO model = modelLocalEJB.getModelByID(id); return Response.ok(model).build(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("crisis/{crisisID}") public Response getModelByCrisisID(@PathParam("crisisID") Long crisisID){ List<ModelWrapper> modelList = modelLocalEJB.getModelByCrisisID(crisisID); ResponseWrapper response = new ResponseWrapper(); if (modelList == null){ response.setMessage("No models found for the given crisis-id"); return Response.ok(response).build(); } response.setModelWrapper(modelList); return Response.ok(response).build(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("modelFamily/{modelFamilyID}") public Response getModelsByModelFamilyID(@PathParam("modelFamilyID") Long modelFamilyID, @QueryParam("start") Integer start, @QueryParam("limit") Integer limit, @DefaultValue("") @QueryParam("sortColumn") String sortColumn, @DefaultValue("") @QueryParam("sortDirection") String sortDirection){ start = (start != null) ? start : 0; limit = (limit != null) ? limit : 50; Integer total = modelLocalEJB.getModelCountByModelFamilyID(modelFamilyID); List<ModelHistoryWrapper> modelList = new ArrayList<ModelHistoryWrapper>(0); if (total > 0){ modelList = modelLocalEJB.getModelByModelFamilyID(modelFamilyID, start, limit, sortColumn, sortDirection); } ResponseWrapper response = new ResponseWrapper(); response.setModelHistoryWrapper(modelList); response.setTotal(total); return Response.ok(response).build(); } }