package pt.estgp.estgweb.web.controllers.courses;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.courses.xsd.Curso;
import pt.estgp.estgweb.services.courses.xsd.UnidadeImpl;
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses;
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.form.courses.CourseForm;
import pt.estgp.estgweb.web.form.courses.CourseStudiesPlansAdminForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Jorge Machado
* @author Fabio Velez
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class CoursesController
extends CourseUnitsController
{
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(CoursesController.
class);
public ActionForward startNew
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
CourseForm cF =
(CourseForm
) form
;
CourseView cV = cF.
getCourseView();
request.
setAttribute("CourseView",cV
);
cF.
setCourseView(cV
);
return mapping.
findForward("submit");
}
private void loadOnlyCourseAndPlans
(CourseForm cF, HttpServletRequest request, HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
load
(cF,request,response,
false,
true);
}
private void load
(CourseForm cF, HttpServletRequest request, HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
load
(cF,request,response,
true,
true);
}
private void load
(CourseForm cF, HttpServletRequest request, HttpServletResponse response,
boolean loadUnits,
boolean loadStudiesPlans
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
1.5.0/docs/api/java/lang/String.html">String code = cF.
getCourseView().
getCode();
long id = cF.
getCourseView().
getId();
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"serializable"};
5+0%2Fdocs%2Fapi+Object">Object[] args
;
1.5.0/docs/api/java/lang/String.html">String serviceName
;
if(code
!=
null)
{
args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{code,loadUnits
};
if(loadStudiesPlans
)
serviceName =
"LoadCourseByCodeAndStudiesPlans";
else
serviceName =
"LoadCourseByCode";
}
else
{
args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{id,loadUnits
};
if(loadStudiesPlans
)
serviceName =
"LoadCourseAndStudiesPlans";
else
serviceName =
"LoadCourse";
}
CourseView cV =
(CourseView
) sm.
execute(RequestUtils.
getRequester(request, response
), serviceName, args, names
);
request.
setAttribute("CourseView",cV
);
cF.
setCourseView(cV
);
}
private void loadForPublic
(CourseForm cF, HttpServletRequest request, HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
load
(cF,request,response,
false,
false);
/* String code = cF.getCourseView().getCode();
long id = cF.getCourseView().getId();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args;
String serviceName;
if(code != null)
{
args = new Object[]{code,false};
serviceName = "LoadCourseByCode";
}
else
{
args = new Object[]{id,false};
serviceName = "LoadCourse";
}
CourseView cV = (CourseView) sm.execute(RequestUtils.getRequester(request, response), serviceName, args, names);
request.setAttribute("CourseView",cV);
cF.setCourseView(cV);*/
}
public ActionForward loadPlan
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
load
((CourseForm
) form,request,response
);
return mapping.
findForward("loadPlan");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward load
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
load
((CourseForm
) form,request,response
);
return mapping.
findForward("load");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward loadSeparators
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
loadForPublic
((CourseForm
) form,request,response
);
return mapping.
findForward("loadSeparators");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward loadMenu
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
load
((CourseForm
) form,request,response
);
return mapping.
findForward("loadMenu");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward edit
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
load
((CourseForm
) form,request,response
);
return mapping.
findForward("submit");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward editAdmin
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
loadOnlyCourseAndPlans
((CourseForm
) form, request, response
);
return mapping.
findForward("submit");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward submit
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseForm cF =
(CourseForm
) form
;
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"object"};
5+0%2Fdocs%2Fapi+Object">Object[] args
;
if(cF.
getStudiesPlan() ==
null || cF.
getStudiesPlan().
getFileSize() <= 0
)
args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{cF.
getCourseView(),
null,
null,0,
null};
else //ring name, int size, String contentType, String extensio
args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{cF.
getCourseView(),cF.
getStudiesPlan().
getInputStream(),cF.
getStudiesPlan().
getFileName(),cF.
getStudiesPlan().
getFileSize(),cF.
getStudiesPlan().
getContentType()};
long id = cF.
getCourseView().
getId();
CourseView cV =
(CourseView
) sm.
execute(RequestUtils.
getRequester(request, response
),
"SubmitCourse", args, names
);
request.
setAttribute("CourseView",cV
);
if(cV.
getHtmlResult() !=
null)
{
return mapping.
findForward("submit");
}
cF.
setCourseView(cV
);
if(id
> 0)
addMessage
(request,
"course.updated.success",
"" + cV.
getCode());
else
addMessage
(request,
"course.created.success",
"" + cV.
getCode());
return mapping.
getInputForward();
}
catch (AlreadyExistsException e
)
{
addErrorWithKeys
(request,
"course.exists",e.
getMessage());
try
{
load
((CourseForm
) form,request,response
);
return mapping.
findForward("submit");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable throwable
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward loadCoursesPrograms
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseForm cF =
(CourseForm
) form
;
1.5.0/docs/api/java/lang/String.html">String importYear = cF.
getImportYear();
long courseId = cF.
getCourseId();
if(courseId
<=
0)
{
addError
(request,
"courses.fill.course");
return mapping.
findForward("load.courses.programs");
}
1.5.0/docs/api/java/lang/String.html">String semestre = cF.
getSemestre();
1.5.0/docs/api/java/lang/String.html">String area = cF.
getArea();
DirectedCoordinatedUnitsService.
TeachersSituationEnum teachersSituationEnum = cF.
getTeacherSituationEnum();
1.5.0/docs/api/java/lang/String.html">String institutionCode = cF.
getInstitutionCode();
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"importYear",
"courseId",
"semestre",
"area",
"teachersSituationEnum",
"institutionCode"};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{importYear,courseId,semestre,area,teachersSituationEnum,institutionCode
};
DirectedCoordinatedCourses directedCoordinatedCourses =
(DirectedCoordinatedCourses
) sm.
execute(RequestUtils.
getRequester(request, response
),
"LoadCoursesProgramsForServices", args, names
);
cF.
setDirectedCoordinatedCourses(directedCoordinatedCourses
);
cF.
setArea(directedCoordinatedCourses.
getArea());
cF.
setCourseId(directedCoordinatedCourses.
getCourseId());
return mapping.
findForward("load.courses.programs");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward loadDirectedCoordininatedCourses
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseForm cF =
(CourseForm
) form
;
1.5.0/docs/api/java/lang/String.html">String importYear = cF.
getImportYear();
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"importYear"};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 1.5.0/docs/api/java/lang/String.html">String[]{importYear
};
DirectedCoordinatedCourses directedCoordinatedCourses =
(DirectedCoordinatedCourses
) sm.
execute(RequestUtils.
getRequester(request, response
),
"LoadDirectedCoordinatedCoursesForUserInSession", args, names
);
cF.
setDirectedCoordinatedCourses(directedCoordinatedCourses
);
return mapping.
findForward("load.directed.coordinated.courses");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward updateDirectedCoordininatedCourses
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseForm cF =
(CourseForm
) form
;
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"directedCoordinatedCourses"};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{cF.
getDirectedCoordinatedCourses()};
DirectedCoordinatedCourses directedCoordinatedCourses =
(DirectedCoordinatedCourses
) sm.
execute(RequestUtils.
getRequester(request, response
),
"UpdateDirectedCoordinatedCoursesForUserInSession", args, names
);
cF.
setDirectedCoordinatedCourses(directedCoordinatedCourses
);
addMessage
(request,
"course.directed.coordinated.courses.updated.success",
""+directedCoordinatedCourses.
getUpdated());
return mapping.
findForward("confirm.courses.programs");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
/**
* StudiesPlans Controller Functions
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws ServletException
*/
public ActionForward addNewVersion
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseStudiesPlansAdminForm frm =
(CourseStudiesPlansAdminForm
) form
;
long courseId = frm.
getCourseId();
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{courseId,frm.
getCourseStudiesPlan()};
sm.
execute(RequestUtils.
getRequester(request, response
),
"AddNewStudiesPlan", args, names
);
addMessage
(request,
"course.studies.plan.added");
return mapping.
findForward("loadstudyplans");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward savePlano
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseStudiesPlansAdminForm frm =
(CourseStudiesPlansAdminForm
) form
;
long courseId = frm.
getCourseId();
IServiceManager sm = ServiceManager.
getInstance();
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{courseId,frm.
getCourseStudiesPlan().
getId(),frm.
getPlanoEstudos(),frm.
getCourseStudiesPlan()};
sm.
execute(RequestUtils.
getRequester(request, response
),
"SavePlanoEstudos", args, names
);
addMessage
(request,
"course.studies.plan.saved");
request.
setAttribute("courseId",courseId
);
return mapping.
findForward("adminStudyPlans");
}
catch (FilterChainFailedException e
)
{
return mapping.
findForward("error401");
}
catch (NotFoundException e
)
{
return mapping.
findForward("error404");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward addUnidadePerfil
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseStudiesPlansAdminForm frm =
(CourseStudiesPlansAdminForm
) form
;
1.5.0/docs/api/java/lang/String.html">String perfilId = frm.
getPerfilId();
for(Curso.
Semestre semestre: frm.
getPlanoEstudos().
getSemestre()){
for(Curso.
Semestre.
Perfil perfil: semestre.
getPerfil())
{
if(perfil.
getPerfilId().
equals(perfilId
))
{
perfil.
getUnidade().
add(new UnidadeImpl
());
break;
}
}
}
return mapping.
findForward("editStudyPlan");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
public ActionForward addUnidadeSemestre
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseStudiesPlansAdminForm frm =
(CourseStudiesPlansAdminForm
) form
;
1.5.0/docs/api/java/lang/String.html">String semestreId = frm.
getSemestreId();
for(Curso.
Semestre semestre: frm.
getPlanoEstudos().
getSemestre())
{
if(semestre.
getSemestreId().
equals(semestreId
))
{
semestre.
getUnidade().
add(new UnidadeImpl
());
break;
}
}
return mapping.
findForward("editStudyPlan");
}
catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e
)
{
logger.
error(e, e
);
return mapping.
findForward("error500");
}
}
}