package pt.estgp.estgweb.web.controllers.courseunits;
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.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
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 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 CourseUnitsProgramController
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(CourseUnitsProgramController.
class);
public ActionForward validateProgram
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long id = cUF.
getCourseUnitId();
if(id
<= 0
)
id = cUF.
getCourseUnitView().
getId();
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{id
};
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"unitId"};
sm.
execute(RequestUtils.
getRequester(request, response
),
"ValidateCourseUnitProgram", args,names
);
return saveProgram
(mapping,
form,
request,
response
);
}
public ActionForward invalidateProgram
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable {
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long id = cUF.
getCourseUnitId();
if(id
<= 0
)
id = cUF.
getCourseUnitView().
getId();
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{id
};
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"unitId"};
sm.
execute(RequestUtils.
getRequester(request, response
),
"InvalidateCourseUnitProgram", args,names
);
return editProgram
(mapping,
form,
request,
response
);
}
public ActionForward editProgram
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long id = cUF.
getCourseUnitId();
if(id
<= 0
)
id = cUF.
getCourseUnitView().
getId();
CourseUnitView cV = loadCourseUnitViewAndCourse
(id,
true,
false, mapping, request, response
);
cUF.
setCourseUnitView(cV
);
request.
setAttribute("CourseUnitView", cV
);
CourseUnitProgramView cpv
;
if(cV.
getCourseUnit().
getCourseUnitProgram() ==
null)
cpv =
new CourseUnitProgramView
(new CourseUnitProgramImpl
());
else
cpv =
new CourseUnitProgramView
(cV.
getCourseUnit().
getCourseUnitProgram());
// request.setAttribute("CourseUnitProgramView", cpv);
if(cpv.
getCourseUnitProgram().
getCourseUnitProgramPart2() ==
null)
cpv.
getCourseUnitProgram().
setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl
());
cUF.
setCourseUnitProgramView(cpv
);
cUF.
setCourseUnitView(cV
);
return mapping.
findForward("edit.program");
}
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 saveProgram
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long id = cUF.
getCourseUnitView().
getId();
CourseUnitProgramView cuV = cUF.
getCourseUnitProgramView();
cuV.
setResponsableId(cUF.
getCourseUnitView().
getResponsableId());
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{cuV, id
};
1.5.0/docs/api/java/lang/String.html">String[] names =
new 1.5.0/docs/api/java/lang/String.html">String[]{"programView",
"unitId"};
sm.
execute(RequestUtils.
getRequester(request, response
),
"SaveCourseUnitProgram", args,names
);
CourseUnitView cV = loadCourseUnitView
(id,
true,
false, mapping, request, response
);
cUF.
setCourseUnitView(cV
);
request.
setAttribute("CourseUnitView", cV
);
if(request.
getParameter("json")!=
null && request.
getParameter("json").
equals("true"))
{
return mapping.
findForward("jsonOk");
}
else
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 cloneProgram
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long id = cUF.
getCourseUnitView().
getId();
long idFrom = cUF.
getCloneFromUnitId();
IServiceManager sm = ServiceManager.
getInstance();
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{idFrom, id
};
CourseUnitProgram cP =
(CourseUnitProgram
) sm.
execute(RequestUtils.
getRequester(request, response
),
"CloneCourseUnitProgram", args
);
CourseUnitView cV = loadCourseUnitViewAndCourse
(id,
true,
false, mapping, request, response
);
cUF.
setCourseUnitView(cV
);
request.
setAttribute("CourseUnitView", cV
);
CourseUnitProgramView cpv
;
if(cV.
getCourseUnit().
getCourseUnitProgram() ==
null)
cpv =
new CourseUnitProgramView
(new CourseUnitProgramImpl
());
else
cpv =
new CourseUnitProgramView
(cV.
getCourseUnit().
getCourseUnitProgram());
// request.setAttribute("CourseUnitProgramView", cpv);
if(cpv.
getCourseUnitProgram().
getCourseUnitProgramPart2() ==
null)
cpv.
getCourseUnitProgram().
setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl
());
cUF.
setCourseUnitProgramView(cpv
);
cUF.
setCourseUnitView(cV
);
return mapping.
findForward("edit.program");
}
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");
}
}
//TODO meter aqui a navegacao respectiva de adicionar teacher e ir para o programa de novo
public ActionForward addTeacher
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long teacherId = cUF.
getTeacherId();
long courseUnitId = cUF.
getCourseUnitView().
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[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{teacherId,courseUnitId
};
CourseUnitView cV =
(CourseUnitView
) sm.
execute(RequestUtils.
getRequester(request, response
),
"AddTeacherCourseUnit", args, names
);
if(cV.
isNotFound())
addError
(request,
"error.courseunit.teacher.not.found");
return editProgram
(mapping,form,request,response
);
}
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 removeTeacher
(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response
)
throws ServletException
{
try
{
CourseUnitProgramForm cUF =
(CourseUnitProgramForm
) form
;
long teacherId = cUF.
getId(); //can't come in SELECT BOX because is for choose
long courseUnitId = cUF.
getCourseUnitView().
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[]{};
5+0%2Fdocs%2Fapi+Object">Object[] args =
new 5+0%2Fdocs%2Fapi+Object">Object[]{teacherId,courseUnitId
};
sm.
execute(RequestUtils.
getRequester(request, response
),
"RemoveTeacherCourseUnit", args, names
);
return editProgram
(mapping,form,request,response
);
}
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");
}
}
}