From b627826356289872dd817b9e5903e209fa881886 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Thu, 14 May 2020 16:16:39 +0200 Subject: [PATCH] merge from master --- data/JsonIO.java | 55 +++++++++++++++++++++++++++++++---- library/WebLibraryServer.java | 9 ------ 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/data/JsonIO.java b/data/JsonIO.java index 524f99a..c31ddd0 100644 --- a/data/JsonIO.java +++ b/data/JsonIO.java @@ -201,8 +201,11 @@ public class JsonIO { return para; } - // no children included static public JSONObject toJson(Progress pg) { + return toJson(pg, null); + } + + static private JSONObject toJson(Progress pg, Double weight) { if (pg == null) { return null; } @@ -213,20 +216,40 @@ public class JsonIO { put(json, "name", pg.getName()); put(json, "min", pg.getMin()); put(json, "max", pg.getMax()); - put(json, "progress", pg.getProgress()); + put(json, "progress", pg.getRelativeProgress()); + put(json, "weight", weight); + + List children = new ArrayList(); + for (Progress child : pg.getChildren()) { + children.add(toJson(child, pg.getWeight(child))); + } + put(json, "children", new JSONArray(children)); return json; } - // no children included static public Progress toProgress(JSONObject json) { if (json == null) { return null; } - Progress pg = new Progress(getString(json, "name"), - getInt(json, "min", 0), getInt(json, "max", 100)); - pg.setProgress(getInt(json, "progress", 0)); + Progress pg = new Progress( // + getString(json, "name"), // + getInt(json, "min", 0), // + getInt(json, "max", 100) // + ); + + pg.setRelativeProgress(getDouble(json, "progress", 0)); + + JSONArray jchildren = getJsonArr(json, "children"); + for (int i = 0; i < jchildren.length(); i++) { + try { + JSONObject jchild = jchildren.getJSONObject(i); + Double weight = getDouble(jchild, "weight", 0); + pg.addProgress(toProgress(jchild), weight); + } catch (Exception e) { + } + } return pg; } @@ -300,6 +323,26 @@ public class JsonIO { return def; } + static double getDouble(JSONObject json, String key, double def) { + if (json.has(key)) { + Object o = json.get(key); + if (o instanceof Byte) + return (Byte) o; + if (o instanceof Short) + return (Short) o; + if (o instanceof Integer) + return (Integer) o; + if (o instanceof Long) + return (Long) o; + if (o instanceof Float) + return (Float) o; + if (o instanceof Double) + return (Double) o; + } + + return def; + } + static boolean getBoolean(JSONObject json, String key, boolean def) { if (json.has(key)) { Object o = json.get(key); diff --git a/library/WebLibraryServer.java b/library/WebLibraryServer.java index b3d897d..9073b8c 100644 --- a/library/WebLibraryServer.java +++ b/library/WebLibraryServer.java @@ -28,7 +28,6 @@ import be.nikiroo.utils.NanoHTTPD; import be.nikiroo.utils.NanoHTTPD.Response; import be.nikiroo.utils.NanoHTTPD.Response.Status; import be.nikiroo.utils.Progress; -import be.nikiroo.utils.Progress.ProgressListener; public class WebLibraryServer extends WebLibraryServerHtml { class WLoginResult extends LoginResult { @@ -415,14 +414,6 @@ public class WebLibraryServer extends WebLibraryServerHtml { final Progress pg = new Progress(); final String luid = lib.getNextId(); - // Keep the latest name - pg.addProgressListener(new ProgressListener() { - @Override - public void progress(Progress progress, String name) { - pg.setName(name); - } - }); - synchronized (imprts) { imprts.put(luid, pg); } -- 2.27.0