/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.dlect.controller.helper.subject; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.ImmutableSortedSet.Builder; import java.util.SortedSet; import org.dlect.model.Database; import org.dlect.model.Semester; /** * * @author lee */ public class UpdatingSubjectDisplayUpdateHandler extends SubjectDisplayUpdateHandler { private final SortedSet<Semester> enabledSemesters; private final int mostRecentSemesterCode; public UpdatingSubjectDisplayUpdateHandler(Database d) { super(d); Builder<Semester> builder = ImmutableSortedSet.naturalOrder(); int sem = Integer.MIN_VALUE; for (Semester semester : d.getSemesters()) { if (semester.getNum() > sem) { sem = semester.getNum(); } if (isSemesterEnabled(semester)) { builder.add(semester); } } this.enabledSemesters = builder.build(); this.mostRecentSemesterCode = sem; } @Override public void updateSubjects() { ImmutableSortedSet<Semester> semesters = getDatabase().getSemesters(); if (semesters.isEmpty()) { return; } Semester last = semesters.last(); if (last.getNum() > mostRecentSemesterCode) { setSemesterEnabled(last, true); } for (Semester s : semesters) { if (enabledSemesters.contains(s)) { setSemesterEnabled(s, true); } } } }