Subversion Repositories bacoAlunos

Rev

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
}