diff software/mpdl-services/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/DocumentOperation.java @ 23:e845310098ba

diverse Korrekturen
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 27 Nov 2012 12:35:19 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/software/mpdl-services/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/DocumentOperation.java	Tue Nov 27 12:35:19 2012 +0100
@@ -0,0 +1,102 @@
+package de.mpg.mpiwg.berlin.mpdl.servlets.cms;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import de.mpg.mpiwg.berlin.mpdl.cms.scheduler.CmsChainScheduler;
+import de.mpg.mpiwg.berlin.mpdl.cms.scheduler.CmsDocOperation;
+import de.mpg.mpiwg.berlin.mpdl.servlets.util.ServletUtil;
+
+public class DocumentOperation extends HttpServlet {
+  private static final long serialVersionUID = 1L;
+
+  public DocumentOperation() {
+    super();
+  }
+
+  public void init(ServletConfig config) throws ServletException  {
+    super.init(config);
+  }
+
+  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+    request.setCharacterEncoding("utf-8");
+    response.setCharacterEncoding("utf-8");
+    String srcUrlStr = request.getParameter("srcUrl");
+    String docId = request.getParameter("docId");  // id in file system: e.g. /tei/en/Test_1789.xml
+    String mainLanguage = request.getParameter("mainLanguage");  // main language of that document
+    String elementNames = request.getParameter("elementNames");  
+    String operation = request.getParameter("operation");
+    String outputFormat = request.getParameter("outputFormat");
+    if (outputFormat == null)
+      outputFormat = "xml";
+    if (outputFormat.equals("xml")) {
+      response.setContentType("text/xml");
+    } else { 
+      response.setContentType("text/html");
+    }
+    CmsDocOperation docOperation = new CmsDocOperation(operation, srcUrlStr, null, docId);
+    if (mainLanguage != null)
+      docOperation.setMainLanguage(mainLanguage);
+    String[] elementNamesArray = null;
+    if (elementNames != null)
+      elementNamesArray = elementNames.split(" ");
+    docOperation.setElementNames(elementNamesArray);
+    try {
+      if (docId == null || docId.isEmpty()) {
+        write(response, "Parameter: \"docId\" is not set. Please set parameter \"docId\".");
+        return;
+      }
+      if (operation.equals("create") || operation.equals("delete")) {
+        CmsChainScheduler scheduler = CmsChainScheduler.getInstance();
+        docOperation = scheduler.doOperation(docOperation);
+        String jobId = "" + docOperation.getOrderId();
+        String baseUrl = ServletUtil.getInstance().getBaseUrl(request);
+        String docJobUrlStr = baseUrl + "/doc/GetDocumentJobs?id=" + jobId;
+        if (outputFormat.equals("xml")) {
+          write(response, "<result>");
+          write(response, "<docJob>");
+          write(response, "<id>" + jobId + "</id>");
+          write(response, "<url>" + docJobUrlStr + "</url>");
+          write(response, "</docJob>");
+          write(response, "</result>");
+        } else if (outputFormat.equals("html")) {
+          write(response, "<html>");
+          write(response, "<h2>" + "Document operation result" + "</h2>");
+          write(response, "See your document operation " + jobId + " <a href=\"" + docJobUrlStr + "\">" + "here" + "</a>");
+          write(response, "</html>");
+        } else if (outputFormat.equals("string")) {
+          write(response, docJobUrlStr);
+        }
+      } else {
+        String errorStr = "Error: Operation: " + operation + " is not supported";
+        if (outputFormat.equals("xml")) {
+          write(response, "<error>" + errorStr + "</error>");
+        } else { 
+          write(response, "<html>");
+          write(response, "<h2>" + "Error" + "</h2>");
+          write(response, errorStr);
+        }
+      }
+      PrintWriter out = response.getWriter();
+      out.close();
+    } catch (Exception e) {
+      throw new ServletException(e);
+    }
+  }
+
+  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+    // TODO 
+  }
+
+  private void write(HttpServletResponse response, String str) throws IOException {
+    PrintWriter out = response.getWriter();
+    out.write(str);
+  }
+  
+}