package qa.qcri.aidr.predictui.api; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.apache.log4j.Logger; import qa.qcri.aidr.dbmanager.dto.CustomUiTemplateDTO; import qa.qcri.aidr.predictui.facade.CustomUITemplateFacade; import qa.qcri.aidr.predictui.util.ResponseWrapper; import qa.qcri.aidr.predictui.util.TaggerAPIConfigurationProperty; import qa.qcri.aidr.predictui.util.TaggerAPIConfigurator; /** * Created with IntelliJ IDEA. * User: jlucas * Date: 3/20/14 * Time: 2:27 PM * To change this template use File | Settings | File Templates. */ @Path("/customuitemplate") @Stateless public class CustomUITemplateResource { @Context private UriInfo context; @EJB private CustomUITemplateFacade customUITemplateFacade; private static Logger logger = Logger.getLogger(CustomUITemplateResource.class); public CustomUITemplateResource(){ } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response addNewTemplate(CustomUiTemplateDTO customUITemplate) { boolean isUpdate = false; CustomUiTemplateDTO dbTemplate = null; int type = customUITemplate.getTemplateType(); if(!isAttributeInfoRequired(type)){ List<CustomUiTemplateDTO> templates = customUITemplateFacade.getCustomUITemplateBasedOnTypeByCrisisID(customUITemplate.getCrisisID(), customUITemplate.getTemplateType()); logger.info("templates size : " + templates.size()); if(templates.size() > 0){ isUpdate = true; dbTemplate = templates.get(0); } } else{ List<CustomUiTemplateDTO> templates = customUITemplateFacade.getCustomUITemplateBasedOnTypeByCrisisIDAndAttributeID(customUITemplate.getCrisisID(),customUITemplate.getNominalAttributeID(), customUITemplate.getTemplateType()); logger.info("templates size : " + templates.size()); if(templates.size() > 0){ isUpdate = true; dbTemplate = templates.get(0); } } CustomUiTemplateDTO addedTemplate = null; logger.info("isUpdate : " + isUpdate); if(isUpdate) { addedTemplate = customUITemplateFacade.updateCustomUITemplate(dbTemplate, customUITemplate) ; logger.info(addedTemplate.getCrisisID()); return Response.ok(addedTemplate).build(); } else{ addedTemplate = customUITemplateFacade.addCustomUITemplate(customUITemplate); } return Response.ok(addedTemplate).build(); } @GET @Produces(MediaType.APPLICATION_JSON) @Path("/crisisID/{crisisID}") public Response getCrisisByCode(@PathParam("crisisID") int crisisID) { List<CustomUiTemplateDTO> customUITemplate = null; try { customUITemplate = customUITemplateFacade.getAllCustomUITemplateByCrisisID((long) crisisID); } catch (RuntimeException e) { return Response.ok(new ResponseWrapper(TaggerAPIConfigurator.getInstance().getProperty(TaggerAPIConfigurationProperty.STATUS_CODE_FAILED), e.getCause().getCause().getMessage())).build(); } return Response.ok(customUITemplate).build(); } @GET @Produces("application/json") @Path("/tester") public Response ping() { String response = "{\"application\":\"aidr-tagger-api\", \"status\":\"RUNNING\"}"; return Response.ok(response).build(); ///landingpage/crisisID/ } private boolean isAttributeInfoRequired(int type){ boolean returnValue = false; if(type == Integer.parseInt(TaggerAPIConfigurator.getInstance().getProperty(TaggerAPIConfigurationProperty.CLASSIFIER_DESCRIPTION_PAGE))){ returnValue = true; } if(type == Integer.parseInt(TaggerAPIConfigurator.getInstance().getProperty(TaggerAPIConfigurationProperty.CLASSIFIER_TUTORIAL_ONE))){ returnValue = true; } if(type == Integer.parseInt(TaggerAPIConfigurator.getInstance().getProperty(TaggerAPIConfigurationProperty.CLASSIFIER_TUTORIAL_TWO))){ returnValue = true; } return returnValue; } }