Rev 1312 | Rev 1502 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1312 | Rev 1500 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | package pt.estgp.estgweb.web.json; |
1 | package pt.estgp.estgweb.web.json; |
2 | 2 | ||
- | 3 | import com.owlike.genson.TransformationException; |
|
- | 4 | import jomm.dao.impl.AbstractDao; |
|
- | 5 | import org.apache.log4j.Logger; |
|
- | 6 | import org.json.JSONArray; |
|
- | 7 | import org.json.JSONException; |
|
- | 8 | import org.json.JSONObject; |
|
- | 9 | import pt.estgp.estgweb.domain.UserSession; |
|
- | 10 | import pt.estgp.estgweb.services.courses.CoursesService; |
|
- | 11 | import pt.estgp.estgweb.services.courses.xsd.Curso; |
|
- | 12 | import pt.estgp.estgweb.web.UserSessionProxy; |
|
- | 13 | ||
3 | import javax.servlet.ServletException; |
14 | import javax.servlet.ServletException; |
4 | import javax.servlet.http.HttpServlet; |
15 | import javax.servlet.http.HttpServlet; |
5 | import javax.servlet.http.HttpServletRequest; |
16 | import javax.servlet.http.HttpServletRequest; |
6 | import javax.servlet.http.HttpServletResponse; |
17 | import javax.servlet.http.HttpServletResponse; |
- | 18 | import javax.xml.bind.JAXBContext; |
|
- | 19 | import javax.xml.bind.JAXBException; |
|
- | 20 | import javax.xml.bind.Marshaller; |
|
- | 21 | import javax.xml.bind.Unmarshaller; |
|
7 | import java.io.IOException; |
22 | import java.io.IOException; |
- | 23 | import java.io.PrintWriter; |
|
- | 24 | import java.io.StringReader; |
|
8 | 25 | ||
9 | /** |
26 | /** |
10 | * Created by jorgemachado on 02/02/16. |
27 | * Created by jorgemachado on 02/02/16. |
11 | */ |
28 | */ |
12 | public class JsonHandler extends HttpServlet |
29 | public class JsonHandler extends HttpServlet |
13 | { |
30 | { |
- | 31 | 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); |
|
- | 32 | ||
14 | /** Handles the HTTP <code>GET</code> method. |
33 | /** Handles the HTTP <code>GET</code> method. |
15 | * @param request servlet request |
34 | * @param request servlet request |
16 | * @param response servlet response |
35 | * @param response servlet response |
17 | */ |
36 | */ |
18 | protected void doGet(HttpServletRequest request, HttpServletResponse response) |
37 | protected void doGet(HttpServletRequest request, HttpServletResponse response) |
19 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException |
38 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException { |
20 | { |
- | |
21 | processRequest(request, response); |
39 | processRequestSafe(request, response); |
22 | } |
40 | } |
23 | 41 | ||
24 | /** Handles the HTTP <code>POST</code> method. |
42 | /** Handles the HTTP <code>POST</code> method. |
25 | * @param request servlet request |
43 | * @param request servlet request |
26 | * @param response servlet response |
44 | * @param response servlet response |
27 | */ |
45 | */ |
28 | protected void doPost(HttpServletRequest request, HttpServletResponse response) |
46 | protected void doPost(HttpServletRequest request, HttpServletResponse response) |
29 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException { |
47 | throws ServletException, 1.5.0/docs/api/java/io/IOException.html">IOException { |
30 | processRequest(request, response); |
48 | processRequestSafe(request, response); |
31 | } |
49 | } |
32 | 50 | ||
- | 51 | ||
33 | private void processRequest(HttpServletRequest request, HttpServletResponse response) { |
52 | private void processRequestSafe(HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/io/IOException.html">IOException { |
- | 53 | response.setContentType("application/json"); |
|
- | 54 | try { |
|
- | 55 | processRequest(request, response); |
|
- | 56 | } catch (TransformationException e) |
|
- | 57 | { |
|
- | 58 | response.getWriter().print(e); |
|
- | 59 | response.getWriter().print("See log for details:"); |
|
- | 60 | logger.error(e,e); |
|
- | 61 | } |
|
- | 62 | catch (JAXBException e) |
|
- | 63 | { |
|
- | 64 | response.getWriter().print(e); |
|
- | 65 | response.getWriter().print("See log for details:"); |
|
- | 66 | logger.error(e,e); |
|
- | 67 | } |
|
- | 68 | catch (JSONException e) |
|
- | 69 | { |
|
- | 70 | response.getWriter().print(e); |
|
- | 71 | response.getWriter().print("See log for details:"); |
|
- | 72 | logger.error(e, e); |
|
- | 73 | } |
|
34 | } |
74 | } |
35 | 75 | ||
- | 76 | private void processRequest(HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/io/IOException.html">IOException, TransformationException, JAXBException, JSONException { |
|
- | 77 | ||
- | 78 | ||
- | 79 | 1.5.0/docs/api/java/lang/String.html">String service = request.getParameter("service"); |
|
- | 80 | if(service == null) |
|
- | 81 | { |
|
- | 82 | printServices(response.getWriter()); |
|
- | 83 | } |
|
- | 84 | else if(service.equals("listCourses")) |
|
- | 85 | { |
|
- | 86 | 1.5.0/docs/api/java/lang/String.html">String school = request.getParameter("school"); |
|
- | 87 | 1.5.0/docs/api/java/lang/String.html">String type = request.getParameter("type"); |
|
- | 88 | ||
- | 89 | AbstractDao.getCurrentSession().beginTransaction(); |
|
- | 90 | JSONObject obj = new CoursesService().getActiveCoursesForJsonApi(school,type); |
|
- | 91 | AbstractDao.getCurrentSession().getTransaction().commit(); |
|
- | 92 | response.getWriter().write(obj.toString()); |
|
- | 93 | } |
|
- | 94 | else if(service.equals("getCourse") && request.getParameter("code") != null) |
|
- | 95 | { |
|
- | 96 | 1.5.0/docs/api/java/lang/String.html">String code = request.getParameter("code"); |
|
- | 97 | ||
- | 98 | ||
- | 99 | AbstractDao.getCurrentSession().beginTransaction(); |
|
- | 100 | JSONObject obj = new CoursesService().getCourseDetailForJsonApi(code); |
|
- | 101 | AbstractDao.getCurrentSession().getTransaction().commit(); |
|
- | 102 | response.getWriter().write(obj.toString()); |
|
- | 103 | } |
|
- | 104 | else if(service.equals("getStudiesPlanXml") && request.getParameter("code") != null) |
|
- | 105 | { |
|
- | 106 | 1.5.0/docs/api/java/lang/String.html">String code = request.getParameter("code"); |
|
- | 107 | response.setContentType("application/xml"); |
|
- | 108 | response.setCharacterEncoding("UTF-8"); |
|
- | 109 | AbstractDao.getCurrentSession().beginTransaction(); |
|
- | 110 | 1.5.0/docs/api/java/lang/String.html">String xml = new CoursesService().getCourseStudiesPlanXml(code); |
|
- | 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 | AbstractDao.getCurrentSession().getTransaction().commit(); |
|
- | 119 | ||
- | 120 | } |
|
- | 121 | else if(service.equals("syncSystemPlans") && request.getParameter("systemUrl") != null && request.getParameter("setActive") != null) |
|
- | 122 | { |
|
- | 123 | UserSession sess = UserSessionProxy.loadUserSessionFromRequest(request); |
|
- | 124 | response.setContentType("application/xml"); |
|
- | 125 | if(sess.getUser() != null && sess.getUser().isSuperuserOrAdmin()) |
|
- | 126 | { |
|
- | 127 | 1.5.0/docs/api/java/lang/String.html">String systemUrl = request.getParameter("systemUrl"); |
|
- | 128 | boolean setActive = 1.5.0/docs/api/java/lang/Boolean.html">Boolean.parseBoolean(request.getParameter("setActive")); |
|
- | 129 | response.setContentType("application/xml"); |
|
- | 130 | AbstractDao.getCurrentSession().beginTransaction(); |
|
- | 131 | 1.5.0/docs/api/java/lang/String.html">String log = new CoursesService().sincronizeCoursesStudiesPlans(systemUrl,setActive); |
|
- | 132 | AbstractDao.getCurrentSession().getTransaction().commit(); |
|
- | 133 | response.getWriter().write("<response><status>OK</status><log>" + log + "</log></response>"); |
|
- | 134 | } |
|
- | 135 | else |
|
- | 136 | { |
|
- | 137 | response.getWriter().write("<error>Permission Denied</error>"); |
|
- | 138 | } |
|
- | 139 | } |
|
- | 140 | else |
|
- | 141 | { |
|
- | 142 | printServices(response.getWriter()); |
|
- | 143 | } |
|
- | 144 | } |
|
- | 145 | ||
- | 146 | 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 |
|
- | 147 | { |
|
- | 148 | JSONObject obj = new JSONObject(); |
|
- | 149 | ||
- | 150 | JSONArray availableServices = new JSONArray(); |
|
- | 151 | ||
- | 152 | JSONObject service2 = new JSONObject(); |
|
- | 153 | service2.put("name","getCourse"); |
|
- | 154 | service2.put("parameterCode","code"); |
|
- | 155 | service2.put("parameterCodeType","integer"); |
|
- | 156 | service2.put("exampleCall1","/wsjson/api?service=getCourse&code=9119"); |
|
- | 157 | ||
- | 158 | JSONObject service = new JSONObject(); |
|
- | 159 | service.put("name","listCourses"); |
|
- | 160 | service.put("parameterType","type"); |
|
- | 161 | service.put("parameterTypeEnumValues","Licenciaturas,Mestrados,PosGraduacoes,CET,CTeSP or none for all"); |
|
- | 162 | service.put("parameterSchool","school"); |
|
- | 163 | service.put("parameterSchoolEnumValues","ESTG,ESECS,ESS,ESAE or none for all"); |
|
- | 164 | service.put("exampleCall1","/wsjson/api?service=listCourses"); |
|
- | 165 | service.put("exampleCall2","/wsjson/api?service=listCourses&type=Licenciaturas&school=ESTG"); |
|
- | 166 | ||
- | 167 | availableServices.put(service); |
|
- | 168 | availableServices.put(service2); |
|
- | 169 | JSONObject response = new JSONObject(); |
|
- | 170 | obj.put("response",response); |
|
- | 171 | response.put("status","invalid service"); |
|
- | 172 | response.put("availableServices",availableServices); |
|
- | 173 | out.write(obj.toString()); |
|
- | 174 | } |
|
36 | 175 | ||
37 | } |
176 | } |