Dateiverwaltung für die WebBox
ulrich
2017-08-03 91a97a714e0750b32401b893b4d8dd782d4d3329
src/java/de/uhilger/filecms/api/Api.java
@@ -20,19 +20,26 @@
package de.uhilger.filecms.api;
import de.uhilger.filecms.data.FileRef;
import de.uhilger.filecms.web.Initialiser;
import de.uhilger.transit.Access;
import de.uhilger.transit.web.RequestKontext;
import de.uhilger.transit.web.WebKontext;
import de.uhilger.wbx.api.ApiBase;
import de.uhilger.wbx.data.FileRef;
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 Api extends ApiBase implements WebKontext {
public abstract class Api implements WebKontext, RequestKontext {
  
  protected ServletContext ctx;  
  /** Zeiger zum Request, der zur Ausfuehrung fuehrte */
  protected HttpServletRequest request;
  
  private static final Logger logger = Logger.getLogger(Api.class.getName());
@@ -107,18 +114,98 @@
    }
    return base;
  }
  /* -------------- Hilfsfunktionen --------------- */
  /**
   * 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 WebKontext ------------- */
  @Override
  @Access(type = Access.Type.RESTRICT)
  public ServletContext getServletContext() {
    return ctx;
  }
  @Override
  @Access(type = Access.Type.RESTRICT)
  public void setServletContext(ServletContext servletContext) {
    this.ctx = servletContext;
  }
  
  /* ------------- Implementierung RequestKontext ------------- */
  @Override
  @Access(type = Access.Type.RESTRICT)
  public HttpServletRequest getRequest() {
    return request;
  }
  @Override
  @Access(type = Access.Type.RESTRICT)
  public void setRequest(HttpServletRequest r) {
    this.request = r;
  }
}