package com.psddev.cms.tool.page; import java.io.IOException; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import com.psddev.cms.db.Site; import com.psddev.cms.db.Workflow; import com.psddev.cms.db.WorkflowLog; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Query; import com.psddev.dari.db.State; import com.psddev.dari.util.RoutingFilter; @RoutingFilter.Path(application = "cms", value = "workflowLogs") @SuppressWarnings("serial") public class WorkflowLogs extends PageServlet { @Override protected String getPermissionId() { return null; } @Override protected void doService(final ToolPageContext page) throws IOException, ServletException { Object obj = Query.findById(Object.class, page.param(UUID.class, "objectId")); State state = State.getInstance(obj); Workflow workflow = Workflow.findWorkflow(state.as(Site.ObjectModification.class).getOwner(), state); List<WorkflowLog> logs = Query .from(WorkflowLog.class) .where("objectId = ?", page.param(UUID.class, "objectId")) .sortDescending("date") .selectAll(); page.writeHeader(); page.writeStart("div", "class", "widget"); page.writeStart("h1", "class", "icon icon-object-workflow"); page.writeHtml(page.localize(WorkflowLogs.class, "title")); page.writeEnd(); if (!logs.isEmpty()) { page.writeStart("table", "class", "table-striped"); page.writeStart("thead"); page.writeStart("tr"); page.writeStart("th"); page.writeHtml(page.localize(WorkflowLogs.class, "label.state")); page.writeEnd(); page.writeStart("th"); page.writeHtml(page.localize(WorkflowLogs.class, "label.comment")); page.writeEnd(); page.writeStart("th"); page.writeHtml(page.localize(WorkflowLogs.class, "label.user")); page.writeEnd(); page.writeStart("th"); page.writeHtml(page.localize(WorkflowLogs.class, "label.time")); page.writeEnd(); page.writeEnd(); page.writeEnd(); page.writeStart("tbody"); for (WorkflowLog log : logs) { page.writeStart("tr"); page.writeStart("td"); page.writeHtml(workflow == null ? log.getNewWorkflowState() : workflow.getStateDisplayName(log.getNewWorkflowState())); page.writeEnd(); page.writeStart("td"); page.writeHtml(log.getComment()); page.writeEnd(); page.writeStart("td"); page.writeHtml(log.getUserName()); page.writeEnd(); page.writeStart("td"); page.writeHtml(page.formatUserDateTime(log.getDate())); page.writeEnd(); page.writeEnd(); } page.writeEnd(); page.writeEnd(); } page.writeEnd(); page.writeFooter(); } }