package de.unigoettingen.sub.commons.ocr.web; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import de.unigoettingen.sub.ocr.controller.OcrParameters; public class OcrServlet extends HttpServlet { private static final long serialVersionUID = 1L; // For unit testing protected OcrStarter initOcrStarter(HttpServletRequest request) { return new OcrStarter(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OcrStarter ocrStarter = initOcrStarter(request); OcrParameters param = new OcrParameters(); param.inputFolder = request.getParameter("inputFolder"); param.outputFolder = request.getParameter("outputFolder"); param.inputTextType = request.getParameter("textType"); param.inputLanguages = request.getParameterValues("languages"); param.outputFormats = request.getParameterValues("outputFormats"); setProperty(request, param, "email"); setProperty(request, param, "user"); setProperty(request, param, "password"); setEngineParameters(request, param); ocrStarter.setParameters(param); String validationMessage = ocrStarter.checkParameters(); if (validationMessage.equals("OK")) { new Thread(ocrStarter).start(); goToView("ocr-started.jsp", request, response); } else { request.setAttribute("validationMessage", validationMessage); goToView("invalid-parameters.jsp", request, response); } } private void setProperty(HttpServletRequest request, OcrParameters param, String key) { String requestValue = request.getParameter(key); if (requestValue != null && !requestValue.isEmpty()) { param.props.setProperty(key, requestValue); } } private void setEngineParameters(HttpServletRequest request, OcrParameters param) { String ocrService = request.getParameter("ocrEngine"); if ("gbvAntiqua".equals(ocrService)) { param.ocrEngine = "abbyy-multiuser"; param.props.setProperty("abbyy.config", "gbv-antiqua.properties"); // just overriding it for now, since the antiqua server won't accept gothic param.inputTextType = "normal"; } else if ("gbvFraktur".equals(ocrService)) { param.ocrEngine = "abbyy-multiuser"; param.props.setProperty("abbyy.config", "gbv-fraktur.properties"); } else if ("abbyyCloud".equals(ocrService)) { param.ocrEngine = "ocrsdk"; } param.props.setProperty("books.split", "true"); } protected void goToView(String viewName, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher view = request.getRequestDispatcher(viewName); view.forward(request, response); } }