annotate src/main/java/de/mpiwg/indexmeta/web/servlet/methods/JSONGetCtxFromDB.java @ 7:bc57f2660b0f

implementation of web service
author Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
date Fri, 12 Apr 2013 17:48:42 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package de.mpiwg.indexmeta.web.servlet.methods;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.io.IOException;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.io.PrintWriter;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 import java.util.ArrayList;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import java.util.List;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
7
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 import javax.servlet.ServletException;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import javax.servlet.http.HttpServletRequest;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 import javax.servlet.http.HttpServletResponse;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
11
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 import org.apache.commons.lang.StringUtils;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 import org.json.JSONArray;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 import org.json.JSONException;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 import org.json.JSONObject;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
16
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 import de.mpiwg.indexmeta.bo.Contextualization;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 import de.mpiwg.indexmeta.services.DataProvider;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 import de.mpiwg.indexmeta.web.utils.JSONUtils;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
20
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 public class JSONGetCtxFromDB extends AbstractServletMethod {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
22
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 public static void execute(DataProvider dp,
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 HttpServletRequest request, HttpServletResponse response)
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 throws ServletException, IOException, JSONException {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
26
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 JSONObject json = new JSONObject();
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
28
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 long startExecution = System.currentTimeMillis();
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
30
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 String indexMetaId = getString(request, p_indexMetaId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 String type = getString(request, p_type);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 String elementId = getString(request, p_elementId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 String remoteId = getString(request, p_remoteId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
35
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 List<Contextualization> rs = null;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
37
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 if (StringUtils.isNotEmpty(indexMetaId)) {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
39
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 rs = dp.getCtxByIndexMetaId(indexMetaId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 rs = filterByType(rs, type);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 rs = filterByElementId(rs, elementId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 rs = filterByRemoteId(rs, remoteId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
44
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 } else if (StringUtils.isNotEmpty(type)) {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
46
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 rs = dp.getCtxByType(type);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 rs = filterByElementId(rs, elementId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 rs = filterByRemoteId(rs, remoteId);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
50
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 } else {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 response.sendError(HttpServletResponse.SC_BAD_REQUEST,
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 "Parameters 'indexMetaId' and 'type' are null. "
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 + "At least one of them must be not null.");
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 return;
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 }
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
57
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 JSONArray rsArray = new JSONArray();
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 for (Contextualization ctx : rs) {
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 rsArray.put(JSONUtils.ctx2JSON(ctx));
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 }
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
62
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 json.put("rs", rsArray);
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 json.put(RUNTIME, (System.currentTimeMillis() - startExecution));
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
65
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 PrintWriter out = response.getWriter();
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 out.print(json.toString());
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
68
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 }
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
70
bc57f2660b0f implementation of web service
Jorge Urzua <jurzua@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 }