package qa.qcri.aidr.manager.service.impl; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.log4j.Logger; import org.codehaus.jackson.map.ObjectMapper; import org.glassfish.jersey.jackson.JacksonFeature; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import qa.qcri.aidr.common.code.JacksonWrapper; import qa.qcri.aidr.manager.dto.UITemplateRequest; import qa.qcri.aidr.manager.exception.AidrException; import qa.qcri.aidr.manager.service.UITemplateService; import qa.qcri.aidr.manager.util.CustomUITemplateLookup; /** * Created with IntelliJ IDEA. * User: jlucas * Date: 3/23/14 * Time: 2:13 PM * To change this template use File | Settings | File Templates. */ @Service("uitemplateService") public class UITemplateServiceImpl implements UITemplateService { private Logger logger = Logger.getLogger(getClass()); @Value("${taggerMainUrl}") private String taggerMainUrl; @Value("${crowdsourcingAPIMainUrl}") private String crowdsourcingAPIMainUrl; @Value("${persisterMainUrl}") private String persisterMainUrl; @Value("${outputAPIMainUrl}") private String outputAPIMainUrl; @Override public UITemplateRequest updateTemplate(UITemplateRequest uiTemplateRequest) throws AidrException { // return null; //To change body of implemented methods use File | Settings | File Templates. Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).build(); try { WebTarget webResource = client.target(taggerMainUrl + "/customuitemplate"); ObjectMapper objectMapper = JacksonWrapper.getObjectMapper(); logger.info("updateTemplate - updateTemplate : " + objectMapper.writeValueAsString(uiTemplateRequest)); Response clientResponse = webResource.request(MediaType.APPLICATION_JSON) .post(Entity.json(objectMapper.writeValueAsString(uiTemplateRequest)), Response.class); String jsonResponse = clientResponse.readEntity(String.class); //System.out.println("jsonResponse: " + jsonResponse); UITemplateRequest response = objectMapper.readValue(jsonResponse, UITemplateRequest.class); if (response != null) { if(uiTemplateRequest.getTemplateType().equals(CustomUITemplateLookup.CLASSIFIER_WELCOME_PAGE)){ webResource = client.target(crowdsourcingAPIMainUrl + "/customUI/welcome/update"); Response clientResponse2 = webResource.request(MediaType.APPLICATION_JSON) .post(Entity.json(objectMapper.writeValueAsString(uiTemplateRequest)), Response.class); } if(uiTemplateRequest.getTemplateType().equals(CustomUITemplateLookup.CLASSIFIER_SKIN)){ webResource = client.target(crowdsourcingAPIMainUrl + "/customUI/skin/update"); Response clientResponse2 = webResource.request(MediaType.APPLICATION_JSON) .post(Entity.json(objectMapper.writeValueAsString(uiTemplateRequest)), Response.class); } if(uiTemplateRequest.getTemplateType().equals(CustomUITemplateLookup.CLASSIFIER_TUTORIAL_ONE) || uiTemplateRequest.getTemplateType().equals(CustomUITemplateLookup.CLASSIFIER_TUTORIAL_ONE) ){ webResource = client.target(crowdsourcingAPIMainUrl + "/customUI/tutorial/update"); Response clientResponse2 = webResource.request(MediaType.APPLICATION_JSON) .post(Entity.json(objectMapper.writeValueAsString(uiTemplateRequest)), Response.class); } logger.info("updateTemplate - updateTemplate with ID " + response + " was created in Tagger"); return response; } return null; } catch (Exception e) { logger.error("Error while creating new template in Tagger", e); throw new AidrException("Error while creating new template in Tagger", e); } } @Override public String getTemplatesByCrisisID(long crisisID) throws AidrException { Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).build(); try { logger.info("getPublicLandingPageTemplate: " + crisisID); logger.info("url: " + taggerMainUrl + "/customuitemplate/crisisID/" + crisisID); WebTarget webResource = client.target(taggerMainUrl + "/customuitemplate/crisisID/" + crisisID); ObjectMapper objectMapper = JacksonWrapper.getObjectMapper(); Response clientResponse = webResource.request(MediaType.APPLICATION_JSON).get(); String jsonResponse = clientResponse.readEntity(String.class); logger.info("Received jsonResponse: " + jsonResponse); if (jsonResponse != null) { logger.info("getPublicLandingPageTemplate"); return jsonResponse; } return null; } catch (Exception e) { logger.error("Error while creating new template in Tagger", e); throw new AidrException("Error while creating new template in Tagger", e); } } @Override public String getCrisisChildrenElement(Integer id) throws AidrException { Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).build(); logger.info("Received request for trainer-api getCrisisChildrenElement with crisisID = " + id); try { WebTarget webResource = client.target(crowdsourcingAPIMainUrl + "/crisis/id/" + new Long(id)); Response clientResponse = webResource.request(MediaType.APPLICATION_JSON).get(); String jsonResponse = clientResponse.readEntity(String.class); logger.info("getCrisisChildrenElement - clientResponse : " + jsonResponse); return jsonResponse; } catch (Exception e) { logger.error("Error while getting CrisisChildrenElement in UITemplate", e); throw new AidrException("Error while getting CrisisChildrenElement in UITemplate", e); } } }