From 1b0a18d44180a3c19ae9325bb599831708804c03 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Sat, 03 Jul 2021 07:41:48 +0000
Subject: [PATCH] Nutzung des HttpHelper hinzugefuegt

---
 src/de/uhilger/httpserver/adoc/AdocActor.java |   58 ++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/src/de/uhilger/httpserver/adoc/AdocActor.java b/src/de/uhilger/httpserver/adoc/AdocActor.java
index e918f00..08bb487 100644
--- a/src/de/uhilger/httpserver/adoc/AdocActor.java
+++ b/src/de/uhilger/httpserver/adoc/AdocActor.java
@@ -17,8 +17,12 @@
  */
 package de.uhilger.httpserver.adoc;
 
+import com.sun.net.httpserver.HttpExchange;
+import de.uhilger.httpserver.base.HttpResponder;
 import java.io.File;
+import java.io.IOException;
 import java.util.Map;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import static org.asciidoctor.Asciidoctor.Factory.create;
@@ -42,28 +46,42 @@
   private static final Logger logger = Logger.getLogger(AdocActor.class.getName());
   
   private static final String DOT = ".";
-  private static final String HTML = "html";
-  private static final String PDF = "pdf";
+  public static final String HTML = "html";
+  public static final String PDF = "pdf";
   
+  public void handle(HttpExchange e, String fileBase, String fileName) throws IOException {
+    File adocfile = new File(fileBase, fileName);
+    logger.fine("adocfile: " + adocfile.getAbsolutePath());
+    AdocActor actor = new AdocActor();
+    File outfile = actor.getTargetFile(adocfile, AdocActor.HTML);
+    logger.fine("outfile: " + outfile.getAbsolutePath());
+    HttpResponder fs = new HttpResponder();
+    fs.serveFile(e, outfile);
+  }
+  
+  public File getTargetFile(File adocfile, String ext) {
+    String nameext = adocfile.getName();
+    String fname = nameext.substring(0, nameext.lastIndexOf(DOT));
+    File outfile = new File(adocfile.getParentFile(), fname + DOT + ext);
+    logger.log(Level.FINE, "out: {0}", outfile.getAbsolutePath());
+    return outfile;
+  }
   
   public void processAdocFile(File adocfile, String pdf) {
     
     String absname = adocfile.getAbsolutePath();
-    logger.fine("in: " + absname);
+    logger.log(Level.FINE, "in: {0}", 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
-    logger.fine("out: " + outfile.getAbsolutePath());
-    //response.setCharacterEncoding("UTF-8");
+    File outfile = getTargetFile(adocfile, HTML);
+    File htmlfile = outfile;
     
     /*
       nach HTML transformieren, wenn die Quelle sich geandert hat oder 
       die HTML-Datei noch nicht existiert
     */
     if(!htmlfile.exists() || adocfile.lastModified() > htmlfile.lastModified()) {
+      logger.fine("calling transform for " + absname);
       transform(absname);
     }
  
@@ -74,23 +92,13 @@
     */
     
     if(null != pdf && pdf.equalsIgnoreCase(Boolean.TRUE.toString())) {
-      File pdffile = new File(adocfile.getParentFile(), fname + DOT + PDF);
+      //File pdffile = new File(adocfile.getParentFile(), fname + DOT + PDF);
+      File pdffile = getTargetFile(adocfile, PDF);
       outfile = pdffile; // PDF soll zurueckgegeben werden
       if(!pdffile.exists() || adocfile.lastModified() > pdffile.lastModified()) {
         //response.setContentType("application/pdf");
         transform(absname, PDF);
       }
-      //ServletOutputStream os = response.getOutputStream();
-      //InputStream bytes = new FileInputStream(outfile);
-      //int b = bytes.read();
-      //while(b > -1 ) {
-      //  os.write(b);
-      //  b = bytes.read();
-      //}
-    } else {
-      //PrintWriter out = response.getWriter();
-      //InputStreamReader in = new InputStreamReader(new FileInputStream(outfile), "UTF-8");
-      //in.transferTo(out);
     }
   }
   
@@ -110,6 +118,7 @@
    * nach PDF transformiert werden soll
    */
   private void transform(String fileName, String backend) {    
+    logger.fine("fileName: " + fileName + ", backend: " + backend);
     Map<String, Object> attributes;
     File outFile = new File(fileName);
     String thisDirName = outFile.getParent();
@@ -139,9 +148,14 @@
               .attributes(attributes).asMap();
     }
     
+    File adcf = new File(fileName);
+    logger.fine("before asciidoctor create, adcf: " + adcf.getAbsolutePath());
     Asciidoctor asciidoctor = create();    
+    logger.fine("asciidoctor created.");
     asciidoctor.requireLibrary("asciidoctor-diagram");
-    asciidoctor.convertFile(new File(fileName), options);    
+    logger.fine("asciidoctor requireLibrary diagram passed.");
+    logger.fine("calling asciidoctor.convert for file " + adcf.getAbsolutePath());
+    asciidoctor.convertFile(adcf, options);    
   }
   
 }

--
Gitblit v1.9.3