view software/mpdl-services-new/mpiwg-mpdl-cms-web/src/de/mpg/mpiwg/berlin/mpdl/servlets/cms/DocumentOperation.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
line wrap: on
line source

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);
  }
  
}