From 1a47caa255a34798cc314a780da80484a263cb86 Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Sat, 18 Feb 2017 16:30:29 +0000 Subject: [PATCH] Beschriftung des Speichern-Dialogs geaendert --- src/java/de/uhilger/filecms/api/FileMgr.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 115 insertions(+), 2 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index b7f7a70..d39ab79 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -1,23 +1,126 @@ package de.uhilger.filecms.api; import de.uhilger.filesystem.FileRef; +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; /** * * @author ulrich */ -public class FileMgr implements WebKontext { +public class FileMgr implements WebKontext, RequestKontext { + private static final Logger logger = Logger.getLogger(FileMgr.class.getName()); public static final String FILE_BASE = "fileBase"; 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); + //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()); + + /* + 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.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()); + } + } + } 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(); + return new File(path.substring(0, path.indexOf(req.getContextPath()))); } @Override @@ -30,5 +133,15 @@ this.ctx = servletContext; } + @Override + public HttpServletRequest getRequest() { + return req; + } + + @Override + public void setRequest(HttpServletRequest r) { + this.req = r; + } + } -- Gitblit v1.9.3