/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.smartitengineering.generator.engine.webservice.resource; import com.smartitengineering.generator.engine.service.ReportConfigFilter; import com.smartitengineering.generator.engine.webservice.domain.ReportConfig; import com.smartitengineering.generator.engine.service.factory.Services; import com.smartitengineering.generator.engine.webservice.adapter.ReportConfigAdapterHelper; import com.smartitengineering.util.bean.adapter.GenericAdapterImpl; import com.smartitengineering.util.rest.atom.server.AbstractResource; import java.util.Collection; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; import org.apache.abdera.model.Entry; import org.apache.abdera.model.Feed; import org.apache.abdera.model.Link; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author saumitra */ public class ReportConfigsResource extends AbstractResource { public static final String CONFIG = "id/{id}"; @Context private HttpServletRequest servletRequest; private GenericAdapterImpl<ReportConfig, com.smartitengineering.generator.engine.domain.ReportConfig> adapter; protected transient Logger logger = LoggerFactory.getLogger(getClass()); public ReportConfigsResource() { adapter = new GenericAdapterImpl<ReportConfig, com.smartitengineering.generator.engine.domain.ReportConfig>(); adapter.setHelper(new ReportConfigAdapterHelper()); } @GET @Produces(MediaType.APPLICATION_ATOM_XML) public Response get(@DefaultValue("10") @QueryParam("count") Integer count, @DefaultValue("0") @QueryParam("start") Integer index, @QueryParam("nameLike") String nameLike) { ResponseBuilder responseBuilder = Response.status(Status.OK); Feed atomFeed = getFeed("ReportConfigs", new Date()); ReportConfigFilter reportConfigFilter = new ReportConfigFilter(); reportConfigFilter.setNameLike(nameLike); Collection<com.smartitengineering.generator.engine.domain.ReportConfig> reportConfigs = Services.getInstance(). getReportConfigService().searchConfigs(reportConfigFilter); if (reportConfigs != null && !reportConfigs.isEmpty()) { for (com.smartitengineering.generator.engine.domain.ReportConfig reportConfig : reportConfigs) { Entry reportConfigEntry = getAbderaFactory().newEntry(); reportConfigEntry.setId(reportConfig.getId()); reportConfigEntry.setTitle(reportConfig.getName()); Link reportConfigLink = getAbderaFactory().newLink(); reportConfigLink.setHref(getRelativeURIBuilder().path(RootResource.CONFIGS).path(CONFIG).build(reportConfig. getId()).toString()); reportConfigLink.setRel(Link.REL_ALTERNATE); reportConfigLink.setMimeType(MediaType.APPLICATION_ATOM_XML); reportConfigEntry.addLink(reportConfigLink); atomFeed.addEntry(reportConfigEntry); } } return responseBuilder.build(); } @POST @Consumes(MediaType.APPLICATION_JSON) public Response post(ReportConfig reportConfig) { ResponseBuilder responseBuilder; com.smartitengineering.generator.engine.domain.ReportConfig persistentReportConfig = adapter.convert(reportConfig); try { basicPost(persistentReportConfig); responseBuilder = Response.status(Status.CREATED); responseBuilder.location(getAbsoluteURIBuilder().path(RootResource.CONFIGS).path(CONFIG).build(persistentReportConfig. getId())); } catch (Exception ex) { servletRequest.setAttribute("error", ex.getMessage()); responseBuilder = Response.status(Status.BAD_REQUEST); logger.warn("Consuming exception!", ex); } return responseBuilder.build(); } @Path(CONFIG) public ReportConfigResource getReportConfig() { return getResourceContext().getResource(ReportConfigResource.class); } public void basicPost(com.smartitengineering.generator.engine.domain.ReportConfig reportConfig) { Services.getInstance().getReportConfigService().save(reportConfig); } @Override protected String getAuthor() { return "Smart Generator"; } }