src/de/uhilger/mediaz/App.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/mediaz/Server.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/mediaz/api/StorageHandler.java | ●●●●● patch | view | raw | blame | history |
src/de/uhilger/mediaz/App.java
@@ -48,6 +48,9 @@ /* Name des ResourceBundles dieser App */ private static final String RB_NAME = "mediaz"; /* Der Server dieser App */ private static Server server; /* ResourceBundle-Kennungen */ public static final String RB_PARAM_FEHLT = "msgParamFehlt"; public static final String RB_AP_PORT = "appParamPort"; @@ -80,7 +83,8 @@ String portStr = getInitParameter(getRs(RB_AP_PORT)); if (portStr != null) { Server server = new Server(Integer.parseInt(portStr)); //Server server = new Server(Integer.parseInt(portStr)); server = new Server(Integer.parseInt(portStr)); try { String ctxName = getInitParameter(getRs(RB_AP_CTX)); if (ctxName != null) { @@ -130,5 +134,9 @@ public static String getRs(String key) { return rb.getString(key); } public static Server getServer() { return server; } } src/de/uhilger/mediaz/Server.java
@@ -63,6 +63,8 @@ private int port; private String ctx; private HttpServer server; /** * Ein neues Objekt der Kalsse Server erzeugen @@ -110,7 +112,7 @@ String wwwData = App.getInitParameter(App.getRs(App.RB_AP_WWW_DATA)); File wwwDir = new File(wwwData); HttpServer server = HttpServer.create(new InetSocketAddress(port), 0); server = HttpServer.create(new InetSocketAddress(port), 0); server.createContext(ctx + App.getRs(RB_WEBROOT), new FileHandler(wwwDir.getAbsolutePath())); ablageorteEinklinken(server); server.createContext(ctx + App.getRs(RB_STORE), new StorageHandler()); @@ -121,7 +123,16 @@ server.setExecutor(Executors.newFixedThreadPool(20)); server.start(); } public void ablageortEntfernen(String url) { server.removeContext(ctx + url); } public void ablageortHinzufuegen(Ablageort ort) { server.createContext(ctx + ort.getUrl(), new ListFileHandler(new File(ort.getOrt()).getAbsolutePath())); } private void ablageorteEinklinken(HttpServer server) throws ClassNotFoundException, IOException { String typ = Ablageort.class.getSimpleName(); src/de/uhilger/mediaz/api/StorageHandler.java
@@ -23,6 +23,7 @@ import static de.uhilger.mediaz.App.RB_EP_LISTE; import static de.uhilger.mediaz.App.RB_EP_LISTE_ALLES; import de.uhilger.mediaz.Server; import de.uhilger.mediaz.entity.Ablageort; import de.uhilger.mediaz.store.FileStorage; import de.uhilger.mediaz.entity.Entity; import de.uhilger.mediaz.entity.Geraet; @@ -73,11 +74,33 @@ Object o = gson.fromJson(bodyLesen(e), fs.typeFromName(type).getType()); if(o instanceof Entity) { Entity entity = (Entity) o; if(fs.exists(type, elemName)) { if(fs.exists(type, elemName)) { // Aenderung fs.delete(type, elemName); // wenn Ablageort, hier noch alten Kontext entfernen if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) { Entity aoe = fs.read(type, elemName); if(aoe instanceof Ablageort) { Ablageort ablageort = (Ablageort) aoe; App.getServer().ablageortEntfernen(ablageort.getUrl()); } } fs.write(entity, true); } else { // wenn Ablageort, hier noch neuen Kontext anlegen if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) { if(entity instanceof Ablageort) { Ablageort ablageort = (Ablageort) entity; App.getServer().ablageortHinzufuegen(ablageort); } } } else { // Neu fs.write(entity, false); // wenn Ablageort, hier noch neuen Kontext anlegen if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) { if(entity instanceof Ablageort) { Ablageort ablageort = (Ablageort) entity; App.getServer().ablageortHinzufuegen(ablageort); } } } return type + Server.SLASH + entity.getName(); } else { @@ -94,6 +117,14 @@ String type = elems[elems.length - 2]; String elemName = elems[elems.length - 1]; FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF))); if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) { // im laufenden Server den Context entfernen Entity entity = fs.read(type, elemName); if(entity instanceof Ablageort) { Ablageort ablageort = (Ablageort) entity; App.getServer().ablageortEntfernen(ablageort.getUrl()); } } return fs.delete(type, elemName); }