}
protected InfoExamsMap run(InfoExecutionDegree infoExecutionDegree, List<Integer> curricularYears,
InfoExecutionPeriod infoExecutionPeriod) throws FenixServiceException {
InfoExamsMap result = new InfoExamsMap();
result.setInfoExecutionDegree(infoExecutionDegree);
result.setInfoExecutionPeriod(infoExecutionPeriod);
result.setCurricularYears(curricularYears);
ExecutionDegree executionDegree = FenixFramework.getDomainObject(infoExecutionDegree.getExternalId());
obtainExamSeasonInfo(result, infoExecutionPeriod.getSemester(), executionDegree);
// Obtain execution courses and associated information of the given
// execution degree for each curricular year specified
List<InfoExecutionCourse> infoExecutionCourses =
obtainInfoExecutionCourses(curricularYears, infoExecutionPeriod, executionDegree);
result.setExecutionCourses(infoExecutionCourses);
User user = Authenticate.getUser();
if (user == null || !user.getPerson().hasRole(RoleType.RESOURCE_ALLOCATION_MANAGER)) {
PublishedExamsMapAuthorizationFilter.execute(result);
}