• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

opensrp / opensrp-server-core / #162

pending completion
#162

Pull #621

Github

web-flow
Merge b5d4652eb into 68d7f3ff3
Pull Request #621: update selectStructureAndFamilyWithinRadius query

8286 of 10652 relevant lines covered (77.79%)

0.78 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/org/opensrp/util/JsonParser.java
1
package org.opensrp.util;
2

3
import java.io.IOException;
4
import java.util.ArrayList;
5
import java.util.Iterator;
6
import java.util.List;
7

8
import org.opensrp.domain.Form;
9
import org.opensrp.domain.FormDefinition;
10
import org.opensrp.domain.FormField;
11
import org.opensrp.domain.SubFormDefinition;
12

13
import com.fasterxml.jackson.core.JsonProcessingException;
14
import com.fasterxml.jackson.databind.JsonNode;
15
import com.fasterxml.jackson.databind.ObjectMapper;
16

17
public class JsonParser {
×
18
        
19
        public String getFormDefinition(byte[] jsonData) throws JsonProcessingException, IOException {
20
                try {
21
                        
22
                        //read json file data to String
23
                        //byte[] jsonData = Files.readAllBytes(Paths.get("tt.json"));
24
                        JsonParser jsonParser = new JsonParser();
×
25
                        //create ObjectMapper instance
26
                        ObjectMapper objectMapper = new ObjectMapper();
×
27
                        //        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
28
                        //        objectMapper.readValue(jsonData, FormSubmission.class)
29
                        //read JSON like DOM Parser FormSubmission
30
                        JsonNode rootNode = objectMapper.readTree(jsonData);
×
31
                        FormDefinition formD = jsonParser.getForm(rootNode);
×
32
                        //System.out.println(objectMapper.writeValueAsString(formD));;
33
                        //        objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
34
                        //objectMapper.writeValue(new File("form_definition.json"), formD);
35
                        String s = objectMapper.writer().withDefaultPrettyPrinter().writeValueAsString(formD);
×
36
                        //String s=objectMapper.writeValueAsString(formD);
37
                        //objectMapper.
38
                        //System.out.println(s);
39
                        
40
                        return s;
×
41
                }
42
                catch (Exception e) {
×
43
                        System.err.println(e.getMessage());
×
44
                        e.printStackTrace();
×
45
                        
46
                }
47
                return null;
×
48
        }
49
        
50
        private List<String> getFields(JsonNode jsonNode) {
51
                //StringBuilder fields=new StringBuilder();
52
                List<String> fields = new ArrayList<String>();
×
53
                
54
                Iterator<JsonNode> elements = jsonNode.elements();
×
55
                while (elements.hasNext()) {
×
56
                        Iterator<JsonNode> phones = elements.next().elements();
×
57
                        while (phones.hasNext()) {
×
58
                                JsonNode jsonNode1 = (JsonNode) phones.next();
×
59
                                Iterator<JsonNode> ps = jsonNode1.iterator();
×
60
                                while (ps.hasNext()) {
×
61
                                        JsonNode jsonNode2 = (JsonNode) ps.next();
×
62
                                        if (jsonNode2.get("name") != null) {
×
63
                                                //        System.out.println(jsonNode2.get("name"));
64
                                                fields.add(jsonNode2.get("name").asText());
×
65
                                        }
66
                                }
×
67
                                //                System.out.println("Phone No = "+Text());        
68
                        }
×
69
                        
70
                }
×
71
                return fields;
×
72
        }
73
        
74
        private List<FormField> getFields(JsonNode node, String source) {
75
                List<FormField> list = new ArrayList<FormField>();
×
76
                //String source="/model/instance/"+source+"/";
77
                
78
                Iterator<JsonNode> elements = node.elements();
×
79
                
80
                //        System.err.println(node);
81
                //System.out.println(phoneNosNode);
82
                while (elements.hasNext()) {
×
83
                        JsonNode jjNode = elements.next();
×
84
                        
85
                        if (!jjNode.get("type").asText().equalsIgnoreCase("group")
×
86
                                && !jjNode.get("type").asText().equalsIgnoreCase("repeat")) {
×
87
                                
88
                                //        list.add(new FormField(  Node.get("name").asText(), source+Node.get("name").asText()  ));
89
                                
90
                                list.add(new FormField(jjNode.get("name").asText(), source + jjNode.get("name").asText()));
×
91
                        } else if (jjNode.get("type").asText().equalsIgnoreCase("group")) {
×
92
                                //System.err.println( );
93
                                list.addAll(getGroupFields(jjNode, source));
×
94
                        }
95
                        
96
                        //System.out.println(Node.get("name"));
97
                }
×
98
                
99
                return list;
×
100
        }
101
        
102
        private List<FormField> getGroupFields(JsonNode node, String formName) {
103
                
104
                List<FormField> list = new ArrayList<FormField>();
×
105
                String source = formName + node.get("name").asText() + "/";
×
106
                try {//jjNode.path("children")
107
                        Iterator<JsonNode> elements = node.path("children").elements();
×
108
                        
109
                        //System.out.println(phoneNosNode);
110
                        while (elements.hasNext()) {
×
111
                                //System.err.println("sda");
112
                                JsonNode jjNode = elements.next();
×
113
                                //System.err.println(jjNode);
114
                                //Iterator<JsonNode>  phones = node.getElements();
115
                                if (jjNode.get("name") != null) {
×
116
                                        //System.err.println(jjNode.get("name").asText());
117
                                        
118
                                        list.add(new FormField(jjNode.get("name").asText(), source + jjNode.get("name").asText()));
×
119
                                        
120
                                        //        }//list.add(node.get("name")+"/"+(Node.get("name").asText()));
121
                                        //System.out.println(Node.get("name"));
122
                                } else {
123
                                        
124
                                        //
125
                                        System.err.println(jjNode.get("name").asText());
×
126
                                }
127
                        }
×
128
                }
129
                catch (Exception e) {
×
130
                        e.printStackTrace();
×
131
                }
×
132
                
133
                return list;
×
134
                
135
        }
136
        
137
        private FormDefinition getForm(JsonNode rootNode) {
138
                //StringBuilder sBuilder=new StringBuilder("{ ");
139
                FormDefinition formDefinition = new FormDefinition();
×
140
                //FormInstance formInstance=new FormInstance();
141
                //formInstance. 
142
                
143
                //]
144
                
145
                String formName = rootNode.get("name").asText();
×
146
                String source = "/model/instance/" + formName + "/";
×
147
                
148
                //System.out.println(rootNode.get("name"));
149
                JsonNode phoneNosNode = rootNode.path("children");
×
150
                //getFields();
151
                List<FormField> fields = getFields(phoneNosNode, source);
×
152
                //System.out.println(fields);
153
                FormField field = new FormField("id", null);
×
154
                field.setShouldLoadValue(true);
×
155
                //fields.add(field);
156
                //        fields.set(0, field);
157
                fields.add(0, field);
×
158
                Form formData = new Form("", source, fields, null);
×
159
                List<SubFormDefinition> sub_forms = getSubForms(phoneNosNode, source);
×
160
                formData.setSub_forms(sub_forms);
×
161
                formDefinition.setForm(formData);
×
162
                return formDefinition;
×
163
        }
164
        
165
        private SubFormDefinition getSubForm(JsonNode rootNode, String source) {
166
                String formName = rootNode.get("name").asText();
×
167
                source += formName + "/";
×
168
                System.out.println(rootNode.path("children"));
×
169
                List<FormField> fields = getFields(rootNode.path("children"), source);
×
170
                FormField field = new FormField("id", null);
×
171
                field.setShouldLoadValue(true);
×
172
                //fields.add(field);
173
                fields.add(0, field);
×
174
                SubFormDefinition subForm = new SubFormDefinition(formName, fields);
×
175
                subForm.setDefault_bind_path(source);
×
176
                subForm.setBind_type("");
×
177
                //SubFormDefinition
178
                return subForm;
×
179
        }
180
        
181
        private List<SubFormDefinition> getSubForms(JsonNode node, String source) {
182
                List<SubFormDefinition> list = new ArrayList<SubFormDefinition>();
×
183
                //String source="/model/instance/"+source+"/";
184
                Iterator<JsonNode> elements = node.elements();
×
185
                //System.out.println(phoneNosNode);
186
                while (elements.hasNext()) {
×
187
                        JsonNode jjNode = elements.next();
×
188
                        
189
                        if (jjNode.get("type").asText().equalsIgnoreCase("repeat")) {
×
190
                                
191
                                list.add(getSubForm(jjNode, source));
×
192
                        }
193
                        
194
                        //System.out.println(Node.get("name"));
195
                }
×
196
                
197
                return list;
×
198
        }
199
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc