X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fdata%2FJsonIO.java;h=c31ddd00940cd14c287d2401b4ff53bf93813b6d;hb=ba6cf425009e67a65b3146b5b818db081cb0e845;hp=5157dca3156a2a88eada47cabaa080191d6bb2c1;hpb=7586f328755927e2f1b1fe3b2a78ebd3c875fbb7;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/data/JsonIO.java b/src/be/nikiroo/fanfix/data/JsonIO.java index 5157dca..c31ddd0 100644 --- a/src/be/nikiroo/fanfix/data/JsonIO.java +++ b/src/be/nikiroo/fanfix/data/JsonIO.java @@ -8,6 +8,7 @@ import org.json.JSONException; import org.json.JSONObject; import be.nikiroo.fanfix.data.Paragraph.ParagraphType; +import be.nikiroo.utils.Progress; public class JsonIO { static public JSONObject toJson(MetaData meta) { @@ -200,6 +201,59 @@ public class JsonIO { return para; } + static public JSONObject toJson(Progress pg) { + return toJson(pg, null); + } + + static private JSONObject toJson(Progress pg, Double weight) { + if (pg == null) { + return null; + } + + JSONObject json = new JSONObject(); + + put(json, "", Progress.class.getName()); + put(json, "name", pg.getName()); + put(json, "min", pg.getMin()); + put(json, "max", pg.getMax()); + 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; + } + + 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.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; + } + static public List toListString(JSONArray array) { if (array != null) { List values = new ArrayList(); @@ -256,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; @@ -278,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) { + } } }