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`.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package dev.coph.flightscore.backend.competition;
|
package dev.coph.flightscore.backend.competition;
|
||||||
|
|
||||||
import dev.coph.flightscore.backend.competition.contact.CompetitionContact;
|
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.flightscore.backend.coordinate.Coordinate;
|
||||||
import dev.coph.simpleutilities.ulid.ULID;
|
import dev.coph.simpleutilities.ulid.ULID;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -26,6 +27,7 @@ public class Competition {
|
|||||||
private String location;
|
private String location;
|
||||||
private String website;
|
private String website;
|
||||||
private AltitudeSource altitudeSource;
|
private AltitudeSource altitudeSource;
|
||||||
|
private Altitude seperationAltitude;
|
||||||
private HashMap<String, Coordinate> commonLaunchPoints;
|
private HashMap<String, Coordinate> commonLaunchPoints;
|
||||||
private HashSet<CompetitionContact> contacts;
|
private HashSet<CompetitionContact> contacts;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,20 +9,20 @@ public class Coordinate {
|
|||||||
|
|
||||||
private final double latitude;
|
private final double latitude;
|
||||||
private final double longitude;
|
private final double longitude;
|
||||||
private final double pressureAltitude;
|
private final Altitude barometricAltitude;
|
||||||
private final double gpsAltitude;
|
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.latitude = latitude;
|
||||||
this.longitude = longitude;
|
this.longitude = longitude;
|
||||||
this.pressureAltitude = pressureAltitude;
|
this.barometricAltitude = barometricAltitude;
|
||||||
this.gpsAltitude = gpsAltitude;
|
this.gpsAltitude = gpsAltitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Coordinate(double latitude, double longitude, double altitude) {
|
public Coordinate(double latitude, double longitude, Altitude altitude) {
|
||||||
this.latitude = latitude;
|
this.latitude = latitude;
|
||||||
this.longitude = longitude;
|
this.longitude = longitude;
|
||||||
this.pressureAltitude = altitude;
|
this.barometricAltitude = altitude;
|
||||||
this.gpsAltitude = altitude;
|
this.gpsAltitude = altitude;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ public class TrackCoordinate extends Coordinate {
|
|||||||
private final String additionalDigits;
|
private final String additionalDigits;
|
||||||
private final double variometer;
|
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) {
|
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, pressureAltitude, gpsAltitude);
|
super(latitude, longitude, barometricAltitude, gpsAltitude);
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.positionValid = positionValid;
|
this.positionValid = positionValid;
|
||||||
this.gpsAccuracy = gpsAccuracy;
|
this.gpsAccuracy = gpsAccuracy;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import java.time.LocalDate;
|
|||||||
public class Flight {
|
public class Flight {
|
||||||
|
|
||||||
private int flightNumber;
|
private int flightNumber;
|
||||||
|
private FlightStatus status;
|
||||||
private FlightType type;
|
private FlightType type;
|
||||||
private LocalDate date;
|
private LocalDate date;
|
||||||
private Daytime daytime;
|
private Daytime daytime;
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package dev.coph.flightscore.backend.flight;
|
||||||
|
|
||||||
|
public enum FlightStatus {
|
||||||
|
|
||||||
|
DRAFT,
|
||||||
|
LIVE,
|
||||||
|
COMPLETED,
|
||||||
|
CANCELLED
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,9 +3,11 @@ package dev.coph.flightscore.backend.task;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Accessors(fluent = true)
|
@Accessors(fluent = true)
|
||||||
public class Task {
|
public class Task {
|
||||||
private int taskNumber;
|
private int taskNumber;
|
||||||
|
private Instant scoringPeriodeEnd;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user