Dateiverwaltung für die WebBox
ulrich
2017-02-18 e5ff423d0b1b1ff57410c7efeb6ac97f42b07d35
commit | author | age
c7c502 1 package de.uhilger.filecms.api;
U 2
3 import de.uhilger.filesystem.FileRef;
8e51b7 4 import de.uhilger.transit.web.RequestKontext;
c7c502 5 import de.uhilger.transit.web.WebKontext;
8e51b7 6 import java.io.File;
e5ff42 7 import java.io.FileWriter;
U 8 import java.io.IOException;
9 import java.security.Principal;
10 import java.util.logging.Level;
8e51b7 11 import java.util.logging.Logger;
c7c502 12 import javax.servlet.ServletContext;
8e51b7 13 import javax.servlet.http.HttpServletRequest;
c7c502 14
U 15 /**
16  *
17  * @author ulrich
18  */
8e51b7 19 public class FileMgr implements WebKontext, RequestKontext {
U 20   private static final Logger logger = Logger.getLogger(FileMgr.class.getName());
c7c502 21   
U 22   public static final String FILE_BASE = "fileBase";
23   
24   private ServletContext ctx;
8e51b7 25   private HttpServletRequest req;
c7c502 26   
ea7193 27   public String hallo() {
U 28     return "Hallo Welt!";
29   }
30   
31   // http://localhost:8097/file-cms/rpc/de.uhilger.filecms.api.FileMgr/getBase/JSONNICE
c7c502 32   public FileRef getBase() {
U 33     FileRef ref = null;
8e51b7 34     //String fileBase = getServletContext().getInitParameter(FILE_BASE);
U 35     // -Dfilecms.base=/pfad/zu/daten
ea7193 36     //String fileBase = System.getProperty("filecms.base");
U 37     //File file = new File(fileBase);
38     //logger.info(file.getAbsolutePath());
39     //logger.info(getWebappsDir().getAbsolutePath());
40     
41     /* 
42         file = new File("."); liefert 
43         /home/ulrich/dev/lib/java/tomcat/tomcat2-8.5.9/bin/.
44     
45         ..auf der WebBox aber
46         /home/ulrich/srv/wbx_probe/.
47         ..weil das Startskript dort liegt
48     
49         der Tomcat der WebBox ist unter
50         sys/jrs/tomcat/bin
51     
52         also z.B.
53         /home/ulrich/srv/wbx_probe/sys/jrs/tomcat/bin
54
55         das Datenverzeichnis ist z.B. auf
56         /home/ulrich/srv/wbx_probe/daten
57     
58         dann ist das Datenverzeichnis unter
59         ../../../daten
60     
61         Der Ausdruck file = new File("."); liefert stets den 
62         Ort von dem aus der Java-Prozess gestartet wurde.
63     
64         Die unten folgende Bestimmung des Datenverzeichnisses 
65         ist beschraenkt auf das Datenverzeichnis der WebBox, 
66         entweder relativ zum Startskript der WebBox oder 
67         dem Startskript von Tomcat, wie es aus Netbeans heraus 
68         waehrend der Entwicklung genutzt wird.
69     
70         Besser ware vielleicht eine Bestimmung ueber einen 
71         Systemparameter -Dfilecms.base=... wie weiter oben 
72         auskommentiert. Damit liesse sich das file-cms auch 
73         ohne WebBox einsetzen. Allerdings muss dann das 
74         Datenverzeichnis im Start-Skript gebildet werden, 
75         also ausserhalb von Java, wenn es dynamisch aus 
76         einem Pfad relativ zum Start-Skript erzeugt werden 
77         soll.
78     */
79     
80     File file = new File(".");
81     String path = file.getAbsolutePath();
82     path = path.substring(0, path.length() - 1);
83     file = new File(path);
84     if(path.endsWith("bin")) {
85       file = file.getParentFile().getParentFile().getParentFile();
86     } else {
87       
88     }
89     file = new File(file, "daten/");
8e51b7 90     ref = new FileRef(file.getAbsolutePath(), file.isDirectory());
c7c502 91     return ref;
8e51b7 92   }
U 93   
ea7193 94   public FileRef saveTextFile(String relPath, String fileName, String contents) {
U 95     FileRef savedFile = null;
e5ff42 96     try {
U 97       FileRef datenRef = getBase();
98       File daten = new File(datenRef.getAbsolutePath());
99       Object p = getRequest().getUserPrincipal();
100       if(p instanceof Principal) {
101         File userDir = new File(daten, "www/" + ((Principal) p).getName());
102         File saveDir = new File(userDir, relPath);
103         File targetFile = new File(saveDir, fileName);
104         if(!targetFile.exists()) {
105           targetFile.mkdirs();
106           targetFile.createNewFile();
107           FileWriter w = new FileWriter(targetFile);
108           w.write(contents);
109           w.flush();
110           w.close();
111         }
112       }
113     } catch (IOException ex) {
114       logger.log(Level.SEVERE, null, ex);
115     }
ea7193 116     return savedFile;
U 117   }
118   
8e51b7 119   private File getWebappsDir() {
U 120     File cfile = new File(this.getClass().getResource(this.getClass().getSimpleName() + ".class").getFile());
121     String path = cfile.getAbsolutePath();
122     return new File(path.substring(0, path.indexOf(req.getContextPath())));
c7c502 123   }
U 124
125   @Override
126   public ServletContext getServletContext() {
127     return ctx;
128   }
129
130   @Override
131   public void setServletContext(ServletContext servletContext) {
132     this.ctx = servletContext;
133   }
134
8e51b7 135   @Override
U 136   public HttpServletRequest getRequest() {
137     return req;
138   }
139
140   @Override
141   public void setRequest(HttpServletRequest r) {
142     this.req = r;
143   }
144
c7c502 145   
U 146 }