protected List<SelectItem> readExecutionPeriodItems() {

    final ExecutionSemester minimumExecutionPeriod = getMinimumExecutionPeriod();
    final List<ExecutionSemester> notClosedExecutionPeriods =
        ExecutionSemester.readNotClosedExecutionPeriods();
    Collections.sort(notClosedExecutionPeriods);

    final List<SelectItem> result = new ArrayList<SelectItem>();
    for (final ExecutionSemester notClosedExecutionPeriod : notClosedExecutionPeriods) {
      if (minimumExecutionPeriod == null
          || notClosedExecutionPeriod.isAfterOrEquals(minimumExecutionPeriod)) {
        result.add(
            new SelectItem(
                notClosedExecutionPeriod.getExternalId(),
                notClosedExecutionPeriod.getName()
                    + " "
                    + notClosedExecutionPeriod.getExecutionYear().getYear()));
      }
    }
    return result;
  }