From e5ff423d0b1b1ff57410c7efeb6ac97f42b07d35 Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Sat, 18 Feb 2017 15:13:41 +0000 Subject: [PATCH] Dateiverwaltung ins Menue aufgenommen und Login-Info eingebaut --- src/java/de/uhilger/filecms/api/FileMgr.java | 92 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index a597012..31e1ac1 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -4,6 +4,10 @@ import de.uhilger.transit.web.RequestKontext; import de.uhilger.transit.web.WebKontext; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.security.Principal; +import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -20,18 +24,98 @@ private ServletContext ctx; private HttpServletRequest req; + public String hallo() { + return "Hallo Welt!"; + } + + // http://localhost:8097/file-cms/rpc/de.uhilger.filecms.api.FileMgr/getBase/JSONNICE public FileRef getBase() { FileRef ref = null; //String fileBase = getServletContext().getInitParameter(FILE_BASE); // -Dfilecms.base=/pfad/zu/daten - String fileBase = System.getProperty("filecms.base"); - File file = new File(fileBase); - logger.info(file.getAbsolutePath()); - logger.info(getWebappsDir().getAbsolutePath()); + //String fileBase = System.getProperty("filecms.base"); + //File file = new File(fileBase); + //logger.info(file.getAbsolutePath()); + //logger.info(getWebappsDir().getAbsolutePath()); + + /* + file = new File("."); liefert + /home/ulrich/dev/lib/java/tomcat/tomcat2-8.5.9/bin/. + + ..auf der WebBox aber + /home/ulrich/srv/wbx_probe/. + ..weil das Startskript dort liegt + + der Tomcat der WebBox ist unter + sys/jrs/tomcat/bin + + also z.B. + /home/ulrich/srv/wbx_probe/sys/jrs/tomcat/bin + + das Datenverzeichnis ist z.B. auf + /home/ulrich/srv/wbx_probe/daten + + dann ist das Datenverzeichnis unter + ../../../daten + + Der Ausdruck file = new File("."); liefert stets den + Ort von dem aus der Java-Prozess gestartet wurde. + + Die unten folgende Bestimmung des Datenverzeichnisses + ist beschraenkt auf das Datenverzeichnis der WebBox, + entweder relativ zum Startskript der WebBox oder + dem Startskript von Tomcat, wie es aus Netbeans heraus + waehrend der Entwicklung genutzt wird. + + Besser ware vielleicht eine Bestimmung ueber einen + Systemparameter -Dfilecms.base=... wie weiter oben + auskommentiert. Damit liesse sich das file-cms auch + ohne WebBox einsetzen. Allerdings muss dann das + Datenverzeichnis im Start-Skript gebildet werden, + also ausserhalb von Java, wenn es dynamisch aus + einem Pfad relativ zum Start-Skript erzeugt werden + soll. + */ + + File file = new File("."); + String path = file.getAbsolutePath(); + path = path.substring(0, path.length() - 1); + file = new File(path); + if(path.endsWith("bin")) { + file = file.getParentFile().getParentFile().getParentFile(); + } else { + + } + file = new File(file, "daten/"); ref = new FileRef(file.getAbsolutePath(), file.isDirectory()); return ref; } + public FileRef saveTextFile(String relPath, String fileName, String contents) { + FileRef savedFile = null; + try { + FileRef datenRef = getBase(); + File daten = new File(datenRef.getAbsolutePath()); + Object p = getRequest().getUserPrincipal(); + if(p instanceof Principal) { + File userDir = new File(daten, "www/" + ((Principal) p).getName()); + File saveDir = new File(userDir, relPath); + File targetFile = new File(saveDir, fileName); + if(!targetFile.exists()) { + targetFile.mkdirs(); + targetFile.createNewFile(); + FileWriter w = new FileWriter(targetFile); + w.write(contents); + w.flush(); + w.close(); + } + } + } catch (IOException ex) { + logger.log(Level.SEVERE, null, ex); + } + return savedFile; + } + private File getWebappsDir() { File cfile = new File(this.getClass().getResource(this.getClass().getSimpleName() + ".class").getFile()); String path = cfile.getAbsolutePath(); -- Gitblit v1.9.3