/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.smartitengineering.generator.engine.webservice.resource;
import com.smartitengineering.cms.api.content.Content;
import com.smartitengineering.generator.engine.service.ReportFilter;
import com.smartitengineering.generator.engine.service.factory.Services;
import com.smartitengineering.util.rest.atom.server.AbstractResource;
import java.util.Collection;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.commons.codec.binary.StringUtils;
/**
*
* @author saumitra
*/
public class ReportsResource extends AbstractResource {
public static final String REPORT_PATH = "i/{reportContentId}";
private ReportFilter filter;
public ReportFilter getFilter() {
if (this.filter == null) {
this.filter = new ReportFilter();
}
return filter;
}
public void setReportFilter(ReportFilter filter) {
if (filter != null) {
this.filter = filter;
}
}
@GET
@Produces(MediaType.APPLICATION_ATOM_XML)
public Response get() {
Response.ResponseBuilder builder = Response.ok();
Collection<Content> reports = Services.getInstance().getReportService().search(filter);
Feed feed = getFeed("Reports");
//Add entries
if (reports != null && !reports.isEmpty()) {
for (Content content : reports) {
Entry contentEntry = getEntry(content.getContentId().toString(), content.getContentId().toString(), content.
getLastModifiedDate(), getLink(getRelativeURIBuilder().path(getUriInfo().getPath()).path(REPORT_PATH).build(
StringUtils.newStringUtf8(content.getContentId().getId())), "report", MediaType.APPLICATION_ATOM_XML));
feed.addEntry(contentEntry);
}
}
return builder.build();
}
@GET
@Path(REPORT_PATH)
public ReportResource getReport() {
return getResourceContext().getResource(ReportResource.class);
}
@Override
protected String getAuthor() {
return "Smart Generator Engine";
}
}