public List<DegreeCourseStatisticsDTO> run( CompetenceCourse competenceCourse, ExecutionSemester executionSemester) throws FenixServiceException { Map<Degree, List<CurricularCourse>> groupedCourses = competenceCourse.getAssociatedCurricularCoursesGroupedByDegree(); List<DegreeCourseStatisticsDTO> results = new ArrayList<DegreeCourseStatisticsDTO>(); for (Degree degree : groupedCourses.keySet()) { List<Enrolment> enrollments = new ArrayList<Enrolment>(); List<CurricularCourse> curricularCourses = groupedCourses.get(degree); for (CurricularCourse curricularCourse : curricularCourses) { enrollments.addAll(curricularCourse.getActiveEnrollments(executionSemester)); } DegreeCourseStatisticsDTO degreeCourseStatistics = new DegreeCourseStatisticsDTO(); degreeCourseStatistics.setExternalId(degree.getExternalId()); degreeCourseStatistics.setName(degree.getSigla()); createCourseStatistics(degreeCourseStatistics, enrollments); results.add(degreeCourseStatistics); } return results; }
@Override public Set<User> getMembers() { Set<User> users = new HashSet<User>(); Set<Degree> degrees = new HashSet<>(); for (CompetenceCourse competenceCourse : executionCourse.getCompetenceCourses()) { for (CurricularCourse curricularCourse : competenceCourse.getAssociatedCurricularCoursesSet()) { degrees.add(curricularCourse.getDegree()); } } // students of any degree sharing the same competence of the given execution course for (Degree degree : degrees) { for (Registration registration : degree.getActiveRegistrations()) { User user = registration.getPerson().getUser(); if (user != null) { users.add(user); } } } // students attending the given execution course (most will be in the previous case but some may // not) for (Attends attends : executionCourse.getAttendsSet()) { User user = attends.getRegistration().getPerson().getUser(); if (user != null) { users.add(user); } } return users; }
private static Set<User> getCoordinators(Degree degree) { Set<User> users = new HashSet<>(); for (Coordinator coordinator : degree.getCurrentCoordinators()) { User user = coordinator.getPerson().getUser(); if (user != null) { users.add(user); } } return users; }
/** * Checks if person belongs to curricular course. The unit path format should be: * IST{.<SubUnitAcronym>}.<DegreeAcronym>.<CurricularCourseAcronym> * * <p>Accepted roles: STUDENT and TEACHER * * @param person * @param groupCheckQuery * @return * @throws NonExistingServiceException * @throws ExcepcaoPersistencia */ private static Boolean checkExecutionCourseGroup(Person person, GroupCheckQuery groupCheckQuery) throws NonExistingServiceException { String[] unitAcronyms = groupCheckQuery.unitFullPath.split("\\."); if (!groupCheckQuery.roleType.equals("TEACHER") && !groupCheckQuery.roleType.equals("STUDENT")) { throw new NonExistingServiceException(); } Degree degree = getDegree(unitAcronyms); for (DegreeCurricularPlan degreeCurricularPlan : degree.getActiveDegreeCurricularPlans()) { ExecutionSemester executionSemester = getExecutionPeriod(groupCheckQuery.year, groupCheckQuery.semester); CurricularCourse curricularCourse = degreeCurricularPlan.getCurricularCourseByAcronym(unitAcronyms[4]); if (curricularCourse != null) { List<ExecutionCourse> executionCourses = curricularCourse.getExecutionCoursesByExecutionPeriod(executionSemester); for (ExecutionCourse executionCourse : executionCourses) { Group group; if (groupCheckQuery.roleType.equals("TEACHER")) { group = TeacherGroup.get(executionCourse); } else { group = StudentGroup.get(executionCourse); } if (group.isMember(person.getUser())) { return true; } } } } return false; }
@Override public Collection<ExecutionDegree> getSearchResults( Map<String, String> argsMap, String value, int maxCount) { final String executionYearOid = argsMap.get("executionYearOid"); final ExecutionYear executionYear = FenixFramework.getDomainObject(executionYearOid); final String searchValue = StringNormalizer.normalize(value); final List<ExecutionDegree> result = new ArrayList<ExecutionDegree>(); for (final ExecutionDegree executionDegree : executionYear.getExecutionDegreesSet()) { final DegreeCurricularPlan degreeCurricularPlan = executionDegree.getDegreeCurricularPlan(); final Degree degree = degreeCurricularPlan.getDegree(); if (match(searchValue, degreeCurricularPlan.getName()) || match(searchValue, degree.getNameI18N(executionYear).getContent()) || match(searchValue, degree.getSigla())) { result.add(executionDegree); if (result.size() >= maxCount) { break; } } } return result; }
@Override public Set<User> getMembers() { Set<User> users = new HashSet<>(); if (degreeType != null) { ExecutionYear year = ExecutionYear.readCurrentExecutionYear(); for (final ExecutionDegree executionDegree : year.getExecutionDegreesSet()) { final DegreeCurricularPlan degreeCurricularPlan = executionDegree.getDegreeCurricularPlan(); final Degree degree = degreeCurricularPlan.getDegree(); if (degree.getDegreeType().equals(degreeType)) { for (final Coordinator coordinator : executionDegree.getCoordinatorsListSet()) { User user = coordinator.getPerson().getUser(); if (user != null) { users.add(user); } } } } // for (Degree degree : Degree.readAllByDegreeType(degreeType)) { // users.addAll(getCoordinators(degree)); // } } if (degree != null) { users.addAll(getCoordinators(degree)); } if (degree == null && degreeType == null) { final ExecutionYear executionYear = ExecutionYear.readCurrentExecutionYear(); for (final ExecutionDegree executionDegree : executionYear.getExecutionDegreesSet()) { for (final Coordinator coordinator : executionDegree.getCoordinatorsListSet()) { User user = coordinator.getPerson().getUser(); if (user != null) { users.add(user); } } } } return users; }
@Override public String[] getPresentationNameKeyArgs() { List<String> parts = new ArrayList<>(); String connector = ""; if (degreeType != null) { parts.add(degreeType.getName().getContent()); } if (degree != null) { parts.add(degree.getPresentationName()); } if (!parts.isEmpty()) { connector = BundleUtil.getString(Bundle.GROUP, "label.name.connector.default"); } return new String[] {connector, Joiner.on(", ").join(parts)}; }
public ActionForward warmUpCacheForEnrolmentPeriodStart( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final ExecutionSemester ces = ExecutionSemester.readActualExecutionSemester(); final ExecutionSemester pes = ces == null ? null : ces.getPreviousExecutionPeriod(); if (ces != null && pes != null) { long s = System.currentTimeMillis(); for (final ExecutionCourse executionCourse : ces.getAssociatedExecutionCoursesSet()) { executionCourse.getName(); for (final CourseLoad courseLoad : executionCourse.getCourseLoadsSet()) { courseLoad.getType(); for (final Shift shift : courseLoad.getShiftsSet()) { shift.getNome(); for (final SchoolClass schoolClass : shift.getAssociatedClassesSet()) { schoolClass.getNome(); final ExecutionDegree executionDegree = schoolClass.getExecutionDegree(); final DegreeCurricularPlan degreeCurricularPlan = executionDegree.getDegreeCurricularPlan(); degreeCurricularPlan.getName(); final Degree degree = degreeCurricularPlan.getDegree(); degree.getDegreeType(); final RootCourseGroup root = degreeCurricularPlan.getRoot(); load(root); } for (final Lesson lesson : shift.getAssociatedLessonsSet()) { lesson.getBeginHourMinuteSecond(); for (OccupationPeriod period = lesson.getPeriod(); period != null; period = period.getNextPeriod()) { period.getStartDate(); } for (final LessonInstance lessonInstance : lesson.getLessonInstancesSet()) { lessonInstance.getBeginDateTime(); } } } } } long e = System.currentTimeMillis(); logger.info( "Warming up cache for enrolment period. Load of current semester information took {}ms.", e - s); s = System.currentTimeMillis(); // for (final RoomClassification roomClassification : // rootDomainObject.getRoomClassificationSet()) { // for (final RoomInformation roomInformation : // roomClassification.getRoomInformationsSet()) { // roomInformation.getDescription(); // final Room room = roomInformation.getRoom(); // room.getNormalCapacity(); // } // } e = System.currentTimeMillis(); logger.info("Warming up cache for enrolment period. Load of room listing took {}ms.", e - s); final Set<Student> students = new HashSet<Student>(); s = System.currentTimeMillis(); for (final Enrolment enrolment : pes.getEnrolmentsSet()) { students.add(enrolment.getStudent()); } e = System.currentTimeMillis(); logger.info("Warming up cache for enrolment period. Search for students took {}ms.", e - s); s = System.currentTimeMillis(); for (final Student student : students) { student.getNumber(); for (final Registration registration : student.getRegistrationsSet()) { registration.getNumber(); for (final StudentCurricularPlan studentCurricularPlan : registration.getStudentCurricularPlansSet()) { final RootCurriculumGroup root = studentCurricularPlan.getRoot(); load(root); } } } e = System.currentTimeMillis(); logger.info( "Warming up cache for enrolment period. Load of student curriculum took {}ms.", e - s); } return monitor(mapping, form, request, response); }
public Comparable<?> getKey(org.fenixedu.academic.domain.Degree value) { return value.getOid(); }