From c6578e3eefdc471c035cbd5829ad75da85828064 Mon Sep 17 00:00:00 2001 From: Jan Meinl Date: Thu, 14 May 2026 13:18:14 +0200 Subject: [PATCH] Expand task and flight models, add new enums and classes - Added `TaskHWZ` and `PublicationTask` classes with initial structure. - Introduced `PublicationState` enum for task publication states and enhanced `Task` model with abstract methods, `flight`, and `scoringPeriodEnd` fields. - Extended `TaskStatus`, `FlightStatus`, and `ContactType` enums with new values. - Updated `Flight`, `FlightPublicData`, and their relationships with new fields like `competition`, `separationAltitudeOverride`, and additional notes. --- .../competition/contact/ContactType.java | 4 ++++ .../flightscore/backend/flight/Flight.java | 6 ++++-- .../backend/flight/FlightPublicData.java | 11 +++++++---- .../backend/flight/FlightStatus.java | 1 + .../backend/task/PublicationState.java | 18 ++++++++++++++++++ .../backend/task/PublicationTask.java | 15 +++++++++++++++ .../coph/flightscore/backend/task/Task.java | 12 +++++++++++- .../flightscore/backend/task/TaskStatus.java | 4 +++- .../flightscore/backend/task/impl/TaskHWZ.java | 16 ++++++++++++++++ 9 files changed, 79 insertions(+), 8 deletions(-) create mode 100644 src/main/java/dev/coph/flightscore/backend/task/PublicationState.java create mode 100644 src/main/java/dev/coph/flightscore/backend/task/PublicationTask.java create mode 100644 src/main/java/dev/coph/flightscore/backend/task/impl/TaskHWZ.java diff --git a/src/main/java/dev/coph/flightscore/backend/competition/contact/ContactType.java b/src/main/java/dev/coph/flightscore/backend/competition/contact/ContactType.java index 37797cf..c3ed3e6 100644 --- a/src/main/java/dev/coph/flightscore/backend/competition/contact/ContactType.java +++ b/src/main/java/dev/coph/flightscore/backend/competition/contact/ContactType.java @@ -4,6 +4,10 @@ public enum ContactType { ORGANISATOR, EVENT_DIRECTOR, + FIESTA_DIRECTOR, SAFETY_OFFICER, + JURY_PRESIDENT, + CHIEF_SCORER, + CHIEF_TARGET, } diff --git a/src/main/java/dev/coph/flightscore/backend/flight/Flight.java b/src/main/java/dev/coph/flightscore/backend/flight/Flight.java index 777560f..1413cb8 100644 --- a/src/main/java/dev/coph/flightscore/backend/flight/Flight.java +++ b/src/main/java/dev/coph/flightscore/backend/flight/Flight.java @@ -1,5 +1,6 @@ package dev.coph.flightscore.backend.flight; +import dev.coph.flightscore.backend.competition.Competition; import lombok.Getter; import lombok.experimental.Accessors; @@ -8,14 +9,15 @@ import java.time.LocalDate; @Getter @Accessors(fluent = true) public class Flight { - + private Competition competition; private int flightNumber; private FlightStatus status; private FlightType type; private LocalDate date; private Daytime daytime; private int qnh; - + private Integer separationAltitudeOverride; + private FlightPublicData publicData; private FlightScoringData scoringData; diff --git a/src/main/java/dev/coph/flightscore/backend/flight/FlightPublicData.java b/src/main/java/dev/coph/flightscore/backend/flight/FlightPublicData.java index 2136fb0..b32c6a1 100644 --- a/src/main/java/dev/coph/flightscore/backend/flight/FlightPublicData.java +++ b/src/main/java/dev/coph/flightscore/backend/flight/FlightPublicData.java @@ -12,12 +12,15 @@ public class FlightPublicData { private String launchArea; private String launchPeriod; - private String MinimumILPToGoals; + private String minimumILPToGoals; private Boolean soloFlightRequired; - private String SunsetAndSunrise; - private String PZsInForce; + private String sunsetAndSunrise; + private String pZsInForce; private String searchPeriod; private String nextBriefing; + + /* + Additional notes for the flight. E.g., for reduced time periods or temporary change of blue pz altitudes, ... + */ private String additionalNotes; - } diff --git a/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java b/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java index 534fe03..93d76fc 100644 --- a/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java +++ b/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java @@ -4,6 +4,7 @@ public enum FlightStatus { DRAFT, LIVE, + SCORING, COMPLETED, CANCELLED diff --git a/src/main/java/dev/coph/flightscore/backend/task/PublicationState.java b/src/main/java/dev/coph/flightscore/backend/task/PublicationState.java new file mode 100644 index 0000000..51761a9 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/task/PublicationState.java @@ -0,0 +1,18 @@ +package dev.coph.flightscore.backend.task; + +import lombok.Getter; +import lombok.experimental.Accessors; + +@Getter +@Accessors(fluent = true) +public enum PublicationState { + SCORING(false), + PROVISIONAL(false), + OFFICIAL(true), + FINAL(true); + + final boolean versionable; + PublicationState(boolean versionable) { + this.versionable = versionable; + } +} diff --git a/src/main/java/dev/coph/flightscore/backend/task/PublicationTask.java b/src/main/java/dev/coph/flightscore/backend/task/PublicationTask.java new file mode 100644 index 0000000..1d209e9 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/task/PublicationTask.java @@ -0,0 +1,15 @@ +package dev.coph.flightscore.backend.task; + +import java.time.Instant; + +public class PublicationTask { + private final PublicationState state; + private final Instant timestamp; + + //TODO + + public PublicationTask(PublicationState state, Instant timestamp) { + this.state = state; + this.timestamp = timestamp; + } +} diff --git a/src/main/java/dev/coph/flightscore/backend/task/Task.java b/src/main/java/dev/coph/flightscore/backend/task/Task.java index e49a26b..1da60b8 100644 --- a/src/main/java/dev/coph/flightscore/backend/task/Task.java +++ b/src/main/java/dev/coph/flightscore/backend/task/Task.java @@ -1,14 +1,24 @@ package dev.coph.flightscore.backend.task; +import dev.coph.flightscore.backend.flight.Flight; +import dev.coph.flightscore.backend.flight.FlightScoringData; +import dev.coph.simpleutilities.ulid.ULID; import lombok.Getter; import lombok.experimental.Accessors; +import org.json.JSONObject; import java.time.Instant; @Getter @Accessors(fluent = true) -public class Task { +public abstract class Task { + private Flight flight; + private ULID id; private int taskNumber; private TaskStatus status; private Instant scoringPeriodeEnd; + private Integer separationAltitudeOverride; + + public abstract JSONObject serialize(); + public abstract Task deserialize(JSONObject json); } diff --git a/src/main/java/dev/coph/flightscore/backend/task/TaskStatus.java b/src/main/java/dev/coph/flightscore/backend/task/TaskStatus.java index 5983735..4118be5 100644 --- a/src/main/java/dev/coph/flightscore/backend/task/TaskStatus.java +++ b/src/main/java/dev/coph/flightscore/backend/task/TaskStatus.java @@ -3,7 +3,9 @@ package dev.coph.flightscore.backend.task; public enum TaskStatus { LIVE, - CANCELED + SCORING, + COMPLETED, + CANCELED; } diff --git a/src/main/java/dev/coph/flightscore/backend/task/impl/TaskHWZ.java b/src/main/java/dev/coph/flightscore/backend/task/impl/TaskHWZ.java new file mode 100644 index 0000000..b4e9d08 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/task/impl/TaskHWZ.java @@ -0,0 +1,16 @@ +package dev.coph.flightscore.backend.task.impl; + +import dev.coph.flightscore.backend.task.Task; + +public class TaskHWZ extends Task { + + /** + * + * TaskNumber INT (UNSIGNED) + * ScoringPeriod TIMESTAMP + * Status STRING + * Data JSON + * + */ + +}