WebBox Klassenbibliothek
ulrich@undisclosed
2020-04-21 a22ef629b3f53e99d00784451b3a3cadc8ad599d
src/de/uhilger/wbx/web/AdocServlet.java
@@ -61,42 +61,45 @@
  protected void processRequest(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException 
  {
    response.setContentType("text/html;charset=UTF-8");
    try (PrintWriter out = response.getWriter()) {
      // Asciidoc-Quelldatei aus HTTP-Request ermitteln
      String vPath = request.getServletPath();
      String absname = getServletContext().getRealPath(vPath);
      File adocfile = new File(absname);
      // HTML-Datei ermitteln
      String nameext = adocfile.getName();
      String fname = nameext.substring(0, nameext.lastIndexOf(DOT));
      File htmlfile = new File(adocfile.getParentFile(), fname + DOT + HTML);
      /*
        nach HTML transformieren, wenn die Quelle sich geandert hat oder
        die HTML-Datei noch nicht existiert
      */
      if(!htmlfile.exists() || adocfile.lastModified() > htmlfile.lastModified()) {
        transform(absname);
    // Asciidoc-Quelldatei aus HTTP-Request ermitteln
    String vPath = request.getServletPath();
    String absname = getServletContext().getRealPath(vPath);
    File adocfile = new File(absname);
    // HTML-Datei ermitteln
    String nameext = adocfile.getName();
    String fname = nameext.substring(0, nameext.lastIndexOf(DOT));
    File htmlfile = new File(adocfile.getParentFile(), fname + DOT + HTML);
    File outfile = htmlfile; // Standardmaessig wird HTML zurueckgegeben
    response.setContentType("text/html;charset=UTF-8");
    /*
      nach HTML transformieren, wenn die Quelle sich geandert hat oder
      die HTML-Datei noch nicht existiert
    */
    if(!htmlfile.exists() || adocfile.lastModified() > htmlfile.lastModified()) {
      transform(absname);
    }
    /*
      nach PDF transformieren, wenn der Parameter pdf=true existiert und
      wenn die Quelle sich geandert hat oder
      die PDF-Datei noch nicht existiert
    */
    String pdf = request.getParameter(PDF);
    if(null != pdf && pdf.equalsIgnoreCase(Boolean.TRUE.toString())) {
      File pdffile = new File(adocfile.getParentFile(), fname + DOT + PDF);
      outfile = pdffile; // PDF soll zurueckgegeben werden
      response.setContentType("application/pdf;charset=UTF-8");
      if(!pdffile.exists() || adocfile.lastModified() > pdffile.lastModified()) {
        transform(absname, PDF);
      }
      /*
        nach PDF transformieren, wenn der Parameter pdf=true existiert und
        wenn die Quelle sich geandert hat oder
        die PDF-Datei noch nicht existiert
      */
      String pdf = request.getParameter(PDF);
      if(null != pdf && pdf.equalsIgnoreCase(Boolean.TRUE.toString())) {
        File pdffile = new File(adocfile.getParentFile(), fname + DOT + PDF);
        if(!pdffile.exists() || adocfile.lastModified() > pdffile.lastModified()) {
          transform(absname, PDF);
        }
      }
    }
      
      // HTML-Datei ausgeben
      FileInputStream in = new FileInputStream(htmlfile);
    try (PrintWriter out = response.getWriter()) {
      // abhaengig vom Parameter pdf HTML- oder PDF-Datei ausgeben
      FileInputStream in = new FileInputStream(outfile);
      BufferedReader reader = new BufferedReader(new InputStreamReader(in));
      String line;
      while ((line = reader.readLine()) != null) {