Skip to content
Snippets Groups Projects
Commit 5db63730 authored by srosse's avatar srosse
Browse files

OO-1645: add imported calendar in the aggregated calendar feed

parent 44ba31bf
No related branches found
No related tags found
No related merge requests found
......@@ -222,8 +222,7 @@ public class ICalFileCalendarManager implements CalendarManager, InitializingBea
// o_clusterOK by:cg This must not be synchronized because the caller already synchronized
private Kalendar loadCalendarFromFile(String type, String calendarID) {
Calendar calendar = readCalendar(type, calendarID);
Kalendar kalendar = createKalendar(type, calendarID, calendar);
return kalendar;
return createKalendar(type, calendarID, calendar);
}
protected Kalendar createKalendar(String type, String calendarID, Calendar calendar) {
......
......@@ -40,6 +40,7 @@ import java.util.regex.Pattern;
import org.olat.commons.calendar.CalendarManager;
import org.olat.commons.calendar.CalendarModule;
import org.olat.commons.calendar.model.CalendarFileInfos;
import org.olat.commons.calendar.model.CalendarUserConfiguration;
import org.olat.commons.calendar.model.ImportedCalendar;
import org.olat.commons.calendar.model.Kalendar;
......@@ -173,7 +174,38 @@ public class ImportCalendarManager {
Collections.sort(calendars, KalendarComparator.getInstance());
}
return calendars;
}
}
public List<CalendarFileInfos> getImportedCalendarInfosForIdentity(Identity identity, boolean reload) {
// initialize the calendars list
List<CalendarFileInfos> calendars = new ArrayList<CalendarFileInfos>();
if(calendarModule.isEnabled() && calendarModule.isEnablePersonalCalendar()) {
long timestamp = System.currentTimeMillis();
List<ImportedCalendar> importedCalendars = importedCalendarDao.getImportedCalendars(identity);
for (ImportedCalendar importedCalendar: importedCalendars) {
String calendarId = importedCalendar.getCalendarId();
String url = importedCalendar.getUrl();
if(reload) {
Date lastUpdate = importedCalendar.getLastUpdate();
if (url != null && (timestamp - lastUpdate.getTime() > 3600000)) {
log.info("Calendar reload started from url=" + url);
reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId);
importedCalendar.setLastUpdate(new Date());
importedCalendar = importedCalendarDao.update(importedCalendar);
log.info("Calendar reloaded from url=" + url);
}
}
File calendarFile = calendarManager.getCalendarFile(CalendarManager.TYPE_USER, calendarId);
CalendarFileInfos calendarInfos = new CalendarFileInfos(calendarId, CalendarManager.TYPE_USER, calendarFile);
calendars.add(calendarInfos);
}
}
return calendars;
}
/**
* Reload calendar from url and store calendar file locally.
......
......@@ -101,6 +101,10 @@ public class HomeCalendarManager implements PersonalCalendarManager {
if(iCalFile != null) {
aggregatedFiles.add(new CalendarFileInfos(identity.getName(), CalendarManager.TYPE_USER, iCalFile));
}
//reload every hour
List<CalendarFileInfos> importedCalendars = importCalendarManager.getImportedCalendarInfosForIdentity(identity, true);
aggregatedFiles.addAll(importedCalendars);
}
//group calendars
......
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