package com.psddev.cms.tool.page; import java.io.IOException; import java.util.Collections; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import com.psddev.cms.db.ToolUser; import com.psddev.cms.db.WorkStream; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Query; import com.psddev.dari.util.RoutingFilter; @RoutingFilter.Path(application = "cms", value = "/workStreamUsers") @SuppressWarnings("serial") public class WorkStreamUsers extends PageServlet { @Override protected String getPermissionId() { return "area/dashboard"; } @Override protected void doService(final ToolPageContext page) throws IOException, ServletException { WorkStream workStream = Query.from(WorkStream.class).where("_id = ?", page.param(UUID.class, "id")).first(); List<ToolUser> users = workStream.getUsers(); Collections.sort(users); page.writeStart("div", "class", "widget"); page.writeStart("h1", "class", "icon icon-object-workStream"); // TODO: LOCALIZE page.writeHtml("Users Working On: "); page.writeObjectLabel(workStream); page.writeEnd(); if (users.isEmpty()) { page.writeStart("div", "class", "message message-info"); page.writeStart("p"); page.writeHtml(page.localize(WorkStreamUsers.class, "message.noUsers")); page.writeEnd(); page.writeEnd(); } else { page.writeStart("table", "class", "table-striped"); page.writeStart("thead"); page.writeStart("tr"); page.writeStart("th"); page.writeHtml(page.localize(WorkStreamUsers.class, "label.user")); page.writeEnd(); page.writeStart("th"); page.writeHtml(page.localize(WorkStreamUsers.class, "label.currentlyOn")); page.writeEnd(); page.writeStart("th"); page.writeHtml(page.localize(WorkStreamUsers.class, "label.completed")); page.writeEnd(); page.writeEnd(); page.writeEnd(); page.writeStart("tbody"); for (ToolUser user : users) { page.writeStart("tr"); page.writeStart("td"); page.writeObjectLabel(user); page.writeEnd(); page.writeStart("td"); Object currentItem = workStream.getCurrentItem(user); if (currentItem == null) { page.writeHtml("N/A"); } else { page.writeStart("a", "href", page.objectUrl("/content/edit.jsp", currentItem), "target", "_top"); page.writeObjectLabel(currentItem); page.writeEnd(); } page.writeEnd(); page.writeStart("td"); page.writeHtml(workStream.countComplete(user)); page.writeEnd(); page.writeEnd(); } page.writeEnd(); page.writeEnd(); } page.writeEnd(); } }