diff --git a/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Flight.java b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Flight.java new file mode 100644 index 0000000000000000000000000000000000000000..d053f4749e55e5f6f0bf9f4dc27a6087b1cee625 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Flight.java @@ -0,0 +1,44 @@ +package cz.muni.fi.pa165.core.data.domain; + +import cz.muni.fi.pa165.core.data.domain.common.DomainEntity; +import jakarta.persistence.*; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.OffsetDateTime; +import java.util.Objects; + +@Entity(name = "flights") +@Data +@NoArgsConstructor +public class Flight extends DomainEntity { + + @Column(nullable = false) + private OffsetDateTime departureTime; + + @Column(nullable = false) + private OffsetDateTime arrivalTime; + + @ManyToOne(fetch = FetchType.LAZY, + cascade = {CascadeType.PERSIST, CascadeType.MERGE}) + private FlightSteward flightSteward; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Flight flight)) { + return false; + } + return Objects.equals(getId(), flight.getId()) && + Objects.equals(getDepartureTime(), flight.getDepartureTime()) && + Objects.equals(getArrivalTime(), flight.getArrivalTime()) && + Objects.equals(getFlightSteward(), flight.getFlightSteward()); + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getDepartureTime(), getArrivalTime(), getFlightSteward()); + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/data/domain/FlightSteward.java b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/FlightSteward.java new file mode 100644 index 0000000000000000000000000000000000000000..455d01b9bd67e759410e12d7f894f2b77c966019 --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/FlightSteward.java @@ -0,0 +1,45 @@ +package cz.muni.fi.pa165.core.data.domain; + +import cz.muni.fi.pa165.core.data.domain.common.DomainEntity; +import jakarta.persistence.Entity; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Objects; + +/** + * Connection table for flight-steward many-to-many relationship + */ +@Entity(name = "flight_steward") +@Data +@NoArgsConstructor +public class FlightSteward extends DomainEntity { + + private Long flightId; + + private Flight flight; + + private Long stewardId; + + private Steward steward; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof FlightSteward flightSteward)) { + return false; + } + return Objects.equals(getId(), flightSteward.getId()) && + Objects.equals(getFlightId(), flightSteward.getFlightId()) && + Objects.equals(getFlight(), flightSteward.getFlight()) && + Objects.equals(getStewardId(), flightSteward.getStewardId()) && + Objects.equals(getSteward(), flightSteward.getSteward()); + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getFlightId(), getFlight(), getStewardId(), getSteward()); + } +} diff --git a/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java new file mode 100644 index 0000000000000000000000000000000000000000..a67e645f959ee4de981542499d195f54c49519bf --- /dev/null +++ b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java @@ -0,0 +1,43 @@ +package cz.muni.fi.pa165.core.data.domain; + +import cz.muni.fi.pa165.core.data.domain.common.DomainEntity; +import jakarta.persistence.*; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Objects; + +@Entity(name = "stewards") +@Data +@NoArgsConstructor +public class Steward extends DomainEntity { + + @Column(nullable = false) + private String firstName; + + @Column(nullable = false) + private String lastName; + + @ManyToOne(fetch = FetchType.LAZY, + cascade = {CascadeType.PERSIST, CascadeType.MERGE}) + private FlightSteward flightSteward; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Steward steward)) { + return false; + } + return Objects.equals(getId(), steward.getId()) && + Objects.equals(getFirstName(), steward.getFirstName()) && + Objects.equals(getLastName(), steward.getLastName()) && + Objects.equals(getFlightSteward(), steward.getFlightSteward()); + } + + @Override + public int hashCode() { + return Objects.hash(getId(), getFirstName(), getLastName(), getFlightSteward()); + } +}