/* * 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.lecture; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.ImmutableSortedSet.Builder; import org.dlect.model.Stream; import org.dlect.model.Subject; import org.dlect.model.formatter.DownloadType; /** * * @author lee */ public class UpdatingLectureStateUpdateHandler extends LectureStateUpdateHandler { private ImmutableSortedSet<Stream> enabledStreams; private ImmutableSet<DownloadType> enabledDownloadTypes; public UpdatingLectureStateUpdateHandler(Subject d) { super(d); } @Override protected void initImpl() { Builder<Stream> streamsBuilder = ImmutableSortedSet.naturalOrder(); Builder<DownloadType> dlTypeBuilder = ImmutableSortedSet.naturalOrder(); for (Stream stream : getSubject().getStreams()) { if (isStreamEnabled(stream)) { streamsBuilder.add(stream); } } for (DownloadType dt : DownloadType.values()) { if (isDownloadTypeEnabled(dt)) { dlTypeBuilder.add(dt); } } this.enabledStreams = streamsBuilder.build(); this.enabledDownloadTypes = dlTypeBuilder.build(); } @Override public void updateLecturesImpl() { for (Stream stream : getSubject().getStreams()) { if (enabledStreams.contains(stream)) { setStreamEnabled(stream, true); } } for (DownloadType dt : enabledDownloadTypes) { setDownloadTypeEnabled(dt, true); } } }