package no.java.incogito.domain; import fj.F; import fj.data.List; import fj.data.Option; import fj.data.TreeMap; import no.java.incogito.domain.UserSessionAssociation.InterestLevel; /** * @author <a href="mailto:trygve.laugstol@arktekk.no">Trygve Laugstøl</a> * @version $Id$ */ public class Schedule { public final Event event; public final List<Session> sessions; public final TreeMap<SessionId, UserSessionAssociation> sessionAssociations; public Schedule(Event event, List<Session> sessions, TreeMap<SessionId, UserSessionAssociation> sessionAssociations) { this.event = event; this.sessions = sessions; this.sessionAssociations = sessionAssociations; } public List<Session> getAttendingSessions() { return sessions.filter(new F<Session, Boolean>() { public Boolean f(final Session session) { Option<UserSessionAssociation> option = sessionAssociations.get(session.id); return option.isSome() && option.some().interestLevel.equals(InterestLevel.ATTEND); } }); } }