/*
|
WebBox - Dein Server.
|
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.wbx.api;
|
|
import de.uhilger.transit.web.RequestKontext;
|
import de.uhilger.transit.web.WebKontext;
|
import de.uhilger.wbx.web.Initialiser;
|
import java.io.File;
|
import java.security.Principal;
|
import java.util.logging.Logger;
|
import javax.servlet.ServletContext;
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
*
|
*/
|
public abstract class ApiBase implements WebKontext, RequestKontext {
|
|
private static final Logger logger = Logger.getLogger(ApiBase.class.getName());
|
|
/** Zeiger zum Servlet-Kontext dieser Anwendung */
|
protected ServletContext ctx;
|
|
/** Zeiger zum Request, der zur Ausfuehrung fuehrte */
|
protected HttpServletRequest request;
|
|
|
/**
|
* Das Datenverzeichnis der WebBox ermitteln
|
* @return Ordner $wbx/daten
|
*/
|
protected File getFileBase() {
|
File file = null;
|
Object o = getServletContext().getAttribute(Initialiser.FILE_BASE);
|
if(o instanceof String) {
|
String baseStr = (String) o;
|
logger.fine(baseStr);
|
file = new File(baseStr);
|
}
|
return file;
|
}
|
|
/**
|
* Den absoluten Pfad zum Verzeichnis ermitteln das gemaess der
|
* Tomcat-Doku als CATALINA_BASE der WebBox gilt
|
* @return absoluter Pfad zu $wbx/sys/base
|
*/
|
protected String getCatalinaBase() {
|
String path = getServletContext().getRealPath("/");
|
logger.fine("getRealPath: " + path); // file-cms in webapps
|
File file = new File(path);
|
file = file.getParentFile().getParentFile();
|
return file.getAbsolutePath();
|
}
|
|
/**
|
* Den absoluten Pfad zum Datenverzeichnis der WebBox ermitteln
|
* @return absoluter Pfad zu $wbx/daten
|
*/
|
protected String getWbxDataDir() {
|
return getFileBase().getAbsolutePath();
|
}
|
|
/**
|
* Das Verzeichnis ermitteln, in dem die WebBox laeuft
|
* @return der Ordner $wbx
|
*/
|
protected File getWbxDir() {
|
String path = getServletContext().getRealPath("/");
|
logger.fine("getRealPath: " + path);
|
File file = new File(path);
|
file = file.getParentFile().getParentFile().getParentFile().getParentFile();
|
logger.fine("WebBox: " + file.getAbsolutePath());
|
return file;
|
}
|
|
/**
|
* den Namen des angemeldeten Benutzers ermitteln
|
* @return Name des angemeldeten Benutzers oder null, wenn keiner angemeldet ist
|
*/
|
protected String getUserName() {
|
String userName = null;
|
Object p = getRequest().getUserPrincipal();
|
if(p instanceof Principal) {
|
userName = ((Principal) p).getName();
|
}
|
return userName;
|
}
|
|
/* ------------- Implementierung WebKontext ------------- */
|
|
@Override
|
public ServletContext getServletContext() {
|
return ctx;
|
}
|
|
@Override
|
public void setServletContext(ServletContext servletContext) {
|
this.ctx = servletContext;
|
}
|
|
/* ------------- Implementierung RequestKontext ------------- */
|
|
@Override
|
public HttpServletRequest getRequest() {
|
return request;
|
}
|
|
@Override
|
public void setRequest(HttpServletRequest r) {
|
this.request = r;
|
}
|
|
|
|
}
|