From 592772978cac6558dc894763e21ff568a58a4490 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Wed, 29 Mar 2017 08:50:05 +0000
Subject: [PATCH] gemeinsame Api-Methoden der WeBox zusammengefuehrt

---
 src/de/uhilger/wbx/api/ApiBase.java |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/src/de/uhilger/wbx/api/ApiBase.java b/src/de/uhilger/wbx/api/ApiBase.java
new file mode 100644
index 0000000..cc3d64a
--- /dev/null
+++ b/src/de/uhilger/wbx/api/ApiBase.java
@@ -0,0 +1,132 @@
+/*
+    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;
+  }
+  
+  
+  
+}

--
Gitblit v1.9.3