Commit | Line | Data |
---|---|---|
f433d153 NR |
1 | package be.nikiroo.fanfix.data; |
2 | ||
3 | import java.util.ArrayList; | |
4 | import java.util.List; | |
5 | ||
6 | import org.json.JSONArray; | |
7 | import org.json.JSONException; | |
8 | import org.json.JSONObject; | |
9 | ||
10 | public class JsonIO { | |
11 | static public JSONObject toJson(MetaData meta) { | |
12 | if (meta == null) { | |
13 | return null; | |
14 | } | |
15 | ||
16 | JSONObject json = new JSONObject(); | |
17 | put(json, "", MetaData.class.getName()); | |
18 | put(json, "luid", meta.getLuid()); | |
19 | put(json, "title", meta.getTitle()); | |
20 | put(json, "author", meta.getAuthor()); | |
21 | put(json, "source", meta.getSource()); | |
22 | put(json, "url", meta.getUrl()); | |
23 | put(json, "words", meta.getWords()); | |
24 | put(json, "creation_date", meta.getCreationDate()); | |
25 | put(json, "date", meta.getDate()); | |
26 | put(json, "lang", meta.getLang()); | |
27 | put(json, "publisher", meta.getPublisher()); | |
28 | put(json, "subject", meta.getSubject()); | |
29 | put(json, "type", meta.getType()); | |
30 | put(json, "uuid", meta.getUuid()); | |
31 | put(json, "resume", toJson(meta.getResume())); | |
32 | put(json, "tags", new JSONArray(meta.getTags())); | |
33 | ||
34 | return json; | |
35 | } | |
36 | ||
37 | /** | |
38 | * | |
39 | * @param json | |
40 | * | |
41 | * @return | |
42 | * | |
43 | * @throws JSONException | |
44 | * when it cannot be converted | |
45 | */ | |
46 | static public MetaData toMetaData(JSONObject json) { | |
47 | if (json == null) { | |
48 | return null; | |
49 | } | |
50 | ||
51 | MetaData meta = new MetaData(); | |
52 | meta.setLuid(getString(json, "luid")); | |
53 | meta.setTitle(getString(json, "title")); | |
54 | meta.setAuthor(getString(json, "author")); | |
55 | meta.setSource(getString(json, "source")); | |
56 | meta.setUrl(getString(json, "url")); | |
57 | meta.setWords(getLong(json, "words", 0)); | |
58 | meta.setCreationDate(getString(json, "creation_date")); | |
59 | meta.setDate(getString(json, "date")); | |
60 | meta.setLang(getString(json, "lang")); | |
61 | meta.setPublisher(getString(json, "publisher")); | |
62 | meta.setSubject(getString(json, "subject")); | |
63 | meta.setType(getString(json, "type")); | |
64 | meta.setUuid(getString(json, "uuid")); | |
65 | ||
66 | meta.setResume(toChapter(getJson(json, "resume"))); | |
67 | meta.setTags(toListString(getJsonArr(json, "tags"))); | |
68 | ||
69 | return meta; | |
70 | } | |
71 | ||
72 | static public JSONObject toJson(Chapter chap) { | |
73 | if (chap == null) { | |
74 | return null; | |
75 | } | |
76 | ||
77 | JSONObject json = new JSONObject(); | |
78 | ||
79 | // TODO | |
80 | ||
81 | return json; | |
82 | } | |
83 | ||
84 | /** | |
85 | * | |
86 | * @param json | |
87 | * | |
88 | * @return | |
89 | * | |
90 | * @throws JSONException | |
91 | * when it cannot be converted | |
92 | */ | |
93 | static public Chapter toChapter(JSONObject json) { | |
94 | if (json == null) { | |
95 | return null; | |
96 | } | |
97 | ||
98 | Chapter chap = new Chapter(0, ""); | |
99 | ||
100 | // TODO | |
101 | ||
102 | return chap; | |
103 | } | |
104 | ||
105 | static public List<String> toListString(JSONArray array) { | |
106 | if (array != null) { | |
107 | List<String> values = new ArrayList<String>(); | |
108 | for (Object value : array.toList()) { | |
109 | values.add(value == null ? null : value.toString()); | |
110 | } | |
111 | return values; | |
112 | } | |
113 | ||
114 | return null; | |
115 | } | |
116 | ||
117 | static private void put(JSONObject json, String key, Object o) { | |
118 | json.put(key, o == null ? JSONObject.NULL : o); | |
119 | } | |
120 | ||
121 | static String getString(JSONObject json, String key) { | |
122 | if (json.has(key)) { | |
123 | Object o = json.get(key); | |
124 | if (o instanceof String) { | |
125 | return (String) o; | |
126 | } | |
127 | } | |
128 | ||
129 | return null; | |
130 | } | |
131 | ||
132 | static long getLong(JSONObject json, String key, long def) { | |
133 | if (json.has(key)) { | |
134 | Object o = json.get(key); | |
135 | if (o instanceof Long) { | |
136 | return (Long) o; | |
137 | } | |
138 | } | |
139 | ||
140 | return def; | |
141 | } | |
142 | ||
143 | static JSONObject getJson(JSONObject json, String key) { | |
144 | if (json.has(key)) { | |
145 | Object o = json.get(key); | |
146 | if (o instanceof JSONObject) { | |
147 | return (JSONObject) o; | |
148 | } | |
149 | } | |
150 | ||
151 | return null; | |
152 | } | |
153 | ||
154 | static JSONArray getJsonArr(JSONObject json, String key) { | |
155 | if (json.has(key)) { | |
156 | Object o = json.get(key); | |
157 | if (o instanceof JSONArray) { | |
158 | return (JSONArray) o; | |
159 | } | |
160 | } | |
161 | ||
162 | return null; | |
163 | } | |
164 | } |