From 8931b77df172c4a2a106d471a566479ac9c5f6b0 Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Mon, 20 Feb 2017 08:30:53 +0000 Subject: [PATCH] Code aufgeraeumt --- src/java/de/uhilger/filecms/api/FileMgr.java | 151 +++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 117 insertions(+), 34 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index a597012..89433b5 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -1,62 +1,145 @@ +/* + + Dateiverwaltung - File management in your browser + Copyright (C) 2017 Ulrich Hilger, http://uhilger.de + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + 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, RequestKontext { +public class FileMgr extends Api { 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); // -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.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()); + 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()))); + return new File(path.substring(0, path.indexOf(getRequest().getContextPath()))); } - - @Override - public ServletContext getServletContext() { - return ctx; - } - - @Override - public void setServletContext(ServletContext servletContext) { - this.ctx = servletContext; - } - - @Override - public HttpServletRequest getRequest() { - return req; - } - - @Override - public void setRequest(HttpServletRequest r) { - this.req = r; - } - } -- Gitblit v1.9.3