diff --git a/.hgtags b/.hgtags index 6a0e5499a704648d92be32c78177e04356d99982..e825a2af371ffe4b29cf344486653497b8995ec5 100644 --- a/.hgtags +++ b/.hgtags @@ -135,3 +135,4 @@ d355c6357d0e5aeb25fc978b747824447a214b88 OpenOLAT 10.4.5 fef7f6b2e2628d242e93f86d208f4cfb9c807d7c OpenOLAT 10.4.6 b38ed621ea53507fbf41eb616648ebad2340e613 OpenOLAT 10.4.7 273a6270a08460c07fdfbb53e31547b9c7e1c8c9 OpenOLAT 10.4.8 +6cea4865f4e8ea7978eb90f82662bdfa4132dbcb OpenOLAT 10.4.9 diff --git a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java index c79582b7bc2d0a5c1efc56de5894faf58ba1f832..85e7edadf4443772f07093a10c56b593a74ed8c9 100644 --- a/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java +++ b/src/main/java/org/olat/commons/calendar/manager/ImportCalendarManager.java @@ -46,6 +46,7 @@ import org.olat.commons.calendar.model.ImportedCalendar; import org.olat.commons.calendar.model.Kalendar; import org.olat.commons.calendar.model.KalendarComparator; import org.olat.commons.calendar.ui.components.KalendarRenderWrapper; +import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; @@ -69,6 +70,10 @@ import net.fortuna.ical4j.model.Calendar; public class ImportCalendarManager { private static final OLog log = Tracing.createLoggerFor(ImportCalendarManager.class); + private static final int RELOAD_INTERVAL = 3600000; + + @Autowired + private DB dbInstance; @Autowired private CalendarModule calendarModule; @Autowired @@ -147,20 +152,11 @@ public class ImportCalendarManager { 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); - } + reloadImportCalendar(importedCalendar, timestamp); } - + + String calendarId = importedCalendar.getCalendarId(); KalendarRenderWrapper calendarWrapper = calendarManager.getImportedCalendar(identity, calendarId); calendarWrapper.setDisplayName(importedCalendar.getDisplayName()); calendarWrapper.setAccess(KalendarRenderWrapper.ACCESS_READ_ONLY); @@ -177,28 +173,16 @@ public class ImportCalendarManager { } 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); - } + reloadImportCalendar(importedCalendar, timestamp); } - + String calendarId = importedCalendar.getCalendarId(); File calendarFile = calendarManager.getCalendarFile(CalendarManager.TYPE_USER, calendarId); CalendarFileInfos calendarInfos = new CalendarFileInfos(calendarId, CalendarManager.TYPE_USER, calendarFile); calendars.add(calendarInfos); @@ -206,6 +190,21 @@ public class ImportCalendarManager { } return calendars; } + + private void reloadImportCalendar(ImportedCalendar importedCalendar, long timestamp) { + String url = importedCalendar.getUrl(); + Date lastUpdate = importedCalendar.getLastUpdate(); + if (url != null && (timestamp - lastUpdate.getTime() > RELOAD_INTERVAL)) { + log.info("Calendar reload started from url=" + url); + importedCalendar.setLastUpdate(new Date()); + importedCalendar = importedCalendarDao.update(importedCalendar); + dbInstance.commit(); + + String calendarId = importedCalendar.getCalendarId(); + reloadCalendarFromUrl(url, CalendarManager.TYPE_USER, calendarId); + log.info("Calendar reloaded from url=" + url); + } + } /** * Reload calendar from url and store calendar file locally. diff --git a/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java b/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java index 6b0547cbcab59572f0669543a45826e27da66a75..3ea6e7330645daf24c50ba281ead184c06125237 100644 --- a/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java +++ b/src/test/java/org/olat/selenium/page/course/GroupTaskPage.java @@ -91,6 +91,7 @@ public class GroupTaskPage { By uploadButtonBy = By.cssSelector("#" + stepId + " .o_sel_course_gta_submit_file"); browser.findElement(uploadButtonBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialog(browser); By inputBy = By.cssSelector(".o_fileinput input[type='file']"); OOGraphene.uploadFile(inputBy, file, browser); @@ -106,6 +107,7 @@ public class GroupTaskPage { By uploadButtonBy = By.cssSelector("#o_step_submit_content .o_sel_course_gta_create_doc"); browser.findElement(uploadButtonBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialog(browser); By filenameBy = By.cssSelector(".o_sel_course_gta_doc_filename input[type='text']"); browser.findElement(filenameBy).sendKeys(filename);