Skip to content
Snippets Groups Projects
Commit 270d6386 authored by srosse's avatar srosse
Browse files

Merge branch 'OpenOLAT_14.0' of...

Merge branch 'OpenOLAT_14.0' of ssh://srosse@office.frentix.com/home/srosse/repositories/OpenOLAT.git into OpenOLAT_14.0
parents 672c867b 52c560e0
No related branches found
No related tags found
No related merge requests found
......@@ -19,6 +19,9 @@
*/
package org.olat.course.nodes.livestream.manager;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
......@@ -52,15 +55,29 @@ public class LIveStreamServiceImpl implements LiveStreamService {
public List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin,
int bufferAfterMin) {
Date now = new Date();
Calendar cFromStartOfDay = Calendar.getInstance();
cFromStartOfDay.setTime(now);
int year = cFromStartOfDay.get(Calendar.YEAR);
int month = cFromStartOfDay.get(Calendar.MONTH);
int day = cFromStartOfDay.get(Calendar.DATE);
cFromStartOfDay.set(year, month, day - 1, 0, 0, 0);
Date fromStartOfDay = cFromStartOfDay.getTime();
Calendar cFrom = Calendar.getInstance();
cFrom.setTime(now);
cFrom.add(Calendar.MINUTE, -bufferAfterMin);
Date from = cFrom.getTime();
Calendar cTo = Calendar.getInstance();
cTo.setTime(now);
cTo.add(Calendar.MINUTE, bufferBeforeMin);
Date to = cTo.getTime();
return getLiveStreamEvents(calendars, from, to);
// Use start of day to get all day events as well.
return getLiveStreamEvents(calendars, fromStartOfDay, to).stream()
.filter(startedFilter(from))
.collect(Collectors.toList());
}
@Override
......@@ -79,6 +96,12 @@ public class LIveStreamServiceImpl implements LiveStreamService {
.filter(notStartedFilter(from))
.collect(Collectors.toList());
}
private Predicate<LiveStreamEvent> startedFilter(Date from) {
return (LiveStreamEvent e) -> {
return e.getBegin().before(from);
};
}
private Predicate<LiveStreamEvent> notStartedFilter(Date from) {
return (LiveStreamEvent e) -> {
......@@ -105,6 +128,7 @@ public class LIveStreamServiceImpl implements LiveStreamService {
}
}
}
return liveStreamEvents;
}
......@@ -115,9 +139,12 @@ public class LIveStreamServiceImpl implements LiveStreamService {
private LiveStreamEventImpl toLiveStreamEvent(KalendarEvent event, boolean timeOnly) {
LiveStreamEventImpl liveStreamEvent = new LiveStreamEventImpl();
liveStreamEvent.setId(event.getID());
liveStreamEvent.setBegin(event.getBegin());
liveStreamEvent.setEnd(event.getEnd());
liveStreamEvent.setAllDayEvent(event.isAllDayEvent());
liveStreamEvent.setBegin(event.getBegin());
Date end = event.isAllDayEvent()
? getEndOfDay(event.getEnd())
: event.getEnd();
liveStreamEvent.setEnd(end);
liveStreamEvent.setLiveStreamUrl(event.getLiveStreamUrl());
if (!timeOnly) {
liveStreamEvent.setSubject(event.getSubject());
......@@ -127,4 +154,18 @@ public class LIveStreamServiceImpl implements LiveStreamService {
return liveStreamEvent;
}
private Date getEndOfDay(Date date) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
return localDateTimeToDate(endOfDay);
}
private LocalDateTime dateToLocalDateTime(Date date) {
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
}
private Date localDateTimeToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment