Add competition and coordinate model classes with enums and relationships
- Created `Competition`, `CompetitionType`, and `CompetitionContact` classes for representing competition details. - Implemented `Coordinate`, `TrackCoordinate`, and `PositionValid` for geographical data handling. - Added `ContactType` enum for competition contact categorization.
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
package dev.coph.flightscore.backend.competition;
|
||||||
|
|
||||||
|
import dev.coph.flightscore.backend.competition.contact.CompetitionContact;
|
||||||
|
import dev.coph.flightscore.backend.coordinate.Coordinate;
|
||||||
|
import dev.coph.simpleutilities.ulid.ULID;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Accessors(fluent = true)
|
||||||
|
public class Competition {
|
||||||
|
|
||||||
|
private ULID id;
|
||||||
|
private String name;
|
||||||
|
private CompetitionType type;
|
||||||
|
private Instant startDate;
|
||||||
|
private Instant endDate;
|
||||||
|
private ZoneId timezone;
|
||||||
|
private Locale country;
|
||||||
|
private String location;
|
||||||
|
private String website;
|
||||||
|
private HashMap<String, Coordinate> commonLaunchPoints;
|
||||||
|
private HashSet<CompetitionContact> contacts;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package dev.coph.flightscore.backend.competition;
|
||||||
|
|
||||||
|
public enum CompetitionType {
|
||||||
|
|
||||||
|
WORLD_CHAMPIONSHIP,
|
||||||
|
CONTINENTAL_CHAMPIONSHIP,
|
||||||
|
NATIONAL_CHAMPIONSHIP,
|
||||||
|
STATE_OR_REGIONAL_CHAMPIONSHIP,
|
||||||
|
OTHER;
|
||||||
|
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
package dev.coph.flightscore.backend.competition.contact;
|
||||||
|
|
||||||
|
import dev.coph.simpleutilities.ulid.ULID;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Accessors(fluent = true)
|
||||||
|
public class CompetitionContact {
|
||||||
|
private final ULID id;
|
||||||
|
private ContactType type;
|
||||||
|
private String name;
|
||||||
|
private String email;
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
public CompetitionContact(ULID id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompetitionContact(ULID id, ContactType type, String name, String email, String phone) {
|
||||||
|
this.id = id;
|
||||||
|
this.type = type;
|
||||||
|
this.name = name;
|
||||||
|
this.email = email;
|
||||||
|
this.phone = phone;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package dev.coph.flightscore.backend.competition.contact;
|
||||||
|
|
||||||
|
public enum ContactType {
|
||||||
|
|
||||||
|
ORGANISATOR,
|
||||||
|
EVENT_DIRECTOR,
|
||||||
|
SAFETY_OFFICER,
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package dev.coph.flightscore.backend.coordinate;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Accessors(fluent = true)
|
||||||
|
public class Coordinate {
|
||||||
|
|
||||||
|
private final double latitude;
|
||||||
|
private final double longitude;
|
||||||
|
private final double pressureAltitude;
|
||||||
|
private final double gpsAltitude;
|
||||||
|
|
||||||
|
public Coordinate(double latitude, double longitude, double pressureAltitude, double gpsAltitude) {
|
||||||
|
this.latitude = latitude;
|
||||||
|
this.longitude = longitude;
|
||||||
|
this.pressureAltitude = pressureAltitude;
|
||||||
|
this.gpsAltitude = gpsAltitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Coordinate(double latitude, double longitude, double altitude) {
|
||||||
|
this.latitude = latitude;
|
||||||
|
this.longitude = longitude;
|
||||||
|
this.pressureAltitude = altitude;
|
||||||
|
this.gpsAltitude = altitude;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package dev.coph.flightscore.backend.coordinate;
|
||||||
|
|
||||||
|
public enum PositionValid {
|
||||||
|
|
||||||
|
FIX_3D,
|
||||||
|
NO_FIX_OR_2D;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package dev.coph.flightscore.backend.coordinate;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Accessors(fluent = true)
|
||||||
|
public class TrackCoordinate extends Coordinate {
|
||||||
|
|
||||||
|
private final Instant time;
|
||||||
|
private final PositionValid positionValid;
|
||||||
|
private final int gpsAccuracy;
|
||||||
|
private final int satelliteCount;
|
||||||
|
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);
|
||||||
|
this.time = time;
|
||||||
|
this.positionValid = positionValid;
|
||||||
|
this.gpsAccuracy = gpsAccuracy;
|
||||||
|
this.satelliteCount = satelliteCount;
|
||||||
|
this.additionalDigits = additionalDigits;
|
||||||
|
this.variometer = variometer;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user