Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / model / dictionary / Senses.java
diff --git a/Android/folioreader/src/main/java/com/folioreader/model/dictionary/Senses.java b/Android/folioreader/src/main/java/com/folioreader/model/dictionary/Senses.java
new file mode 100755 (executable)
index 0000000..dc07b71
--- /dev/null
@@ -0,0 +1,78 @@
+package com.folioreader.model.dictionary;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.ObjectCodec;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author gautam chibde on 4/7/17.
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class Senses {
+    @JsonProperty
+    @JsonDeserialize(using = DefinitionDeserializer.class)
+    private String[] definition;
+    @JsonProperty
+    private List<Example> examples;
+
+    @Override
+    public String toString() {
+        return "Senses{" +
+                "definition=" + Arrays.toString(definition) +
+                ", examples=" + examples +
+                '}';
+    }
+
+    public String[] getDefinition() {
+        return definition;
+    }
+
+    public void setDefinition(String[] definition) {
+        this.definition = definition;
+    }
+
+    public List<Example> getExamples() {
+        return examples;
+    }
+
+    public void setExamples(List<Example> examples) {
+        this.examples = examples;
+    }
+
+    public static class DefinitionDeserializer extends StdDeserializer<String[]> {
+
+        public DefinitionDeserializer() {
+            super(String[].class);
+        }
+
+        protected DefinitionDeserializer(Class<?> vc) {
+            super(vc);
+        }
+
+        @Override
+        public String[] deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+            JsonNode node = p.getCodec().readTree(p);
+            List<String> strings = new ArrayList<>();
+            ObjectCodec oc = p.getCodec();
+            if (node.isArray()) {
+                for (JsonNode n : node) {
+                    strings.add(oc.treeToValue(n, String.class));
+                }
+            } else {
+                strings.add(oc.treeToValue(node, String.class));
+            }
+            return strings.toArray(new String[0]);
+        }
+    }
+}