Package nl.vpro.domain.media
Class Schedule
- java.lang.Object
-
- nl.vpro.domain.media.Schedule
-
- All Implemented Interfaces:
Serializable
,Iterable<ScheduleEvent>
,Predicate<ScheduleEvent>
public class Schedule extends Object implements Serializable, Iterable<ScheduleEvent>, Predicate<ScheduleEvent>
Representation of a timeasRange()
containing a collections ofScheduleEvent
s, for a certainChannel
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Schedule.Builder
-
Field Summary
Fields Modifier and Type Field Description protected Channel
channel
protected boolean
filtered
protected Net
net
protected Integer
releaseVersion
protected Boolean
reruns
protected SortedSet<ScheduleEvent>
scheduleEvents
protected Instant
start
static LocalTime
START_OF_SCHEDULE
AScheduleEvent
can basically be associated with aLocalDate
.static Duration
START_OF_SCHEDULE_SLACK
Edge cases like 5:59 are logically considered part of the previous day, but the bulk of the schedule event will be in the current day, so we allow for a few minutes slack.protected Instant
stop
static ZoneId
ZONE_ID
The time zone most relevant for NPO, i.e.
-
Constructor Summary
Constructors Constructor Description Schedule()
Schedule(Instant start, Instant stop)
Schedule(Channel channel, Instant start)
Schedule(Channel channel, Instant start, Instant stop)
Schedule(Channel channel, Instant start, Instant stop, Collection<ScheduleEvent> scheduleEvents)
Schedule(Channel channel, Instant start, Collection<ScheduleEvent> scheduleEvents)
Schedule(Channel channel, LocalDate date)
Schedule(Channel channel, LocalDate start, Collection<ScheduleEvent> scheduleEvents)
Schedule(Net net, Instant start, Instant stop)
Schedule(Net net, Instant start, Instant stop, Collection<ScheduleEvent> scheduleEvents)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addScheduleEvent(ScheduleEvent scheduleEvent)
void
addScheduleEventsFromMedia(Collection<? extends Program> mediaObjects)
void
addScheduleEventsFromMedia(Program mediaObject)
void
addScheduleEventsFromMedia(Program... mediaObjects)
com.google.common.collect.Range<LocalDateTime>
asLocalRange()
Returns the with this Schedule associatedgetStart()
andgetStop()
instances as aRange
ofZonedDateTime
's.com.google.common.collect.Range<Instant>
asRange()
static @NonNull Schedule.Builder
builder()
boolean
equals(Object o)
Optional<ScheduleEvent>
findScheduleEvent(ScheduleEvent event)
Finds in the current schedule the excact event (by database id)Channel
getChannel()
LocalDate
getGuideDate()
Net
getNet()
Integer
getReleaseVersion()
Boolean
getReruns()
SortedSet<ScheduleEvent>
getScheduleEvents()
Instant
getStart()
Instant
getStop()
static LocalDate
guideDay()
Returns the current value of 'today' as aLocalDate
, but considersSTART_OF_SCHEDULE
andSTART_OF_SCHEDULE_SLACK
static @PolyNull LocalDate
guideDay(@PolyNull Instant instant)
Returns the current value of 'today' as aLocalDate
, but considersSTART_OF_SCHEDULE
andSTART_OF_SCHEDULE_SLACK
static LocalDate
guideDay(LocalDateTime datetime)
int
hashCode()
boolean
isFiltered()
@NonNull Iterator<ScheduleEvent>
iterator()
static boolean
localTimeBelongsToPreviousDay(@NonNull LocalTime localTime)
Whether a certainScheduleEvent
, would be considered part of the previous day.static Instant
of(Instant instant, LocalDateTime localDateTime, LocalDate localDate)
boolean
removeScheduleEvent(ScheduleEvent scheduleEvent)
void
setChannel(Channel value)
void
setFiltered(boolean filtered)
void
setGuideDate(LocalDate start)
void
setNet(Net net)
void
setReruns(Boolean reruns)
void
setStart(Instant start)
void
setStart(LocalDateTime start)
void
setStop(Instant stop)
void
setStop(LocalDateTime stop)
boolean
test(ScheduleEvent event)
static Instant
toInstant(LocalDateTime time)
protected static Instant
toInstant(Date time)
Deprecated.Dont useDate
String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
ZONE_ID
public static final ZoneId ZONE_ID
The time zone most relevant for NPO, i.e. the timezone in the Netherlands.
-
START_OF_SCHEDULE
public static final LocalTime START_OF_SCHEDULE
AScheduleEvent
can basically be associated with aLocalDate
. If there is no explicit value, then it can be based onScheduleEvent.getStartInstant()
and (ZONE_ID
.If the time of the day is before this, then it would be considered part of the previous day.
-
START_OF_SCHEDULE_SLACK
public static final Duration START_OF_SCHEDULE_SLACK
Edge cases like 5:59 are logically considered part of the previous day, but the bulk of the schedule event will be in the current day, so we allow for a few minutes slack.
-
scheduleEvents
protected SortedSet<ScheduleEvent> scheduleEvents
-
channel
protected Channel channel
-
net
protected Net net
-
start
protected Instant start
-
stop
protected Instant stop
-
releaseVersion
protected Integer releaseVersion
-
filtered
protected boolean filtered
-
reruns
protected Boolean reruns
-
-
Constructor Detail
-
Schedule
public Schedule()
-
Schedule
public Schedule(Channel channel, LocalDate start, Collection<ScheduleEvent> scheduleEvents)
-
Schedule
public Schedule(Channel channel, Instant start, Collection<ScheduleEvent> scheduleEvents)
-
Schedule
public Schedule(Channel channel, Instant start, Instant stop, Collection<ScheduleEvent> scheduleEvents)
-
Schedule
public Schedule(Net net, Instant start, Instant stop, Collection<ScheduleEvent> scheduleEvents)
-
-
Method Detail
-
guideDay
public static @PolyNull LocalDate guideDay(@PolyNull Instant instant)
Returns the current value of 'today' as aLocalDate
, but considersSTART_OF_SCHEDULE
andSTART_OF_SCHEDULE_SLACK
-
guideDay
public static LocalDate guideDay(LocalDateTime datetime)
- Since:
- 5.11
-
guideDay
public static LocalDate guideDay()
Returns the current value of 'today' as aLocalDate
, but considersSTART_OF_SCHEDULE
andSTART_OF_SCHEDULE_SLACK
- Since:
- 7.2
-
localTimeBelongsToPreviousDay
public static boolean localTimeBelongsToPreviousDay(@NonNull LocalTime localTime)
Whether a certainScheduleEvent
, would be considered part of the previous day. This is a utility function used in several other utilities- Since:
- 5.11
-
toInstant
public static Instant toInstant(LocalDateTime time)
-
toInstant
@Deprecated protected static Instant toInstant(Date time)
Deprecated.Dont useDate
-
of
public static Instant of(Instant instant, LocalDateTime localDateTime, LocalDate localDate)
-
getScheduleEvents
public SortedSet<ScheduleEvent> getScheduleEvents()
-
addScheduleEvent
public void addScheduleEvent(ScheduleEvent scheduleEvent)
-
removeScheduleEvent
public boolean removeScheduleEvent(ScheduleEvent scheduleEvent)
-
findScheduleEvent
public Optional<ScheduleEvent> findScheduleEvent(ScheduleEvent event)
Finds in the current schedule the excact event (by database id)
-
addScheduleEventsFromMedia
public void addScheduleEventsFromMedia(Collection<? extends Program> mediaObjects)
-
addScheduleEventsFromMedia
public void addScheduleEventsFromMedia(Program... mediaObjects)
-
addScheduleEventsFromMedia
public void addScheduleEventsFromMedia(Program mediaObject)
-
getChannel
public Channel getChannel()
-
setChannel
public void setChannel(Channel value)
-
getNet
public Net getNet()
-
setNet
public void setNet(Net net)
-
getReleaseVersion
public Integer getReleaseVersion()
-
getStart
public Instant getStart()
-
setStart
public void setStart(Instant start)
-
setGuideDate
public void setGuideDate(LocalDate start)
-
getGuideDate
public LocalDate getGuideDate()
-
setStart
public void setStart(LocalDateTime start)
-
getStop
public Instant getStop()
-
setStop
public void setStop(Instant stop)
-
setStop
public void setStop(LocalDateTime stop)
-
isFiltered
public boolean isFiltered()
-
setFiltered
public void setFiltered(boolean filtered)
-
test
public boolean test(ScheduleEvent event)
- Specified by:
test
in interfacePredicate<ScheduleEvent>
-
iterator
public @NonNull Iterator<ScheduleEvent> iterator()
- Specified by:
iterator
in interfaceIterable<ScheduleEvent>
-
asLocalRange
public com.google.common.collect.Range<LocalDateTime> asLocalRange()
Returns the with this Schedule associatedgetStart()
andgetStop()
instances as aRange
ofZonedDateTime
's. I.e. an interval that is closed at the start, and open at the end. For now everything is associated with the time zoneZONE_ID
(i.e. CEST), since we haven't accounted an use case for something else yet, but otherwise we may imaging also the time zone to be a member of this schedule object.
-
asRange
public com.google.common.collect.Range<Instant> asRange()
-
builder
public static @NonNull Schedule.Builder builder()
-
getReruns
public Boolean getReruns()
-
setReruns
public void setReruns(Boolean reruns)
-
-