Added Android code
[wl-app.git] / Android / folioreader / src / main / java / com / folioreader / model / dictionary / Senses.java
1 package com.folioreader.model.dictionary;
2
3 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5 import com.fasterxml.jackson.core.JsonParser;
6 import com.fasterxml.jackson.core.JsonProcessingException;
7 import com.fasterxml.jackson.core.ObjectCodec;
8 import com.fasterxml.jackson.databind.DeserializationContext;
9 import com.fasterxml.jackson.databind.JsonNode;
10 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
11 import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
12
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.Arrays;
16 import java.util.List;
17
18 /**
19  * @author gautam chibde on 4/7/17.
20  */
21 @JsonIgnoreProperties(ignoreUnknown = true)
22 public class Senses {
23     @JsonProperty
24     @JsonDeserialize(using = DefinitionDeserializer.class)
25     private String[] definition;
26     @JsonProperty
27     private List<Example> examples;
28
29     @Override
30     public String toString() {
31         return "Senses{" +
32                 "definition=" + Arrays.toString(definition) +
33                 ", examples=" + examples +
34                 '}';
35     }
36
37     public String[] getDefinition() {
38         return definition;
39     }
40
41     public void setDefinition(String[] definition) {
42         this.definition = definition;
43     }
44
45     public List<Example> getExamples() {
46         return examples;
47     }
48
49     public void setExamples(List<Example> examples) {
50         this.examples = examples;
51     }
52
53     public static class DefinitionDeserializer extends StdDeserializer<String[]> {
54
55         public DefinitionDeserializer() {
56             super(String[].class);
57         }
58
59         protected DefinitionDeserializer(Class<?> vc) {
60             super(vc);
61         }
62
63         @Override
64         public String[] deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
65             JsonNode node = p.getCodec().readTree(p);
66             List<String> strings = new ArrayList<>();
67             ObjectCodec oc = p.getCodec();
68             if (node.isArray()) {
69                 for (JsonNode n : node) {
70                     strings.add(oc.treeToValue(n, String.class));
71                 }
72             } else {
73                 strings.add(oc.treeToValue(node, String.class));
74             }
75             return strings.toArray(new String[0]);
76         }
77     }
78 }