Rev 1500 | Rev 1776 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1312 | jmachado | 1 | package pt.estgp.estgweb.web.json; |
2 | |||
1500 | jmachado | 3 | import com.owlike.genson.TransformationException; |
4 | import org.apache.log4j.Logger; |
||
5 | import org.json.JSONArray; |
||
6 | import org.json.JSONException; |
||
7 | import org.json.JSONObject; |
||
8 | import pt.estgp.estgweb.domain.UserSession; |
||
9 | import pt.estgp.estgweb.services.courses.xsd.Curso; |
||
10 | import pt.estgp.estgweb.web.UserSessionProxy; |
||
1502 | jmachado | 11 | import pt.estgp.estgweb.web.utils.RequestUtils; |
12 | import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
||
13 | import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
||
1500 | jmachado | 14 | |
1312 | jmachado | 15 | import javax.servlet.ServletException; |
16 | import javax.servlet.http.HttpServlet; |
||
17 | import javax.servlet.http.HttpServletRequest; |
||
18 | import javax.servlet.http.HttpServletResponse; |
||
1500 | jmachado | 19 | import javax.xml.bind.JAXBContext; |
20 | import javax.xml.bind.JAXBException; |
||
21 | import javax.xml.bind.Marshaller; |
||
22 | import javax.xml.bind.Unmarshaller; |
||
1312 | jmachado | 23 | import java.io.IOException; |
1500 | jmachado | 24 | import java.io.PrintWriter; |
25 | import java.io.StringReader; |
||
1312 | jmachado | 26 | |
27 | /** |
||
28 | * Created by jorgemachado on 02/02/16. |
||
29 | */ |
||
30 | public class JsonHandler extends HttpServlet |
||
31 | { |
||
1500 | jmachado | 32 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(JsonHandler.class); |
33 | |||
1312 | jmachado | 34 | /** Handles the HTTP <code>GET</code> method. |
35 | * @param request servlet request |
||
36 | * @param response servlet response |
||
37 | */ |
||
38 | protected void doGet(HttpServletRequest request, HttpServletResponse response) |
||
1500 | jmachado | 39 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException { |
40 | processRequestSafe(request, response); |
||
1312 | jmachado | 41 | } |
42 | |||
43 | /** Handles the HTTP <code>POST</code> method. |
||
44 | * @param request servlet request |
||
45 | * @param response servlet response |
||
46 | */ |
||
47 | protected void doPost(HttpServletRequest request, HttpServletResponse response) |
||
48 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException { |
||
1500 | jmachado | 49 | processRequestSafe(request, response); |
1312 | jmachado | 50 | } |
51 | |||
1500 | jmachado | 52 | |
53 | private void processRequestSafe(HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/io/IOException.html">IOException { |
||
54 | response.setContentType("application/json"); |
||
55 | try { |
||
56 | processRequest(request, response); |
||
57 | } catch (TransformationException e) |
||
58 | { |
||
59 | response.getWriter().print(e); |
||
60 | response.getWriter().print("See log for details:"); |
||
61 | logger.error(e,e); |
||
62 | } |
||
63 | catch (JAXBException e) |
||
64 | { |
||
65 | response.getWriter().print(e); |
||
66 | response.getWriter().print("See log for details:"); |
||
67 | logger.error(e,e); |
||
68 | } |
||
69 | catch (JSONException e) |
||
70 | { |
||
71 | response.getWriter().print(e); |
||
72 | response.getWriter().print("See log for details:"); |
||
73 | logger.error(e, e); |
||
1502 | jmachado | 74 | } catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable throwable) { |
75 | response.getWriter().print(throwable); |
||
76 | response.getWriter().print("See log for details:"); |
||
77 | logger.error(throwable, throwable); |
||
1500 | jmachado | 78 | } |
1312 | jmachado | 79 | } |
80 | |||
1502 | jmachado | 81 | private void processRequest(HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable { |
1312 | jmachado | 82 | |
1502 | jmachado | 83 | IServiceManager sm = ServiceManager.getInstance(); |
1500 | jmachado | 84 | |
85 | 1.5.0/docs/api/java/lang/String.html">String service = request.getParameter("service"); |
||
86 | if(service == null) |
||
87 | { |
||
88 | printServices(response.getWriter()); |
||
89 | } |
||
90 | else if(service.equals("listCourses")) |
||
91 | { |
||
92 | 1.5.0/docs/api/java/lang/String.html">String school = request.getParameter("school"); |
||
93 | 1.5.0/docs/api/java/lang/String.html">String type = request.getParameter("type"); |
||
1502 | jmachado | 94 | JSONObject obj = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "GetActiveCoursesForJsonApi", new 5+0%2Fdocs%2Fapi+Object">Object[]{school, type}); |
1500 | jmachado | 95 | response.getWriter().write(obj.toString()); |
96 | } |
||
97 | else if(service.equals("getCourse") && request.getParameter("code") != null) |
||
98 | { |
||
99 | 1.5.0/docs/api/java/lang/String.html">String code = request.getParameter("code"); |
||
1502 | jmachado | 100 | JSONObject obj = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "GetCourseDetailForJsonApi", new 5+0%2Fdocs%2Fapi+Object">Object[]{code}); |
1500 | jmachado | 101 | response.getWriter().write(obj.toString()); |
102 | } |
||
103 | else if(service.equals("getStudiesPlanXml") && request.getParameter("code") != null) |
||
104 | { |
||
105 | 1.5.0/docs/api/java/lang/String.html">String code = request.getParameter("code"); |
||
1502 | jmachado | 106 | 1.5.0/docs/api/java/lang/String.html">String renew = request.getParameter("renew"); |
1500 | jmachado | 107 | response.setContentType("application/xml"); |
1502 | jmachado | 108 | response.setCharacterEncoding("UTF-8"); |
109 | 1.5.0/docs/api/java/lang/String.html">String xml = (1.5.0/docs/api/java/lang/String.html">String) sm.execute(RequestUtils.getRequester(request, response), "GetCourseStudiesPlanXml", new 5+0%2Fdocs%2Fapi+Object">Object[]{code,renew}); |
||
110 | |||
1500 | jmachado | 111 | JAXBContext jc = JAXBContext.newInstance(Curso.class); |
112 | Unmarshaller unmarshaller = jc.createUnmarshaller(); |
||
113 | Curso curso = (Curso) unmarshaller.unmarshal(new 1.5.0/docs/api/java/io/StringReader.html">StringReader(xml)); |
||
114 | Marshaller marshaller = jc.createMarshaller(); |
||
115 | marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); |
||
116 | marshaller.marshal(curso, response.getOutputStream()); |
||
117 | //SETTING XML in COURSE STUDIES PLAN |
||
118 | } |
||
119 | else if(service.equals("syncSystemPlans") && request.getParameter("systemUrl") != null && request.getParameter("setActive") != null) |
||
120 | { |
||
121 | UserSession sess = UserSessionProxy.loadUserSessionFromRequest(request); |
||
122 | response.setContentType("application/xml"); |
||
123 | if(sess.getUser() != null && sess.getUser().isSuperuserOrAdmin()) |
||
124 | { |
||
125 | 1.5.0/docs/api/java/lang/String.html">String systemUrl = request.getParameter("systemUrl"); |
||
126 | boolean setActive = 1.5.0/docs/api/java/lang/Boolean.html">Boolean.parseBoolean(request.getParameter("setActive")); |
||
127 | response.setContentType("application/xml"); |
||
1502 | jmachado | 128 | 1.5.0/docs/api/java/lang/String.html">String log = (1.5.0/docs/api/java/lang/String.html">String) sm.execute(RequestUtils.getRequester(request, response), "SincronizeCoursesStudiesPlans", new 5+0%2Fdocs%2Fapi+Object">Object[]{systemUrl,setActive}); |
1500 | jmachado | 129 | response.getWriter().write("<response><status>OK</status><log>" + log + "</log></response>"); |
130 | } |
||
131 | else |
||
132 | { |
||
133 | response.getWriter().write("<error>Permission Denied</error>"); |
||
134 | } |
||
135 | } |
||
136 | else |
||
137 | { |
||
138 | printServices(response.getWriter()); |
||
139 | } |
||
140 | } |
||
141 | |||
142 | public void printServices(1.5.0/docs/api/java/io/PrintWriter.html">PrintWriter out) throws JSONException, 1.5.0/docs/api/java/io/IOException.html">IOException |
||
143 | { |
||
144 | JSONObject obj = new JSONObject(); |
||
145 | |||
146 | JSONArray availableServices = new JSONArray(); |
||
147 | |||
148 | JSONObject service2 = new JSONObject(); |
||
149 | service2.put("name","getCourse"); |
||
150 | service2.put("parameterCode","code"); |
||
151 | service2.put("parameterCodeType","integer"); |
||
152 | service2.put("exampleCall1","/wsjson/api?service=getCourse&code=9119"); |
||
153 | |||
154 | JSONObject service = new JSONObject(); |
||
155 | service.put("name","listCourses"); |
||
156 | service.put("parameterType","type"); |
||
157 | service.put("parameterTypeEnumValues","Licenciaturas,Mestrados,PosGraduacoes,CET,CTeSP or none for all"); |
||
158 | service.put("parameterSchool","school"); |
||
159 | service.put("parameterSchoolEnumValues","ESTG,ESECS,ESS,ESAE or none for all"); |
||
160 | service.put("exampleCall1","/wsjson/api?service=listCourses"); |
||
161 | service.put("exampleCall2","/wsjson/api?service=listCourses&type=Licenciaturas&school=ESTG"); |
||
162 | |||
163 | availableServices.put(service); |
||
164 | availableServices.put(service2); |
||
165 | JSONObject response = new JSONObject(); |
||
166 | obj.put("response",response); |
||
167 | response.put("status","invalid service"); |
||
168 | response.put("availableServices",availableServices); |
||
169 | out.write(obj.toString()); |
||
170 | } |
||
171 | |||
1312 | jmachado | 172 | } |