projects= (InfoSiteProjects) gestor.executar(userView, "ReadExecutionCourseProjects", argsProjects);
projects= (InfoSiteProjects) gestor.executar(userView, "teacher.ReadExecutionCourseProjects", argsProjects); System.out.println("Tenho estes projectos:" + projects);
	public ActionForward readStudents(		ActionMapping mapping,		ActionForm form,		HttpServletRequest request,		HttpServletResponse response)		throws FenixActionException	{		HttpSession session= request.getSession();		Integer objectCode= null;        Integer shiftID=null;        try        {            shiftID = new Integer((String) request.getParameter("shiftCode"));        }        catch(NumberFormatException ex)        {            //ok, we don't want to view a shift's student list        }		String objectCodeString= request.getParameter("objectCode");		if (objectCodeString == null)		{			objectCodeString= (String) request.getAttribute("objectCode");		}		objectCode= new Integer(objectCodeString);		Integer scopeCode= null;		String scopeCodeString= request.getParameter("scopeCode");		if (scopeCodeString == null)		{			scopeCodeString= (String) request.getAttribute("scopeCode");		}		if (scopeCodeString != null)		{			scopeCode= new Integer(scopeCodeString);		}		UserView userView= (UserView) session.getAttribute("UserView");		Object args[]= { objectCode, scopeCode };		Object argsProjects[]= { objectCode };		Object argsInfos[]= { objectCode };        Object argsReadShifts[] = {objectCode};		GestorServicos gestor= GestorServicos.manager();		TeacherAdministrationSiteView siteView= null;		InfoSiteProjects projects= null;		List infosGroups= null;		List attendacies= null;        List shiftStudents = null;        InfoExecutionCourseOccupancy shifts = null;		try		{			siteView=				(TeacherAdministrationSiteView) gestor.executar(userView, "ReadStudentsByCurricularCourse", args);			projects= (InfoSiteProjects) gestor.executar(userView, "ReadExecutionCourseProjects", argsProjects);			infosGroups=				(List) gestor.executar(userView, "teacher.GetProjectsGroupsByExecutionCourseID", argsInfos);			InfoSiteStudents infoSiteStudents= (InfoSiteStudents) siteView.getComponent();            shifts = (InfoExecutionCourseOccupancy) gestor.executar(userView, "ReadShiftsByExecutionCourseID", argsReadShifts);            if (shiftID != null)            {                //the objectCode is needed by the filter...doing this is awfull !!!                //please read http://www.dcc.unicamp.br/~oliva/fun/prog/resign-patterns                Object[] argsReadShiftStudents = {objectCode,shiftID};                shiftStudents=                (List) gestor.executar(userView, "teacher.ReadStudentsByShiftID", argsReadShiftStudents);                infoSiteStudents.setStudents(shiftStudents);                         }			Collections.sort(infoSiteStudents.getStudents(), new BeanComparator("number"));			Object[] argsAttendacies= { objectCode, infoSiteStudents.getStudents()};			attendacies= (List) gestor.executar(userView, "teacher.GetAttendaciesByStudentList", argsAttendacies);            		}		catch (FenixServiceException e)		{			throw new FenixActionException(e);		}        request.setAttribute("shifts",shifts);		request.setAttribute("siteView", siteView);		request.setAttribute("infosGroups", infosGroups);		request.setAttribute("objectCode", objectCode);		if (projects == null || projects.getInfoGroupPropertiesList() == null) 		{			request.setAttribute("projects", new ArrayList());		}else 		{			request.setAttribute("projects", projects.getInfoGroupPropertiesList());					}		request.setAttribute("attendacies", attendacies);		return mapping.findForward("success");	}