private void prepareInformationToList(final ActionForm form, final HttpServletRequest request) {
DynaActionForm dynaActionForm = (DynaActionForm) form;
VariantBean bean = getRenderedObject();
final AcademicInterval academicInterval = (AcademicInterval) bean.getObject();
request.setAttribute("academicInterval", academicInterval);
final Boolean selectAllCurricularYears = (Boolean) dynaActionForm.get("selectAllCurricularYears");
final String[] selectedCurricularYears = (String[]) dynaActionForm.get("selectedCurricularYears");
final String executionDegreeID = (String) dynaActionForm.get("executionDegreeID");
final Set<Integer> years = new HashSet<Integer>();
for (final String yearString : selectedCurricularYears) {
years.add(Integer.valueOf(yearString));
}
final Map<ExecutionDegree, Map<Integer, Set<ExecutionCourse>>> executionCoursesByCurricularYearByExecutionDegree =
new TreeMap<ExecutionDegree, Map<Integer, Set<ExecutionCourse>>>(new Comparator<ExecutionDegree>() {
@Override
public int compare(ExecutionDegree executionDegree1, ExecutionDegree executionDegree2) {
final Degree degree1 = executionDegree1.getDegreeCurricularPlan().getDegree();
final Degree degree2 = executionDegree2.getDegreeCurricularPlan().getDegree();
return (degree1.getDegreeType() == degree2.getDegreeType()) ? degree1.getNome().compareTo(
degree2.getNome()) : degree1.getDegreeType().compareTo(degree2.getDegreeType());
}
});
for (final ExecutionDegree executionDegree : ExecutionDegree.filterByAcademicInterval(academicInterval)) {
if (executionDegreeID == null || executionDegreeID.length() == 0
|| executionDegreeID.equals(executionDegree.getExternalId().toString())) {
final Map<Integer, Set<ExecutionCourse>> executionCoursesByCurricularYear =
new TreeMap<Integer, Set<ExecutionCourse>>(new Comparator<Integer>() {
@Override
public int compare(final Integer curricularYear1, final Integer curricularYear2) {
return curricularYear1.compareTo(curricularYear2);
}
});
executionCoursesByCurricularYearByExecutionDegree.put(executionDegree, executionCoursesByCurricularYear);
for (final CurricularCourse curricularCourse : executionDegree.getDegreeCurricularPlan()
.getCurricularCoursesSet()) {
for (final DegreeModuleScope degreeModuleScope : curricularCourse.getDegreeModuleScopes()) {
if (degreeModuleScope.isActiveForAcademicInterval(academicInterval)) {
final Integer curricularSemester = degreeModuleScope.getCurricularSemester();
final Integer curricularYear = degreeModuleScope.getCurricularYear();
if (curricularSemester.intValue() == AcademicInterval
.getCardinalityOfAcademicInterval(academicInterval)
&& (selectAllCurricularYears != null && selectAllCurricularYears.booleanValue())
|| years.contains(curricularYear)) {
final Set<ExecutionCourse> executionCourses;
if (!executionCoursesByCurricularYear.containsKey(curricularYear)) {
executionCourses = new TreeSet<ExecutionCourse>(new Comparator<ExecutionCourse>() {
@Override
public int compare(final ExecutionCourse executionCourse1,
final ExecutionCourse executionCourse2) {
return executionCourse1.getNome().compareTo(executionCourse2.getNome());
}
});
executionCoursesByCurricularYear.put(curricularYear, executionCourses);
} else {
executionCourses = executionCoursesByCurricularYear.get(curricularYear);
}
for (final ExecutionCourse executionCourse : curricularCourse.getAssociatedExecutionCoursesSet()) {
if (academicInterval.equals(executionCourse.getAcademicInterval())) {
executionCourses.add(executionCourse);
}
}
}
}