From fab80c872af697d61f200fd410a7ecc64ca0a537 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Mon, 06 Mar 2017 22:59:47 +0000
Subject: [PATCH] dekodieren fuer Codemirror

---
 src/java/de/uhilger/filecms/api/FileMgr.java |  119 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 89 insertions(+), 30 deletions(-)

diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java
index 649357d..840a223 100644
--- a/src/java/de/uhilger/filecms/api/FileMgr.java
+++ b/src/java/de/uhilger/filecms/api/FileMgr.java
@@ -21,10 +21,13 @@
 import de.uhilger.filecms.data.FileRef;
 import de.uhilger.filecms.web.Initialiser;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -32,6 +35,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringEscapeUtils;
 
 /**
  *
@@ -103,9 +107,12 @@
     
     Object p = getRequest().getUserPrincipal();
     if(p instanceof Principal) {
-      FileReader reader = null;
+      Reader reader = null;
       try {
         File targetFile = new File(getTargetDir(relPath), fileName);
+        
+        //reader = new InputStreamReader(new FileInputStream(targetFile), "UTF8");
+        
         reader = new FileReader(targetFile);
         StringBuffer buf = new StringBuffer();
         char[] readBuffer = new char[1024];
@@ -205,38 +212,90 @@
     return result;
   }
   
-  public FileRef saveTextFile(String relPath, String fileName, String contents) {
+  public FileRef saveTextFileAs(String relPath, String fileName, String contents) {
+    FileRef savedFile = null;
+    logger.fine(relPath + " " + fileName);
+    //FileRef datenRef = getBase();
+    Object p = getRequest().getUserPrincipal();
+    if(p instanceof Principal) {
+      File targetFile = new File(getTargetDir(relPath), fileName);
+      if(targetFile.exists()) {
+        targetFile = getNewFileName(targetFile);
+      } else {
+        targetFile.getParentFile().mkdirs();
+      }
+      saveToFile(targetFile, contents);
+    }
+    return savedFile;
+  }
+  
+  private File getNewFileName(File file) {
+    File dir = file.getParentFile();
+    String targetName = file.getName();
+    logger.fine("targetName: " + targetName);
+    String ext = "";
+    int dotpos = targetName.indexOf(".");
+    if(dotpos > -1) {
+      ext = targetName.substring(dotpos);
+      targetName = targetName.substring(0, dotpos);
+    }
+    logger.fine("targetName: " + targetName + ", ext: " + ext);
+    int i = 1;
+    while(file.exists()) {
+      StringBuffer buf = new StringBuffer();
+      buf.append(targetName);
+      buf.append("-");
+      buf.append(i);
+      if(ext.length() > 0) {
+        buf.append(ext);
+      }
+      file = new File(dir, buf.toString());
+      i++;
+    }
+    logger.fine("new file: " + file.getName());
+    return file;
+  }  
+  
+  private FileRef saveToFile(File targetFile, String contents) {
     FileRef savedFile = null;
     try {
-      FileRef datenRef = getBase();
-      Object p = getRequest().getUserPrincipal();
-      if(p instanceof Principal) {
-        File targetFile = new File(getTargetDir(relPath), fileName);
-        if(targetFile.exists()) {
-          /*
-            muss delete() sein?
-            pruefen: ueberschreibt der FileWriter den alteen Inhalt oder 
-            entsteht eine unerwuenschte Mischung aus altem und neuem 
-            Inhalt?
-          */
-          targetFile.delete();
-        } else {
-          targetFile.getParentFile().mkdirs();
-        }
-        targetFile.createNewFile();
-        FileWriter w = new FileWriter(targetFile);
-        w.write(contents);
-        w.flush();
-        w.close();
-        savedFile = new FileRef(
-                targetFile.getAbsolutePath(), 
-                targetFile.isDirectory(), 
-                targetFile.isHidden(), 
-                targetFile.lastModified(), 
-                targetFile.length());
-      }
+      targetFile.createNewFile();
+      FileWriter w = new FileWriter(targetFile);
+      //w.write(StringEscapeUtils.unescapeHtml(contents));
+      w.write(contents);
+      w.flush();
+      w.close();
+      savedFile = new FileRef(
+              targetFile.getAbsolutePath(),
+              targetFile.isDirectory(),
+              targetFile.isHidden(),
+              targetFile.lastModified(),
+              targetFile.length());
     } catch (IOException ex) {
-      logger.log(Level.SEVERE, null, ex);
+      logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
+    }
+    return savedFile;
+  }
+  
+  public FileRef saveTextFile(String relPath, String fileName, String contents) {
+    FileRef savedFile = null;
+    logger.fine(relPath + " " + fileName);
+    //FileRef datenRef = getBase();
+    Object p = getRequest().getUserPrincipal();
+    if(p instanceof Principal) {
+      File targetFile = new File(getTargetDir(relPath), fileName);
+      if(targetFile.exists()) {
+        /*
+          muss delete() sein?
+          pruefen: ueberschreibt der FileWriter den alteen Inhalt oder 
+          entsteht eine unerwuenschte Mischung aus altem und neuem 
+          Inhalt?
+        */
+        targetFile.delete();
+      } else {
+        targetFile.getParentFile().mkdirs();
+      }
+      saveToFile(targetFile, contents);
     }
     return savedFile;
   }

--
Gitblit v1.9.3