From 8e97a29e8ebd79e470686b8edf3a1f2a83855422 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Fri, 26 Jun 2020 17:55:31 +0200 Subject: [PATCH] OO-4630: Set correct end time of an recurring appointment --- src/main/java/org/olat/core/util/DateUtils.java | 14 ++++---------- .../ui/RecurringAppointmentsController.java | 7 +++++++ .../lecture/ui/EditLectureBlockController.java | 2 ++ .../java/org/olat/core/util/DateUtilsTest.java | 16 ++++++++++++---- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/olat/core/util/DateUtils.java b/src/main/java/org/olat/core/util/DateUtils.java index 7da4c0386ad..0777af70b7c 100644 --- a/src/main/java/org/olat/core/util/DateUtils.java +++ b/src/main/java/org/olat/core/util/DateUtils.java @@ -120,16 +120,10 @@ public class DateUtils { * @return */ public static Date copyTime(Date date, Date from) { - Calendar fromCalendar = new GregorianCalendar(); - fromCalendar.setTime(from); - - Calendar toCalendar = new GregorianCalendar(); - toCalendar.setTime(date); - toCalendar.set(Calendar.HOUR, fromCalendar.get(Calendar.HOUR)); - toCalendar.set(Calendar.MINUTE, fromCalendar.get(Calendar.MINUTE)); - toCalendar.set(Calendar.SECOND, fromCalendar.get(Calendar.SECOND)); - - return toCalendar.getTime(); + LocalDateTime ldtDate = toLocalDateTime(date); + LocalDateTime ldtfrom = toLocalDateTime(from); + LocalDateTime localDateTime = LocalDateTime.of(ldtDate.toLocalDate(), ldtfrom.toLocalTime()); + return toDate(localDateTime); } public static Date addDays(Date date, int days) { diff --git a/src/main/java/org/olat/course/nodes/appointments/ui/RecurringAppointmentsController.java b/src/main/java/org/olat/course/nodes/appointments/ui/RecurringAppointmentsController.java index 8fee5eb9fa5..9cbc29eaf7f 100644 --- a/src/main/java/org/olat/course/nodes/appointments/ui/RecurringAppointmentsController.java +++ b/src/main/java/org/olat/course/nodes/appointments/ui/RecurringAppointmentsController.java @@ -169,6 +169,10 @@ public class RecurringAppointmentsController extends FormBasicController { private void doSaveReccuringAppointments() { Date firstStart = recurringFirstEl.getDate(); Date firstEnd = recurringFirstEl.getSecondDate(); + + System.out.println(firstStart); + System.out.println(firstEnd); + Date last = recurringLastEl.getDate(); last = DateUtils.setTime(last, 23, 59, 59); @@ -185,6 +189,9 @@ public class RecurringAppointmentsController extends FormBasicController { Date end = DateUtils.copyTime(start, firstEnd); appointment.setEnd(end); + System.out.println(start); + System.out.println(end); + String location = locationEl.getValue(); appointment.setLocation(location); diff --git a/src/main/java/org/olat/modules/lecture/ui/EditLectureBlockController.java b/src/main/java/org/olat/modules/lecture/ui/EditLectureBlockController.java index b7e1471cfed..aefbe7d9df7 100644 --- a/src/main/java/org/olat/modules/lecture/ui/EditLectureBlockController.java +++ b/src/main/java/org/olat/modules/lecture/ui/EditLectureBlockController.java @@ -396,6 +396,8 @@ public class EditLectureBlockController extends FormBasicController { } lectureBlock.setStartDate(dateEl.getDate()); lectureBlock.setEndDate(dateEl.getSecondDate()); + System.out.println(dateEl.getDate()); + System.out.println(dateEl.getSecondDate()); int plannedLectures = Integer.parseInt(plannedLecturesEl.getSelectedKey()); lectureBlock.setPlannedLecturesNumber(plannedLectures); diff --git a/src/test/java/org/olat/core/util/DateUtilsTest.java b/src/test/java/org/olat/core/util/DateUtilsTest.java index f0472676ae3..952e6408d35 100644 --- a/src/test/java/org/olat/core/util/DateUtilsTest.java +++ b/src/test/java/org/olat/core/util/DateUtilsTest.java @@ -29,6 +29,7 @@ import java.util.EnumSet; import java.util.GregorianCalendar; import java.util.List; +import org.assertj.core.api.SoftAssertions; import org.junit.Test; /** @@ -50,12 +51,19 @@ public class DateUtilsTest { @Test public void shouldCopyTime() { - Date date = new GregorianCalendar(2020, 5, 1, 10, 0, 0).getTime(); - Date from = new GregorianCalendar(2020, 8, 20, 8, 3, 2).getTime(); + SoftAssertions softly = new SoftAssertions(); + + softly.assertThat(DateUtils.copyTime( + new GregorianCalendar(2020, 5, 1, 10, 0, 0).getTime(), + new GregorianCalendar(2020, 8, 20, 8, 3, 2).getTime()) + ).isEqualTo(new GregorianCalendar(2020, 5, 1, 8, 3, 2).getTime()); - date = DateUtils.copyTime(date, from); + softly.assertThat(DateUtils.copyTime( + new GregorianCalendar(2020, 5, 1, 10, 0, 0).getTime(), + new GregorianCalendar(2020, 5, 1, 10, 0, 0).getTime()) + ).isEqualTo(new GregorianCalendar(2020, 5, 1, 10, 0, 0).getTime()); - assertThat(date).isEqualTo(new GregorianCalendar(2020, 5, 1, 8, 3, 2).getTime()); + softly.assertAll(); } @Test -- GitLab