X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fdata%2FJsonIO.java;h=c31ddd00940cd14c287d2401b4ff53bf93813b6d;hb=ba6cf425009e67a65b3146b5b818db081cb0e845;hp=beff342bea00abd1d002c00a09716438a667a182;hpb=29ff5d3cf736a65f02325f373a33e79f591a2bd6;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/data/JsonIO.java b/src/be/nikiroo/fanfix/data/JsonIO.java index beff342..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; } @@ -287,9 +310,34 @@ public class JsonIO { static long getLong(JSONObject json, String key, long def) { if (json.has(key)) { Object o = json.get(key); - if (o instanceof Long) { + 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; - } + } + + 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; @@ -309,8 +357,17 @@ public class JsonIO { static int getInt(JSONObject json, String key, int def) { if (json.has(key)) { Object o = json.get(key); - if (o instanceof Integer) { + 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) { + try { + return (int) (long) ((Long) o); + } catch (Exception e) { + } } }