annotate software/mpdl-services-new/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/GetDocumentJobs.java @ 25:e9fe3186670c default tip

letzter Stand eingecheckt
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 21 May 2013 10:19:32 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package de.mpg.mpiwg.berlin.mpdl.servlets.cms;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.io.IOException;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.io.PrintWriter;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 import java.util.ArrayList;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import java.util.Date;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 import javax.servlet.ServletConfig;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import javax.servlet.ServletException;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 import javax.servlet.http.HttpServlet;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 import javax.servlet.http.HttpServletRequest;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 import javax.servlet.http.HttpServletResponse;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
13
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 import de.mpg.mpiwg.berlin.mpdl.cms.scheduler.CmsChainScheduler;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 import de.mpg.mpiwg.berlin.mpdl.cms.scheduler.CmsDocOperation;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
16
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 public class GetDocumentJobs extends HttpServlet {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 private static final long serialVersionUID = 1L;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 public GetDocumentJobs() {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
20 super();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
22
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 public void init(ServletConfig config) throws ServletException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 super.init(config);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
26
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 request.setCharacterEncoding("utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 response.setCharacterEncoding("utf-8");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 response.setContentType("text/xml");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 String jobIdStr = request.getParameter("id");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 String outputFormat = request.getParameter("outputFormat");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 if (outputFormat == null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 outputFormat = "xml";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 try {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 boolean getAllJobs = false;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 if (jobIdStr == null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 getAllJobs = true;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 CmsChainScheduler scheduler = CmsChainScheduler.getInstance();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 ArrayList<CmsDocOperation> docOperations = new ArrayList<CmsDocOperation>();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 if (getAllJobs) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 docOperations = scheduler.getDocOperations();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 } else {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 int jobId = Integer.parseInt(jobIdStr);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 CmsDocOperation docOperation = scheduler.getDocOperation(jobId);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 if (docOperation != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 docOperations.add(docOperation);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 PrintWriter out = response.getWriter();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 String resultStr = "";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 if (outputFormat.equals("xml")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 response.setContentType("text/xml");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 resultStr = createXmlString(docOperations);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 } else if (outputFormat.equals("html")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 response.setContentType("text/html");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 resultStr = createHtmlString(docOperations);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 } else if (outputFormat.equals("error")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 response.setContentType("text/html");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 resultStr = createErrorString(docOperations);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 out.print(resultStr);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 out.close();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 } catch (Exception e) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 throw new ServletException(e);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
67
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 String createXmlString(ArrayList<CmsDocOperation> docOperations) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 StringBuilder result = new StringBuilder();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 if (docOperations != null && ! docOperations.isEmpty()) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 result.append("<docJobs>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 for (int i=0; i<docOperations.size(); i++) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 CmsDocOperation docOperation = docOperations.get(i);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 result.append("<job>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 int jobId = docOperation.getOrderId();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 result.append("<id>" + jobId + "</id>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 result.append("<name>" + docOperation.getName() + "</name>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 result.append("<status>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 Date start = docOperation.getStart();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 String startStr = "No start time available because job is scheduled into server queue where other jobs have been started earlier";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 if (start != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 startStr = start.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 result.append("<started>" + startStr + "</started>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 Date end = docOperation.getEnd();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 String endStr = "No end time available because job is not finished yet";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 if (end != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 endStr = end.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 result.append("<finished>" + endStr + "</finished>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 String status = docOperation.getStatus();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 result.append("<description>" + status + "</description>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 String errorMessage = docOperation.getErrorMessage();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 if (errorMessage == null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 errorMessage = "no error";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 result.append("<error>" + errorMessage + "</error>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 result.append("</status>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 if (docOperation.getName().equals("delete")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 result.append("<destination>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 result.append("<docId>" + docOperation.getDocIdentifier() + "</docId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 result.append("</destination>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 } else if (docOperation.getName().equals("create")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 result.append("<source>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 result.append("<url>" + docOperation.getSrcUrl() + "</url>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 result.append("<uploadFileName>" + docOperation.getUploadFileName() + "</uploadFileName>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 result.append("</source>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 result.append("<destination>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 result.append("<docId>" + docOperation.getDocIdentifier() + "</docId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 result.append("</destination>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 String desc = "Document operations are maintained on server asychronously. Each operation is scheduled into a server job queue " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 "and is executed when all previous started jobs in the queue are worked off. Each operation needs some execution time dependent " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 "on the size and the number of pages of the document, the speed of the network connection and the performance of the " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 "server.";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 result.append("<description>" + desc + "</description>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 result.append("</job>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
116 result.append("</docJobs>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 } else {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 String message = "there are no scheduled jobs (neither finished, queued or executed)";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
119 result.append("<message>" + message + "</message>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 return result.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
123
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
124 String createHtmlString(ArrayList<CmsDocOperation> docOperations) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 // TODO all
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 StringBuilder result = new StringBuilder();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
127 result.append("<html>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 result.append("<head>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
129 result.append("<title>" + "Document operation status" + "</title>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 result.append("</head>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 result.append("<body>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 result.append("<table>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 result.append("<h1>" + "Document operation status" + "</h1>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 if (docOperations != null && ! docOperations.isEmpty()) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 for (int i=0; i<docOperations.size(); i++) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 result.append("<tr>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 result.append("<td>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 CmsDocOperation docOperation = docOperations.get(i);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 result.append("<b>Operation: </b>" + docOperation.getName());
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 int jobId = docOperation.getOrderId();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 result.append("<p/>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 result.append("<b>Job id: </b>" + jobId);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 result.append("<p/>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 result.append("<b>Job status: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 result.append("<ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 Date start = docOperation.getStart();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 String startStr = "No start time available because job is scheduled into server queue where other jobs have been started earlier";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 if (start != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 startStr = start.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
150 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 result.append("<b>Started: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 result.append("<started>" + startStr + "</started>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 Date end = docOperation.getEnd();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 String endStr = "No end time available because job is not finished yet";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 if (end != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 endStr = end.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 result.append("<b>Finished: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 result.append("<finished>" + endStr + "</finished>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 String status = docOperation.getStatus();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
164 result.append("<b>Description: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 result.append("<description>" + status + "</description>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
166 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 String errorMessage = docOperation.getErrorMessage();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 if (errorMessage != null) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 result.append("<font color=\"#FF0000\"><b>Error: </b></font>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 result.append("<error>" + errorMessage + "</error>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 } else {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 result.append("<b>Error: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
174 result.append("<error>" + "no error" + "</error>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 result.append("</ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 if (docOperation.getName().equals("delete")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 result.append("<b>Destination</b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 result.append("<ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
181 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 result.append("<b>Document identifier: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 result.append("<docId>" + docOperation.getDocIdentifier() + "</docId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 result.append("</ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 } else if (docOperation.getName().equals("create")) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 result.append("<b>Source</b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 result.append("<ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 result.append("<url>" + docOperation.getSrcUrl() + "</url>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
191 String uploadFileName = docOperation.getUploadFileName();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 if (uploadFileName != null) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 result.append("<uploadFileName>" + uploadFileName + "</uploadFileName>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
198 result.append("</ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 result.append("<b>Destination</b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 result.append("<ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 result.append("<li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 result.append("<b>Document identifier: </b>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
203 result.append("<docId>" + docOperation.getDocIdentifier() + "</docId>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 result.append("</li>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 result.append("</ul>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 String desc = "Document operations are maintained on server asychronously. Each operation is scheduled into a server job queue " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 "and is executed when all previous started jobs in the queue are worked off. Each operation needs some execution time dependent " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 "on the size and the number of pages of the document, the speed of the network connection and the performance of the " +
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
210 "server.";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 result.append("<b>Description: </b>" + desc);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 result.append("<p/>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
213 result.append("<hr/>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 result.append("</td>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 result.append("</tr>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 } else {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
218 String message = "there are no scheduled jobs (neither finished, queued or executed)";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 result.append("<message>" + message + "</message>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
220 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 result.append("</table>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 result.append("</body>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 result.append("</html>");
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 return result.toString();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
225 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
226
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 String createErrorString(ArrayList<CmsDocOperation> docOperations) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 String error = "";
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
229 if (docOperations != null && ! docOperations.isEmpty()) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 for (int i=0; i<docOperations.size(); i++) {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 CmsDocOperation docOperation = docOperations.get(i);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 String errorMessage = docOperation.getErrorMessage();
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 if (errorMessage != null)
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 error = errorMessage;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 return error;
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
239
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 doGet(request, response);
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
242 }
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
243
e9fe3186670c letzter Stand eingecheckt
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 }