Skip to content
This repository was archived by the owner on Jun 11, 2026. It is now read-only.

Commit ca5f598

Browse files
author
burdo
committed
validate time frame
1 parent 855b8a0 commit ca5f598

3 files changed

Lines changed: 27 additions & 4 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package de.kaleidox.workbench.model.entry;
2+
3+
import java.time.LocalDateTime;
4+
5+
public interface Timeframe {
6+
static void validateTimeframe(LocalDateTime startTime, LocalDateTime endTime) {
7+
if (startTime.isAfter(endTime)) throw new IllegalArgumentException("Start Time cannot be after End Time");
8+
}
9+
10+
LocalDateTime getStartTime();
11+
12+
LocalDateTime getEndTime();
13+
}

src/main/java/de/kaleidox/workbench/model/jpa/timetable/Assignment.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.kaleidox.workbench.model.jpa.timetable;
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import de.kaleidox.workbench.model.entry.Timeframe;
45
import de.kaleidox.workbench.model.jpa.representant.User;
56
import de.kaleidox.workbench.repo.UserRepository;
67
import de.kaleidox.workbench.util.ApplicationContextProvider;
@@ -16,7 +17,7 @@
1617
@Data
1718
@Embeddable
1819
@EqualsAndHashCode(of = "user")
19-
public class Assignment {
20+
public class Assignment implements Timeframe {
2021
public static Assignment parse(String parse) {
2122
var split = parse.split(": *");
2223
var username = split[0];
@@ -52,5 +53,9 @@ public record CreateData(
5253
@Nullable LocalDateTime startTime,
5354
@Nullable LocalDateTime endTime,
5455
@Nullable String notes
55-
) {}
56+
) {
57+
public CreateData {
58+
if (startTime != null && endTime != null) Timeframe.validateTimeframe(startTime, endTime);
59+
}
60+
}
5661
}

src/main/java/de/kaleidox/workbench/model/jpa/timetable/TimetableEntry.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.kaleidox.workbench.model.jpa.timetable;
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import de.kaleidox.workbench.model.entry.Timeframe;
45
import de.kaleidox.workbench.model.jpa.representant.User;
56
import de.kaleidox.workbench.model.jpa.representant.customer.Customer;
67
import de.kaleidox.workbench.model.jpa.representant.customer.Department;
@@ -27,7 +28,7 @@
2728
@Entity
2829
@IdClass(TimetableEntry.CompositeKey.class)
2930
@EqualsAndHashCode(of = { "customer", "department", "startTime" })
30-
public class TimetableEntry {
31+
public class TimetableEntry implements Timeframe {
3132
public static final DateTimeFormatter DATE_FORMATTER = ofPattern("EE dd.MM.yy");
3233
public static final DateTimeFormatter HOUR_FORMATTER = ofPattern("HH:mm");
3334
@Id @ManyToOne Customer customer;
@@ -90,5 +91,9 @@ public record CreateData(
9091
@NotNull LocalDateTime startTime,
9192
@NotNull LocalDateTime endTime,
9293
@Nullable String notes
93-
) {}
94+
) {
95+
public CreateData {
96+
Timeframe.validateTimeframe(startTime, endTime);
97+
}
98+
}
9499
}

0 commit comments

Comments
 (0)