Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1500 → Rev 1502

/branches/v3/impl/conf/berserk/sd.xml
1542,6 → 1542,48
</service>
 
 
<service>
<name>SincronizeCoursesStudiesPlans</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>sincronizeCoursesStudiesPlans</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
<service>
<name>GetCourseStudiesPlanXml</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>getCourseStudiesPlanXml</defaultMethod>
<filterChains>
<chain name="Logger"/>
</filterChains>
</service>
<service>
<name>GetCourseDetailForJsonApi</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>getCourseDetailForJsonApi</defaultMethod>
<filterChains>
<chain name="Logger"/>
</filterChains>
</service>
<service>
<name>GetActiveCoursesForJsonApi</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>getActiveCoursesForJsonApi</defaultMethod>
<filterChains>
<chain name="Logger"/>
</filterChains>
</service>
 
 
 
2853,4 → 2895,7
 
 
 
 
 
 
</serviceDefinitions>
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java
260,6 → 260,7
 
InputStream stream;
IRepositoryFile repositoryFile = repositoryService.load(c.getStudiesPlan(),userSession);
long lastVersion = repositoryService.loadView(c.getStudiesPlan()).getLastVersion().getId();
stream = repositoryFile.getInput();
 
try {
281,6 → 282,7
 
} catch (JAXBException e) {
logger.error(e,e);
System.out.print("check XML for possible errors for repositoryStream:" + c.getStudiesPlan() + " file version: " + lastVersion);
throw e;
} catch (TransformationException e) {
logger.error(e, e);
563,9 → 565,26
* @return
* @throws JSONException
*/
public String getCourseStudiesPlanXml(String code) throws JSONException {
public String getCourseStudiesPlanXml(String code,String renew) throws JSONException {
 
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(code);
 
if(renew != null || course.getStudiesPlans() == null || course.getStudiesPlans().size() == 0)
{
logger.info("status JSON NOT EXIST FOR STUDIES PLAN IN THIS COURSE, will generate");
UserSession userSession = DomainObjectFactory.createUserSessionImpl();
userSession.setUser(DaoFactory.getUserDaoImpl().load(new Long(1)));
try {
generateXmlJaxbStudiesPlanVersion(userSession, course, false, null);
} catch (JAXBException e) {
logger.error(e,e);
return "<error>" + e.toString() + ". see log for details</error>";
} catch (TransformationException e) {
logger.error(e, e);
return "<error>" + e.toString() + ". see log for details</error>";
}
}
if(course.getStudiesPlans() != null && course.getStudiesPlans().size() > 0)
{
return course.getStudiesPlans().iterator().next().getXml();
587,7 → 606,7
* @throws JAXBException
*/
 
public String sincronizeCoursesStudiesPlans(String systemUrl,boolean setActive) throws IOException, JSONException, TransformationException, JAXBException {
public String sincronizeCoursesStudiesPlans(String systemUrl,boolean setActive,UserSession sess) throws IOException, JSONException, TransformationException, JAXBException {
 
StringBuilder log = new StringBuilder();
URL url = new URL(systemUrl + "/wsjson/api?service=listCourses");
597,27 → 616,35
JSONArray courses = obj.getJSONArray("courses");
for(int i = 0; i < courses.length();i++)
{
JSONObject course = courses.getJSONObject(i);
String code = course.getString("code");
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(code);
if(c == null)
{
String msg = "SKIPING - Course " + code + " " + course.getString("name") + " does not exist in this system";
log.append("<info>" + msg+"</info>");
logger.info(msg);
}
else
{
String msg = "UPDATING - Course " + code + " " + course.getString("name") + " exist in this system";
log.append("<info>" + msg+"</info>");
logger.info(msg);
String code = "";
try{
JSONObject course = courses.getJSONObject(i);
code = course.getString("code");
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(code);
if(c == null)
{
String msg = "SKIPING - Course " + code + " " + course.getString("name") + " does not exist in this system";
log.append("<info>" + msg+"</info>");
logger.info(msg);
}
else
{
String msg = "UPDATING - Course " + code + " " + course.getString("name") + " exist in this system";
log.append("<info>" + msg+"</info>");
logger.info(msg);
 
//#############UPDATING STUDIES PLAN
updateStudiesPlanFromRemoteSystem(systemUrl, setActive, log, course, code, c);
//#############UPDATING STUDIES PLAN
updateStudiesPlanFromRemoteSystem(systemUrl, setActive, log, course, code, c);
 
//#############UPDATING Course Comission Members
updateCourseComissionMembers(systemUrl, code, c);
//#############UPDATING Course Comission Members
updateCourseComissionMembers(systemUrl, code, c);
}
}
catch(Throwable e)
{
logger.error("UPDATE COURSE: " + i + " code: " + code + " FAILED");
logger.error(e,e);
}
}
return log.toString();
 
702,7 → 729,7
 
private void updateStudiesPlanFromRemoteSystem(String systemUrl, boolean setActive, StringBuilder log, JSONObject course, String code, Course c) throws IOException, JSONException, TransformationException, JAXBException {
String msg;
InputStream stream = new URL(systemUrl + "/wsjson/api?service=getStudiesPlanXml&code=" + code).openStream();
InputStream stream = new URL(systemUrl + "/wsjson/api?service=getStudiesPlanXml&code=" + code + "&renew=true").openStream();
String studiesPlan = StreamsUtils.readString(stream);
int len = studiesPlan.length();
if(studiesPlan == null || studiesPlan.trim().length() == 0 || studiesPlan.contains("<error>"))
736,7 → 763,7
stream = new URL(systemUrl + "/wsjson/api?service=getStudiesPlanXml&code=" + code).openStream();
UserSession userSession = DomainObjectFactory.createUserSessionImpl();
userSession.setUser(DaoFactory.getUserDaoImpl().load(new Long(1)));
new CoursesService().uploadStudiesPlan(stream, "curso_" + code + ".xml", len,"appication/xml", userSession,c,true,"http://www.estgp.pt");
new CoursesService().uploadStudiesPlan(stream, "curso_" + code + ".xml", len,"appication/xml", userSession,c,true,systemUrl);
}
}
 
/branches/v3/impl/src/java/pt/estgp/estgweb/web/json/JsonHandler.java
1,15 → 1,16
package pt.estgp.estgweb.web.json;
 
import com.owlike.genson.TransformationException;
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.services.courses.CoursesService;
import pt.estgp.estgweb.services.courses.xsd.Curso;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
70,11 → 71,16
response.getWriter().print(e);
response.getWriter().print("See log for details:");
logger.error(e, e);
} catch (Throwable throwable) {
response.getWriter().print(throwable);
response.getWriter().print("See log for details:");
logger.error(throwable, throwable);
}
}
 
private void processRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, TransformationException, JAXBException, JSONException {
private void processRequest(HttpServletRequest request, HttpServletResponse response) throws Throwable {
 
IServiceManager sm = ServiceManager.getInstance();
 
String service = request.getParameter("service");
if(service == null)
85,29 → 91,23
{
String school = request.getParameter("school");
String type = request.getParameter("type");
 
AbstractDao.getCurrentSession().beginTransaction();
JSONObject obj = new CoursesService().getActiveCoursesForJsonApi(school,type);
AbstractDao.getCurrentSession().getTransaction().commit();
JSONObject obj = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "GetActiveCoursesForJsonApi", new Object[]{school, type});
response.getWriter().write(obj.toString());
}
else if(service.equals("getCourse") && request.getParameter("code") != null)
{
String code = request.getParameter("code");
 
 
AbstractDao.getCurrentSession().beginTransaction();
JSONObject obj = new CoursesService().getCourseDetailForJsonApi(code);
AbstractDao.getCurrentSession().getTransaction().commit();
JSONObject obj = (JSONObject) sm.execute(RequestUtils.getRequester(request, response), "GetCourseDetailForJsonApi", new Object[]{code});
response.getWriter().write(obj.toString());
}
else if(service.equals("getStudiesPlanXml") && request.getParameter("code") != null)
{
String code = request.getParameter("code");
String renew = request.getParameter("renew");
response.setContentType("application/xml");
response.setCharacterEncoding("UTF-8");
AbstractDao.getCurrentSession().beginTransaction();
String xml = new CoursesService().getCourseStudiesPlanXml(code);
response.setCharacterEncoding("UTF-8");
String xml = (String) sm.execute(RequestUtils.getRequester(request, response), "GetCourseStudiesPlanXml", new Object[]{code,renew});
 
JAXBContext jc = JAXBContext.newInstance(Curso.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Curso curso = (Curso) unmarshaller.unmarshal(new StringReader(xml));
115,8 → 115,6
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(curso, response.getOutputStream());
//SETTING XML in COURSE STUDIES PLAN
AbstractDao.getCurrentSession().getTransaction().commit();
 
}
else if(service.equals("syncSystemPlans") && request.getParameter("systemUrl") != null && request.getParameter("setActive") != null)
{
127,9 → 125,7
String systemUrl = request.getParameter("systemUrl");
boolean setActive = Boolean.parseBoolean(request.getParameter("setActive"));
response.setContentType("application/xml");
AbstractDao.getCurrentSession().beginTransaction();
String log = new CoursesService().sincronizeCoursesStudiesPlans(systemUrl,setActive);
AbstractDao.getCurrentSession().getTransaction().commit();
String log = (String) sm.execute(RequestUtils.getRequester(request, response), "SincronizeCoursesStudiesPlans", new Object[]{systemUrl,setActive});
response.getWriter().write("<response><status>OK</status><log>" + log + "</log></response>");
}
else