BP-804, fix holiday expand for non overlapping duration
diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
index 79cad33..6823d70 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
@@ -343,7 +343,7 @@
 		validTo = DateHelper.getEndOfDay(validTo);

 		stbyBody.setValidTo(validTo);

 

-		stbyBody = this.calculateHoliday(group, date, stbyBody);

+		stbyBody = this.calculateHoliday(group, date, stbyBody, false);

 

 		lsStandbyScheduleBodies.add(stbyBody);

 		if (loopPos + 1 == loopLength) {

@@ -356,7 +356,7 @@
 			stbyBody2.setValidFrom(validFrom);

 			validTo = DateHelper.getDateWithTime(nextDay, duration.getValidTo());

 			stbyBody2.setValidTo(validTo);

-			this.calculateHoliday(group, nextDay, stbyBody2);

+			this.calculateHoliday(group, nextDay, stbyBody2, false);

 			lsStandbyScheduleBodies.add(stbyBody2);

 		}

 

@@ -372,14 +372,21 @@
 	 * @param stbyBody

 	 * @return

 	 */

-	public StandbyScheduleBody calculateHoliday(StandbyGroup group, Date date, StandbyScheduleBody stbyBody) {

+	public StandbyScheduleBody calculateHoliday(StandbyGroup group, Date date, StandbyScheduleBody stbyBody,

+			boolean isSingleDay) {

 		if (isHoliday(date, group)) {

 			if (group.getExtendStandbyTime()) {

 				// if extend of standby time is needed

 				stbyBody = this.calculateHolidayExtend(group, date, stbyBody);

+				if (isSingleDay) { // additional calculation if no day overlapping time slot

+					stbyBody = this.calculateHolidayPreDraw(group, date, stbyBody);

+				}

 			} else {

 				// is pre-draw of standby time needed

 				stbyBody = this.calculateHolidayPreDraw(group, date, stbyBody);

+				if (isSingleDay) { // additional calculation if no day overlapping time slot

+					stbyBody = this.calculateHolidayExtend(group, date, stbyBody);

+				}

 			}

 		}

 		return stbyBody;

@@ -463,7 +470,7 @@
 			// no last duration for the day has been found. Therefore the start of day has

 			// been used for current entry

 			if (DateHelper.isDateAfter(DateHelper.getEndOfDay(date), stbyBody.getValidTo())) {

-				stbyBody.setValidTo(DateHelper.getDateWithTime(date, DateHelper.getEndOfDay(date)));

+				stbyBody.setValidTo(DateHelper.getEndOfDay(date));

 				stbyBody.setModifiedCause(TXT_AUTOMATIC_PLANNING_HOLIDAY);

 				this.createMsgExtendHoliday(stbyBody, date, true);

 			}

@@ -471,7 +478,7 @@
 			// no last duration for the day has been found. Therefore the start of day has

 			// been used for current entry

 			if (DateHelper.isDateAfter(DateHelper.getEndOfDay(date), stbyBody.getValidTo())) {

-				stbyBody.setValidTo(DateHelper.getDateWithTime(date, DateHelper.getEndOfDay(date)));

+				stbyBody.setValidTo(DateHelper.getEndOfDay(date));

 				stbyBody.setModifiedCause(TXT_AUTOMATIC_PLANNING_HOLIDAY);

 				this.createMsgExtendHoliday(stbyBody, date, true);

 			}

@@ -509,8 +516,8 @@
 							lsUserInGroup.get(currentPosition).getUser(), fittingDuration, TXT_AUTOMATIC_PLANNING);

 					standbyScheduleBodyRepository.save(stbyBody);

 					// calculate if holiday

-					stbyBody = this.calculateHoliday(group, currentDate, stbyBody);

-					// because o

+					stbyBody = this.calculateHoliday(group, currentDate, stbyBody, true);

+

 					createMsgSavingBody(stbyBody);

 				} else {

 					resultObj = this.calculateMultiScheduleBodyEntries(lsUserInGroup, currentDate, lastDate,

diff --git a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
index 8067739..de5226f 100644
--- a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
+++ b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
@@ -1054,20 +1054,20 @@
 

 			// test success 01 - holiday extend

 			group.setExtendStandbyTime(true);

-			StandbyScheduleBody result = planningController.calculateHoliday(group, date, stbyBody);

+			StandbyScheduleBody result = planningController.calculateHoliday(group, date, stbyBody, false);

 			assertNotNull(result);

 			assertTrue(result.getId() == 1);

 

 			// test success 02 - holiday pre draw

 			group.setExtendStandbyTime(false);

-			result = planningController.calculateHoliday(group, date, stbyBody);

+			result = planningController.calculateHoliday(group, date, stbyBody, false);

 			assertTrue(result.getId() == 2);

 			assertNotNull(result);

 

 			// test success 03 - no holiday

 			Mockito.doReturn(false).when(planningController).isHoliday(Mockito.any(Date.class),

 					Mockito.any(StandbyGroup.class));

-			result = planningController.calculateHoliday(group, date, stbyBody);

+			result = planningController.calculateHoliday(group, date, stbyBody, false);

 			assertNotNull(result);

 

 		} catch (Exception e) {