diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Employment.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Employment.java new file mode 100644 index 0000000..b913f01 --- /dev/null +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Employment.java @@ -0,0 +1,58 @@ +package dst.ass1.jpa.model.impl; + +import dst.ass1.jpa.model.IDriver; +import dst.ass1.jpa.model.IEmployment; +import dst.ass1.jpa.model.IEmploymentKey; +import dst.ass1.jpa.model.IOrganization; +import org.hibernate.annotations.Target; + +import javax.persistence.*; +import java.util.Date; + +import static dst.ass1.jpa.util.Constants.T_DRIVER; +import static dst.ass1.jpa.util.Constants.T_ORGANIZATION; + +@Entity +public class Employment implements IEmployment { + @EmbeddedId @Target(EmploymentKey.class) private IEmploymentKey id; + private Date since; + private Boolean active; + + @MapsId(T_ORGANIZATION) + @ManyToOne(targetEntity = Organization.class) + IOrganization organization; + + @MapsId(T_DRIVER) + @ManyToOne(targetEntity = Driver.class) + IDriver driver; + + @Override + public IEmploymentKey getId() { + return id; + } + + @Override + public void setId(IEmploymentKey employmentKey) { + this.id = employmentKey; + } + + @Override + public Date getSince() { + return since; + } + + @Override + public void setSince(Date since) { + this.since = since; + } + + @Override + public Boolean isActive() { + return active; + } + + @Override + public void setActive(Boolean active) { + this.active = active; + } +} diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/EmploymentKey.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/EmploymentKey.java new file mode 100644 index 0000000..ee4a137 --- /dev/null +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/EmploymentKey.java @@ -0,0 +1,55 @@ +package dst.ass1.jpa.model.impl; + +import dst.ass1.jpa.model.IDriver; +import dst.ass1.jpa.model.IEmploymentKey; +import dst.ass1.jpa.model.IOrganization; + +import javax.persistence.Embeddable; +import javax.persistence.ManyToOne; +import java.io.Serializable; +import java.util.Objects; + +@Embeddable +public class EmploymentKey implements IEmploymentKey, Serializable { + @ManyToOne(targetEntity = Driver.class) + IDriver driver; + + @ManyToOne(targetEntity = Organization.class) + IOrganization organization; + + public EmploymentKey() { + } + + @Override + public IDriver getDriver() { + return driver; + } + + @Override + public void setDriver(IDriver driver) { + this.driver = driver; + } + + @Override + public IOrganization getOrganization() { + return organization; + } + + @Override + public void setOrganization(IOrganization organization) { + this.organization = organization; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + EmploymentKey that = (EmploymentKey) o; + return getDriver().equals(that.getDriver()) && getOrganization().equals(that.getOrganization()); + } + + @Override + public int hashCode() { + return Objects.hash(getDriver(), getOrganization()); + } +}