package no.java.incogito.domain; import fj.F; import fj.pre.Equal; import fj.data.List; import fj.data.Option; import no.java.incogito.Enums; import org.joda.time.Interval; /** * @author <a href="mailto:trygve.laugstol@arktekk.no">Trygve Laugstøl</a> * @version $Id$ */ public class Session { public enum Format { Presentation, Quickie, BoF; public static Equal<Format> equal = Enums.<Format>equal(); public static F<String, Option<Format>> valueOf_ = Enums.<Format>valueOf().f(Format.class); public static F<Format, String> toString = Enums.toString_(); } public final SessionId id; public final Format format; public final String title; public final Option<WikiString> body; public final Option<Level> level; public final Option<Interval> timeslot; public final Option<String> room; public final List<Label> labels; public final List<Speaker> speakers; public final List<Comment> comments; public Session(SessionId id, Format format, String title, Option<WikiString> body, Option<Level> level, Option<Interval> timeslot, Option<String> room, List<Label> labels, List<Speaker> speakers, List<Comment> comments) { this.id = id; this.format = format; this.title = title; this.body = body; this.level = level; this.timeslot = timeslot; this.room = room; this.labels = labels; this.speakers = speakers; this.comments = comments; } public Session title(String title) { return new Session(id, format, title, body, level, timeslot, room, labels, speakers, comments); } public Session timeslot(Option<Interval> timeslot) { return new Session(id, format, title, body, level, timeslot, room, labels, speakers, comments); } public Session room(Option<String> room) { return new Session(id, format, title, body, level, timeslot, room, labels, speakers, comments); } }