/*
|
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.web;
|
|
import de.uhilger.filecms.api.FileMgr;
|
import de.uhilger.filesystem.FileRef;
|
import java.io.File;
|
import java.util.logging.Logger;
|
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextListener;
|
|
/**
|
*
|
* @author ulrich
|
*/
|
public class Initialiser implements ServletContextListener {
|
|
private static final Logger logger = Logger.getLogger(Initialiser.class.getName());
|
|
|
public static final String FILE_BASE = "filebase";
|
|
// http://localhost:8097/file-cms/rpc/de.uhilger.filecms.api.FileMgr/getBase/JSONNICE
|
private 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(".");
|
logger.finer(file.getAbsolutePath());
|
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());
|
logger.finer(ref.getAbsolutePath());
|
return ref;
|
}
|
|
/* ----- ServletContextListener Implementation ----- */
|
|
@Override
|
public void contextInitialized(ServletContextEvent sce) {
|
// hier kann etwas initialisiert werden
|
ServletContext ctx = sce.getServletContext();
|
ctx.setAttribute(FILE_BASE, getBase());
|
}
|
|
@Override
|
public void contextDestroyed(ServletContextEvent sce) {
|
// hier wird alles wieder aufgeraeumt
|
ServletContext ctx = sce.getServletContext();
|
ctx.removeAttribute(FILE_BASE);
|
}
|
|
}
|