package com.psddev.cms.tool.page; import java.io.IOException; import java.util.Map; import java.util.UUID; import javax.servlet.ServletException; import com.psddev.cms.db.WorkStream; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.Search; import com.psddev.cms.tool.SearchResultSelection; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Query; import com.psddev.dari.util.ObjectUtils; import com.psddev.dari.util.RoutingFilter; @RoutingFilter.Path(application = "cms", value = CreateWorkStream.PATH) public class CreateWorkStream extends PageServlet { public static final String PATH = "/createWorkStream"; @Override protected String getPermissionId() { return null; } @Override protected void doService(ToolPageContext page) throws IOException, ServletException { if (page.requireUser()) { return; } WorkStream object = (WorkStream) page.findOrReserve(WorkStream.class); if (page.isFormPost() && page.param(String.class, "action-save") != null) { doPost(page, object); return; } page.writeStart("div", "class", "widget"); page.writeFormHeading(object); page.include("/WEB-INF/errors.jsp"); page.writeStart("form", "method", "post", "action", page.objectUrl("", object)); page.writeElement("input", "type", "hidden", "name", "incompleteIfMatching", page.param(boolean.class, "incompleteIfMatching")); page.writeFormFields(object); page.writeStart("div", "class", "buttons"); page.writeStart("button", "class", "action icon icon-action-save", "name", "action-save", "value", "true"); page.writeHtml(page.localize(CreateWorkStream.class, "action.save")); page.writeEnd(); page.writeEnd(); page.writeEnd(); page.writeEnd(); } private void doPost(ToolPageContext page, WorkStream object) { try { page.updateUsingParameters(object); String searchString = page.param(String.class, "search"); Query<?> query; if (!ObjectUtils.isBlank(searchString)) { Search search = new Search(); search.getState().setValues((Map<String, Object>) ObjectUtils.fromJson(searchString)); query = search.toQuery(page.getSite()); } else { String queryString = page.param(String.class, "query"); query = Query.fromAll(); query.getState().setValues((Map<String, Object>) ObjectUtils.fromJson(queryString)); UUID selectionId = page.param(UUID.class, "selectionId"); if (selectionId != null) { page.getUser().deactivateSelection(Query.from(SearchResultSelection.class).where("_id = ?", selectionId).first()); } } object.setQuery(query); object.setIncompleteIfMatching(page.param(boolean.class, "incompleteIfMatching")); page.publish(object); page.writeStart("script", "type", "text/javascript"); page.write("window.location = window.location;"); page.writeEnd(); } catch (Exception error) { page.getErrors().add(error); } } }