/* 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 . */ 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; /** * Die Klasse ApiBase enthaelt Methoden, die Klassen gemeinsam * haben, die als Programmschnittstelle fuer Apps einer WebBox * dienen sollen. Sie ist als abstrakte Basisklasse fuer solche * Klassen vorgesehen. */ public abstract class ApiBase implements RequestKontext { private static final Logger logger = Logger.getLogger(ApiBase.class.getName()); /** Zeiger zum Request, der zur Ausfuehrung fuehrte */ protected HttpServletRequest request; /** * Das Datenverzeichnis der WebBox ermitteln * @return Ordner $wbx/daten */ protected File getFileBase(ServletContext ctx) { File file = null; Object o = ctx.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(ServletContext ctx) { String path = ctx.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(ServletContext ctx) { return getFileBase(ctx).getAbsolutePath(); } /** * Das Verzeichnis ermitteln, in dem die WebBox laeuft * @return der Ordner $wbx */ protected File getWbxDir(ServletContext ctx) { String path = ctx.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 RequestKontext ------------- */ @Override public HttpServletRequest getRequest() { return request; } @Override public void setRequest(HttpServletRequest r) { this.request = r; } }