From 7342b1f3850299264b571d1d63778173c9a30703 Mon Sep 17 00:00:00 2001 From: ulrich <not disclosed> Date: Mon, 20 Feb 2017 10:53:46 +0000 Subject: [PATCH] list in Arbeit --- src/java/de/uhilger/filecms/api/FileMgr.java | 151 ++++++++++++++++++++++++++------------------------ 1 files changed, 79 insertions(+), 72 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index 89433b5..a985185 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -1,5 +1,4 @@ /* - Dateiverwaltung - File management in your browser Copyright (C) 2017 Ulrich Hilger, http://uhilger.de @@ -15,16 +14,18 @@ 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.filecms.web.Initialiser; import de.uhilger.filesystem.FileRef; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.security.Principal; +import java.util.ArrayList; +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -35,73 +36,71 @@ public class FileMgr extends Api { private static final Logger logger = Logger.getLogger(FileMgr.class.getName()); - public static final String FILE_BASE = "fileBase"; + public static final String PUB_DIR_PATH = "www/"; + public static final String HOME_DIR_PATH = "home/"; + public static final String PUB_DIR_NAME = "Oeffentlich"; + public static final String HOME_DIR_NAME = "Persoenlicher Ordner"; + private FileRef homeFolder; + private FileRef publicFolder; + private FileRef namedHomeFolder; + private FileRef namedPublicFolder; + + 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()); + public List<FileRef> list(String relPath) { + List<FileRef> files = null; - /* - file = new File("."); liefert - /home/ulrich/dev/lib/java/tomcat/tomcat2-8.5.9/bin/. + if(relPath.length() == 0) { + publicFolder = new FileRef(getUserPubDir().getAbsolutePath(), true); + logger.info(publicFolder.getAbsolutePath()); + homeFolder = new FileRef(getUserHomeDir().getAbsolutePath(), true); + logger.info(homeFolder.getAbsolutePath()); - ..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(); + namedPublicFolder = new FileRef(PUB_DIR_NAME, true); + logger.info(namedPublicFolder.getAbsolutePath()); + namedHomeFolder = new FileRef(HOME_DIR_NAME, true); + logger.info(namedHomeFolder.getAbsolutePath()); + files = new ArrayList<FileRef>(); + files.add(namedHomeFolder); + files.add(namedPublicFolder); } else { } - file = new File(file, "daten/"); - ref = new FileRef(file.getAbsolutePath(), file.isDirectory()); - return ref; + + return files; + } + + private FileRef getBase() { + FileRef base = null; + Object o = getServletContext().getAttribute(Initialiser.FILE_BASE); + if(o instanceof FileRef) { + base = (FileRef) o; + } + return base; + } + + private File getUserPubDir() { + File userDir = null; + File daten = new File(getBase().getAbsolutePath()); + Object p = getRequest().getUserPrincipal(); + if(p instanceof Principal) { + userDir = new File(daten, PUB_DIR_PATH + ((Principal) p).getName()); + } + return userDir; + } + + private File getUserHomeDir() { + File userDir = null; + File daten = new File(getBase().getAbsolutePath()); + Object p = getRequest().getUserPrincipal(); + if(p instanceof Principal) { + userDir = new File(daten, HOME_DIR_PATH + ((Principal) p).getName()); + } + return userDir; } public FileRef saveTextFile(String relPath, String fileName, String contents) { @@ -114,20 +113,28 @@ File userDir = new File(daten, "www/" + ((Principal) p).getName()); File saveDir = new File(userDir, relPath); File targetFile = new File(saveDir, fileName); - if(!targetFile.exists()) { + 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(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); @@ -141,5 +148,5 @@ String path = cfile.getAbsolutePath(); return new File(path.substring(0, path.indexOf(getRequest().getContextPath()))); } - + } -- Gitblit v1.9.3