Subversion Repositories bacoAlunos

Rev

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
}