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.
This commit is contained in:
Jan Meinl
2026-05-14 13:18:14 +02:00
parent 93c6dc239c
commit c6578e3eef
9 changed files with 79 additions and 8 deletions
@@ -4,6 +4,10 @@ public enum ContactType {
ORGANISATOR,
EVENT_DIRECTOR,
FIESTA_DIRECTOR,
SAFETY_OFFICER,
JURY_PRESIDENT,
CHIEF_SCORER,
CHIEF_TARGET,
}
@@ -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;
@@ -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;
}
@@ -4,6 +4,7 @@ public enum FlightStatus {
DRAFT,
LIVE,
SCORING,
COMPLETED,
CANCELLED
@@ -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;
}
}
@@ -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;
}
}
@@ -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);
}
@@ -3,7 +3,9 @@ package dev.coph.flightscore.backend.task;
public enum TaskStatus {
LIVE,
CANCELED
SCORING,
COMPLETED,
CANCELED;
}
@@ -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
*
*/
}