From afc21046d4a82276df80011545a63985326d4f71 Mon Sep 17 00:00:00 2001 From: Jan Meinl Date: Thu, 14 May 2026 12:32:23 +0200 Subject: [PATCH] Introduce `Altitude` record, enhance altitude handling, and expand models - Added `Altitude` record for unified altitude representation with conversions between meters and feet. - Updated `Coordinate` and `TrackCoordinate` to use `Altitude` instead of raw altitude values. - Introduced `FlightStatus` enum for distinguishing flight stages. - Enhanced `Task` with a `scoringPeriodeEnd` field and added altitude-related updates to `Competition`. --- .../backend/competition/Competition.java | 2 ++ .../backend/coordinate/Altitude.java | 18 ++++++++++++++++++ .../backend/coordinate/Coordinate.java | 12 ++++++------ .../backend/coordinate/TrackCoordinate.java | 4 ++-- .../flightscore/backend/flight/Flight.java | 1 + .../backend/flight/FlightStatus.java | 10 ++++++++++ .../coph/flightscore/backend/task/Task.java | 4 +++- 7 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/main/java/dev/coph/flightscore/backend/coordinate/Altitude.java create mode 100644 src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java diff --git a/src/main/java/dev/coph/flightscore/backend/competition/Competition.java b/src/main/java/dev/coph/flightscore/backend/competition/Competition.java index 961b286..b286130 100644 --- a/src/main/java/dev/coph/flightscore/backend/competition/Competition.java +++ b/src/main/java/dev/coph/flightscore/backend/competition/Competition.java @@ -1,6 +1,7 @@ package dev.coph.flightscore.backend.competition; import dev.coph.flightscore.backend.competition.contact.CompetitionContact; +import dev.coph.flightscore.backend.coordinate.Altitude; import dev.coph.flightscore.backend.coordinate.Coordinate; import dev.coph.simpleutilities.ulid.ULID; import lombok.Getter; @@ -26,6 +27,7 @@ public class Competition { private String location; private String website; private AltitudeSource altitudeSource; + private Altitude seperationAltitude; private HashMap commonLaunchPoints; private HashSet contacts; diff --git a/src/main/java/dev/coph/flightscore/backend/coordinate/Altitude.java b/src/main/java/dev/coph/flightscore/backend/coordinate/Altitude.java new file mode 100644 index 0000000..54024b5 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/coordinate/Altitude.java @@ -0,0 +1,18 @@ +package dev.coph.flightscore.backend.coordinate; + +public record Altitude(double meters) { + public static final double FEET_PER_METER = 3.2808; + public static final double METERS_PER_FOOT = 0.3048; + + public static Altitude fromFeet(double feet) { + return new Altitude(feet * METERS_PER_FOOT); + } + + public static Altitude fromMeters(double meters) { + return new Altitude(meters); + } + + public double feet() { + return meters * FEET_PER_METER; + } +} diff --git a/src/main/java/dev/coph/flightscore/backend/coordinate/Coordinate.java b/src/main/java/dev/coph/flightscore/backend/coordinate/Coordinate.java index 0b8c3c6..da21d0f 100644 --- a/src/main/java/dev/coph/flightscore/backend/coordinate/Coordinate.java +++ b/src/main/java/dev/coph/flightscore/backend/coordinate/Coordinate.java @@ -9,20 +9,20 @@ public class Coordinate { private final double latitude; private final double longitude; - private final double pressureAltitude; - private final double gpsAltitude; + private final Altitude barometricAltitude; + private final Altitude gpsAltitude; - public Coordinate(double latitude, double longitude, double pressureAltitude, double gpsAltitude) { + public Coordinate(double latitude, double longitude, Altitude barometricAltitude, Altitude gpsAltitude) { this.latitude = latitude; this.longitude = longitude; - this.pressureAltitude = pressureAltitude; + this.barometricAltitude = barometricAltitude; this.gpsAltitude = gpsAltitude; } - public Coordinate(double latitude, double longitude, double altitude) { + public Coordinate(double latitude, double longitude, Altitude altitude) { this.latitude = latitude; this.longitude = longitude; - this.pressureAltitude = altitude; + this.barometricAltitude = altitude; this.gpsAltitude = altitude; } } diff --git a/src/main/java/dev/coph/flightscore/backend/coordinate/TrackCoordinate.java b/src/main/java/dev/coph/flightscore/backend/coordinate/TrackCoordinate.java index df11c98..7461f13 100644 --- a/src/main/java/dev/coph/flightscore/backend/coordinate/TrackCoordinate.java +++ b/src/main/java/dev/coph/flightscore/backend/coordinate/TrackCoordinate.java @@ -16,8 +16,8 @@ public class TrackCoordinate extends Coordinate { private final String additionalDigits; private final double variometer; - public TrackCoordinate(Instant time, double latitude, double longitude, PositionValid positionValid, double pressureAltitude, double gpsAltitude, int gpsAccuracy, int satelliteCount, String additionalDigits, double variometer) { - super(latitude, longitude, pressureAltitude, gpsAltitude); + public TrackCoordinate(Instant time, double latitude, double longitude, PositionValid positionValid, Altitude barometricAltitude, Altitude gpsAltitude, int gpsAccuracy, int satelliteCount, String additionalDigits, double variometer) { + super(latitude, longitude, barometricAltitude, gpsAltitude); this.time = time; this.positionValid = positionValid; this.gpsAccuracy = gpsAccuracy; 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 02a899d..777560f 100644 --- a/src/main/java/dev/coph/flightscore/backend/flight/Flight.java +++ b/src/main/java/dev/coph/flightscore/backend/flight/Flight.java @@ -10,6 +10,7 @@ import java.time.LocalDate; public class Flight { private int flightNumber; + private FlightStatus status; private FlightType type; private LocalDate date; private Daytime daytime; diff --git a/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java b/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java new file mode 100644 index 0000000..534fe03 --- /dev/null +++ b/src/main/java/dev/coph/flightscore/backend/flight/FlightStatus.java @@ -0,0 +1,10 @@ +package dev.coph.flightscore.backend.flight; + +public enum FlightStatus { + + DRAFT, + LIVE, + COMPLETED, + CANCELLED + +} 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 f95ef2b..38bece9 100644 --- a/src/main/java/dev/coph/flightscore/backend/task/Task.java +++ b/src/main/java/dev/coph/flightscore/backend/task/Task.java @@ -3,9 +3,11 @@ package dev.coph.flightscore.backend.task; import lombok.Getter; import lombok.experimental.Accessors; +import java.time.Instant; + @Getter @Accessors(fluent = true) public class Task { private int taskNumber; - + private Instant scoringPeriodeEnd; }