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.util.logging.Logger;
|
import javax.servlet.ServletContext;
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
*
|
* @author ulrich
|
*/
|
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);
|
// -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;
|
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
|
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;
|
}
|
|
|
}
|