Persoenliche Mediazentrale
ulrich
2021-04-05 b1bf963e57050d6c423a80db76f9d36197a0b475
Neuer Ablageort mit generischem Typ
3 files modified
74 ■■■■ changed files
src/de/uhilger/mediaz/api/StorageHandler.java 47 ●●●● patch | view | raw | blame | history
src/de/uhilger/mediaz/store/FileStorage.java 25 ●●●●● patch | view | raw | blame | history
src/de/uhilger/mediaz/store/Storage.java 2 ●●●●● patch | view | raw | blame | history
src/de/uhilger/mediaz/api/StorageHandler.java
@@ -12,6 +12,7 @@
import de.uhilger.mediaz.Server;
import de.uhilger.mediaz.store.FileStorage;
import de.uhilger.mediaz.entity.Ablageort;
import de.uhilger.mediaz.entity.Entity;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
@@ -66,6 +67,7 @@
    String[] elems = path.split(App.getRs(Server.RB_SLASH));
    String type = "";
    String elemName = "";
    String body = "";
    FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
    switch(method) {
      case HTTP_GET:
@@ -81,18 +83,7 @@
        break;
        
      case HTTP_POST:
        type = elems[elems.length - 1];
        elemName = bodyLesen(e);
        if(type.equalsIgnoreCase("Ablageort")) {
          Gson gson = new Gson();
          Ablageort ort = gson.fromJson(elemName, Ablageort.class);
          elemName = ort.getName();
          Object o = fs.write(ort);
          if(o instanceof File) {
            File file = (File) o;
            logger.log(Level.INFO, "Datei {0} geschrieben.", file.getAbsolutePath());
          }
        }
        neu(e);
        break;
        
      case HTTP_DELETE:
@@ -109,6 +100,36 @@
    OutputStream os = e.getResponseBody();
    os.write(response.getBytes());
    os.close();        
  }
  private void neu(HttpExchange e) throws IOException {
    String path = e.getRequestURI().toString();
    String[] elems = path.split(App.getRs(Server.RB_SLASH));
    String type = elems[elems.length - 1];
    String body = bodyLesen(e);
    FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
    Gson gson = new Gson();
    logger.log(Level.INFO, "type: {0}", type);
    Object o = gson.fromJson(body, fs.typeFromName(type).getType());
    if(o instanceof Entity) {
      Object antwortObjekt = fs.write((Entity) o);
      if(antwortObjekt instanceof File) {
        File file = (File) antwortObjekt;
        logger.log(Level.INFO, "Datei {0} geschrieben.", file.getAbsolutePath());
      }
    }
  }
  private void aendern() {
  }
  private void loeschen() {
  }
  private Entity lesen() {
    return null;
  }
  
  
@@ -128,7 +149,7 @@
    //String json = data.substring(data.indexOf("{"));
    // {"name":"test1","ort":"test2","url":"test3"}
    String json = sb.toString();
    logger.info("json: " + json);
    logger.log(Level.INFO, "json: {0}", json);
    return json;
  }
}
src/de/uhilger/mediaz/store/FileStorage.java
@@ -6,6 +6,7 @@
package de.uhilger.mediaz.store;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import de.uhilger.mediaz.App;
import de.uhilger.mediaz.Server;
import de.uhilger.mediaz.entity.Ablageort;
@@ -18,7 +19,9 @@
import java.util.logging.Logger;
import de.uhilger.mediaz.entity.Entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
/**
@@ -41,8 +44,15 @@
  
  private String fileBase;
  
  private Map<String, TypeToken> types;
  public FileStorage(String base) {
    this.fileBase = base;
    //TypeToken<List<String>> list = new TypeToken<List<String>>() {};
    TypeToken<Ablageort> ttAblageort = new TypeToken<Ablageort>() {};
    types = new HashMap();
    types.put(Ablageort.class.getSimpleName(), ttAblageort);
  }
  
  /**
@@ -76,7 +86,7 @@
  }
  
  public Entity readFromFile(File file) throws ClassNotFoundException, FileNotFoundException, IOException {
    String type = typeFromName(file);
    String type = typeNameFromPath(file);
    StringBuilder sb = new StringBuilder();
    FileReader in = new FileReader(file);
    BufferedReader r = new BufferedReader(in);
@@ -99,14 +109,8 @@
    }
  }
  
  private String typeFromName(File file) {
    //String path = file.getPath();
    //logger.info(path);
  private String typeNameFromPath(File file) {
    String[] parts = file.getPath().split(App.getRs(Server.RB_SLASH));
    //for(String part : parts) {
      //logger.info(part);
    //}
    //logger.info("" + parts.length);
    logger.info(parts[parts.length-2]);
    return parts[parts.length-2];
  }
@@ -146,6 +150,11 @@
    return list;
  }
  @Override
  public TypeToken typeFromName(String name) {
    return types.get(name);
  }
  
  
}
src/de/uhilger/mediaz/store/Storage.java
@@ -17,6 +17,7 @@
 */
package de.uhilger.mediaz.store;
import com.google.gson.reflect.TypeToken;
import de.uhilger.mediaz.entity.Entity;
import java.util.List;
@@ -72,4 +73,5 @@
   */
  public List<String> list(String typ);
  
  public TypeToken typeFromName(String name);
}