X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fdata%2FJsonIO.java;h=c31ddd00940cd14c287d2401b4ff53bf93813b6d;hp=524f99a7da2de6a56c0d5ad8bc8de027efbaacdc;hb=ba6cf425009e67a65b3146b5b818db081cb0e845;hpb=14c0debd37e7de3fa8b5acb81c234f96452ec2a2 diff --git a/src/be/nikiroo/fanfix/data/JsonIO.java b/src/be/nikiroo/fanfix/data/JsonIO.java index 524f99a..c31ddd0 100644 --- a/src/be/nikiroo/fanfix/data/JsonIO.java +++ b/src/be/nikiroo/fanfix/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);