package com.psddev.cms.tool.page; import com.google.common.collect.ImmutableMap; import com.psddev.cms.tool.PageServlet; import com.psddev.cms.tool.ToolPageContext; import com.psddev.dari.db.Query; import com.psddev.dari.util.ObjectUtils; import com.psddev.dari.util.RoutingFilter; import javax.servlet.ServletException; import java.io.IOException; import java.util.Date; import java.util.Map; import java.util.UUID; @RoutingFilter.Path(application = "cms", value = "/contentEditBulkSubmissionStatus") public class ContentEditBulkSubmissionStatus extends PageServlet { private static final long serialVersionUID = 1L; @Override protected String getPermissionId() { return null; } @Override protected void doService(ToolPageContext page) throws IOException, ServletException { ContentEditBulkSubmission submission = Query .from(ContentEditBulkSubmission.class) .where("_id = ?", page.param(UUID.class, "id")) .first(); page.writeHeader(); { page.writeStart("div", "class", "widget"); { page.writeStart("h1"); page.writeHtml(page.localize(ContentEditBulkSubmissionStatus.class, "title")); page.writeEnd(); Date finishDate = submission.getFinishDate(); if (finishDate == null) { page.writeStart("div", "class", "message message-warning"); page.writeHtml(page.localize(ContentEditBulkSubmissionStatus.class, "message.running")); writeSubmission(page, submission); page.writeEnd(); page.writeStart("script", "type", "text/javascript"); { page.writeRaw("setTimeout(function() {"); page.writeRaw("window.location.reload();"); page.writeRaw("}, 10000);"); } page.writeEnd(); } else { String returnUrl = page.param(String.class, "returnUrl"); if (!ObjectUtils.isBlank(returnUrl)) { page.writeStart("p"); page.writeStart("a", "class", "icon icon-arrow-left", "href", returnUrl); page.writeHtml(page.localize(ContentEditBulkSubmissionStatus.class, "action.returnToSearch")); page.writeEnd(); page.writeEnd(); } String status; if (submission.getSuccesses() == 0) { status = "error"; } else if (submission.getFailures() > 0) { status = "warning"; } else { status = "success"; } page.writeStart("div", "class", "message message-" + status); page.writeHtml(page.localize(ContentEditBulkSubmissionStatus.class, "message.finished")); page.writeHtml(' '); writeSubmission(page, submission); page.writeEnd(); if (!ObjectUtils.isBlank(submission.getErrors())) { page.writeStart("h2"); page.writeHtml(page.localize("com.psddev.cms.tool.page.content.Errors", "error.bulkSave")); page.writeEnd(); page.writeStart("div", "class", "message message-error"); page.write("<br/>"); for (Map.Entry<String, ContentEditBulkSubmissionError> entry : submission.getErrors().entrySet()) { page.writeStart("ul", "class", "exception"); page.writeStart("li"); page.write(entry.getKey()); page.writeStart("ul", "class", "stackTrace"); page.write(entry.getValue() != null ? entry.getValue().getStackTrace() : ""); page.writeEnd(); page.writeEnd(); page.writeEnd(); } page.writeEnd(); } } } page.writeEnd(); } page.writeFooter(); } private void writeSubmission(ToolPageContext page, ContentEditBulkSubmission submission) throws IOException { page.writeHtml( page.localize( ContentEditBulkSubmissionStatus.class, ImmutableMap.of( "successCount", submission.getSuccesses(), "failureCount", submission.getFailures(), "totalCount", submission.getCount()), "message.submissionStatus")); } }