Skip to content

Commit 9dcd994

Browse files
committed
API Returning JSON Array
1 parent 59e7404 commit 9dcd994

File tree

1 file changed

+250
-0
lines changed

1 file changed

+250
-0
lines changed
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
package com.he.api;
2+
3+
import java.io.IOException;
4+
import java.io.PrintWriter;
5+
import java.net.URL;
6+
import java.nio.file.FileSystems;
7+
import java.nio.file.Path;
8+
import java.nio.file.Paths;
9+
10+
import org.json.JSONObject;
11+
import java.util.ArrayList;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
import java.util.Map;
15+
16+
import javax.servlet.ServletException;
17+
import javax.servlet.annotation.WebServlet;
18+
import javax.servlet.http.HttpServlet;
19+
import javax.servlet.http.HttpServletRequest;
20+
import javax.servlet.http.HttpServletResponse;
21+
22+
import javax.xml.parsers.DocumentBuilderFactory;
23+
import javax.xml.transform.Transformer;
24+
import javax.xml.transform.TransformerFactory;
25+
import javax.xml.transform.dom.DOMSource;
26+
import javax.xml.transform.stream.StreamResult;
27+
import javax.xml.parsers.DocumentBuilder;
28+
import org.w3c.dom.Document;
29+
import org.w3c.dom.NodeList;
30+
import org.w3c.dom.Node;
31+
import org.w3c.dom.Element;
32+
import java.io.File;
33+
import com.he.api.ParamUtility;
34+
35+
// http://localhost:8080/HESolution/APIServlet?action=SearchById&id=1&firstName=ABC&lastName=DEF&low=0&high=2
36+
37+
/**
38+
* Servlet implementation class APIServlet
39+
*/
40+
@WebServlet("/API")
41+
public class APIServlet extends HttpServlet {
42+
private static final long serialVersionUID = 1L;
43+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44+
45+
response.setContentType("text/html");
46+
PrintWriter out = response.getWriter();
47+
48+
49+
// Path currentRelativePath = Paths.get("");
50+
// String s = currentRelativePath.toAbsolutePath().toString()+"\\data.xml";
51+
// System.out.println("Current Path :"+s);
52+
// File fXmlFile = new File("F:\\WORK\\JavaEclipse\\HESolution\\src\\com\\he\\api\\data.xml");
53+
54+
String action = ParamUtility.getValue(request,"action", null);
55+
String firstName = ParamUtility.getValue(request,"firstName", null);
56+
String lastName = ParamUtility.getValue(request,"lastName", null);
57+
int id = Integer.parseInt(ParamUtility.getValue(request,"id", "0").trim());
58+
int low = Integer.parseInt(ParamUtility.getValue(request,"low", "0").trim());
59+
int high = Integer.parseInt(ParamUtility.getValue(request,"high", "0").trim());
60+
61+
try {
62+
out.println(generateJSONData(action, id, firstName, lastName, low, high));
63+
} catch (Exception e) {
64+
e.printStackTrace();
65+
}
66+
out.close();
67+
}
68+
69+
String generateJSONData(String action,int id,String firstName,String lastName, int low, int high) {
70+
try {
71+
72+
// Path currentRelativePath = Paths.get("");
73+
// String s = currentRelativePath.toAbsolutePath().toString()+"/data.xml";
74+
75+
URL path = APIServlet.class.getResource("data.xml");
76+
File fXmlFile = new File(path.getFile());
77+
// File fXmlFile = new File("F:\\WORK\\JavaEclipse\\HESolution\\src\\com\\he\\api\\data.xml");
78+
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
79+
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
80+
Document doc = dBuilder.parse(fXmlFile);
81+
82+
doc.getDocumentElement().normalize();
83+
Element root = doc.getDocumentElement();
84+
85+
NodeList nList = doc.getElementsByTagName("user");
86+
87+
StringBuffer returnData = new StringBuffer("");
88+
89+
List<JSONObject> list = new ArrayList<JSONObject>();
90+
if(action==null) return "";
91+
if(action.equals("searchById")) {
92+
93+
if(id >= Integer.valueOf(root.getAttribute("id_auto_increment"))) return "";
94+
for (int temp = 0; temp < nList.getLength(); temp++) {
95+
96+
97+
Node nNode = nList.item(temp);
98+
99+
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
100+
101+
Element eElement = (Element) nNode;
102+
if(Integer.parseInt(eElement.getAttribute("id").trim()) == id) {
103+
// if(returnData.toString().equals("")) {
104+
// returnData.append("[{");
105+
// }
106+
// else {
107+
// returnData.append("<br>},{");
108+
// }
109+
//
110+
// returnData.append("<br>\"id\": " + eElement.getAttribute("id") + ",");
111+
// returnData.append("<br>\"firstName\": \"" + eElement.getAttribute("firstName")+ "\",");
112+
// returnData.append("<br>\"lastName\": \"" + eElement.getAttribute("lastName")+ "\"");
113+
//
114+
JSONObject json = new JSONObject();
115+
json.put("id", Integer.parseInt(eElement.getAttribute("id")));
116+
json.put("firstName", eElement.getAttribute("firstName"));
117+
json.put("lastName", eElement.getAttribute("lastName"));
118+
119+
list.add(json);
120+
121+
}
122+
123+
}
124+
}
125+
126+
returnData.append(list.toString());
127+
128+
} else if(action.equals("searchByFirstName")) {
129+
for (int temp = 0; temp < nList.getLength(); temp++) {
130+
131+
Node nNode = nList.item(temp);
132+
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
133+
134+
Element eElement = (Element) nNode;
135+
if(eElement.getAttribute("firstName").equals(firstName)) {
136+
JSONObject json = new JSONObject();
137+
json.put("id", Integer.parseInt(eElement.getAttribute("id")));
138+
json.put("firstName", eElement.getAttribute("firstName"));
139+
json.put("lastName", eElement.getAttribute("lastName"));
140+
141+
list.add(json);
142+
}
143+
144+
}
145+
}
146+
147+
returnData.append(list.toString());
148+
149+
} else if(action.equals("searchByLastName")) {
150+
for (int temp = 0; temp < nList.getLength(); temp++) {
151+
152+
Node nNode = nList.item(temp);
153+
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
154+
155+
Element eElement = (Element) nNode;
156+
if(eElement.getAttribute("lastName").equals(lastName)) {
157+
JSONObject json = new JSONObject();
158+
json.put("id", Integer.parseInt(eElement.getAttribute("id")));
159+
json.put("firstName", eElement.getAttribute("firstName"));
160+
json.put("lastName", eElement.getAttribute("lastName"));
161+
162+
list.add(json);
163+
}
164+
}
165+
}
166+
returnData.append(list.toString());
167+
168+
} else if(action.equals("searchByIdRange")) {
169+
if(high >= Integer.valueOf(root.getAttribute("id_auto_increment")) && low<1) return "";
170+
for (int temp = 0; temp < nList.getLength(); temp++) {
171+
Node nNode = nList.item(temp);
172+
173+
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
174+
175+
Element eElement = (Element) nNode;
176+
if(Integer.parseInt(eElement.getAttribute("id").trim()) >=low && Integer.parseInt(eElement.getAttribute("id").trim()) <=high) {
177+
JSONObject json = new JSONObject();
178+
json.put("firstName", eElement.getAttribute("firstName"));
179+
json.put("lastName", eElement.getAttribute("lastName"));
180+
json.put("id", Integer.parseInt(eElement.getAttribute("id")));
181+
182+
list.add(json);
183+
}
184+
}
185+
}
186+
187+
returnData.append(list.toString());
188+
} else if(action.equals("updateUser")) {
189+
190+
for (int temp = 0; temp < nList.getLength(); temp++) {
191+
Node nNode = nList.item(temp);
192+
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
193+
Element eElement = (Element) nNode;
194+
if(Integer.parseInt(eElement.getAttribute("id").trim()) ==id) {
195+
if(returnData.toString().equals("")) {
196+
returnData.append("[{");
197+
}
198+
else {
199+
returnData.append("<br>},{");
200+
}
201+
eElement.setAttribute("firstName", firstName);
202+
eElement.setAttribute("lastName", lastName);
203+
204+
TransformerFactory transformerFactory = TransformerFactory.newInstance();
205+
Transformer transformer = transformerFactory.newTransformer();
206+
DOMSource source = new DOMSource(doc);
207+
208+
// Path currentRelativePath = Paths.get("");
209+
// String s = currentRelativePath.toAbsolutePath().toString()+"/data.xml";
210+
StreamResult result = new StreamResult(new File(path.getFile()));
211+
transformer.transform(source, result);
212+
}
213+
}
214+
}
215+
216+
} else if(action.equals("insertUser")) {
217+
Element user = doc.createElement("user");
218+
root.appendChild(user);
219+
220+
user.setAttribute("id", root.getAttribute("id_auto_increment"));
221+
user.setAttribute("firstName", firstName);
222+
user.setAttribute("lastName", lastName);
223+
224+
root.setAttribute("id_auto_increment", String.valueOf(Integer.valueOf(root.getAttribute("id_auto_increment"))+1));
225+
226+
TransformerFactory transformerFactory = TransformerFactory.newInstance();
227+
Transformer transformer = transformerFactory.newTransformer();
228+
DOMSource source = new DOMSource(doc);
229+
// Path currentRelativePath = Paths.get("");
230+
// String s = currentRelativePath.toAbsolutePath().toString()+"/data.xml";
231+
StreamResult result = new StreamResult(new File(path.getFile()));
232+
transformer.transform(source, result);
233+
234+
} else {
235+
return "";
236+
}
237+
238+
239+
return returnData.toString();
240+
} catch (Exception e) {
241+
System.out.println("Something went wrong");
242+
e.printStackTrace();
243+
}
244+
return "";
245+
246+
}
247+
248+
249+
}
250+

0 commit comments

Comments
 (0)