diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java index 9802d5c..ff1e142 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java @@ -3,7 +3,6 @@ package dst.ass1.jpa.model.impl; import dst.ass1.jpa.model.*; import javax.persistence.*; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Collection; @@ -16,7 +15,7 @@ public class Driver extends PlatformUser implements IDriver { private IVehicle vehicle; @OneToMany(targetEntity = Employment.class) - private Collection employments; + private Collection employments = new ArrayList<>(); @Override public Collection getEmployments() { 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 index b913f01..46d49e9 100644 --- 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 @@ -14,8 +14,11 @@ import static dst.ass1.jpa.util.Constants.T_ORGANIZATION; @Entity public class Employment implements IEmployment { - @EmbeddedId @Target(EmploymentKey.class) private IEmploymentKey id; + @EmbeddedId @Target(EmploymentKey.class) + private IEmploymentKey id; + private Date since; + private Boolean active; @MapsId(T_ORGANIZATION) diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Location.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Location.java index 6f99c53..d348817 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Location.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Location.java @@ -4,16 +4,20 @@ import dst.ass1.jpa.model.ILocation; import dst.ass1.jpa.model.ITrip; import javax.persistence.*; +import java.util.ArrayList; import java.util.Collection; @Entity public class Location implements ILocation { - @Id @GeneratedValue private Long id; + @Id @GeneratedValue + private Long id; + private String name; + private Long locationId; @ManyToMany(targetEntity = Trip.class) - private Collection trips; + private Collection trips = new ArrayList<>(); @Override public Long getId() { diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Match.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Match.java index f013997..81cdb03 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Match.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Match.java @@ -7,9 +7,13 @@ import java.util.Date; @Entity public class Match implements IMatch { - @Id @GeneratedValue private Long id; + @Id @GeneratedValue + private Long id; + private Date date; - @Embedded private IMoney fare; + + @Embedded + private IMoney fare; @OneToOne(targetEntity = Trip.class) private ITrip trip; diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/ModelFactory.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/ModelFactory.java index 1e8803e..c145eb0 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/ModelFactory.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/ModelFactory.java @@ -6,7 +6,6 @@ import dst.ass1.jpa.model.*; * Creates new instances of your model implementations. */ public class ModelFactory implements IModelFactory { - @Override public IModelFactory createModelFactory() { return new ModelFactory(); diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Money.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Money.java index 2c853ca..659d56e 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Money.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Money.java @@ -8,6 +8,7 @@ import java.math.BigDecimal; @Embeddable public class Money implements IMoney { private String currency; + private BigDecimal value; @Override diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Organization.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Organization.java index 83619ca..63a32fd 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Organization.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Organization.java @@ -5,13 +5,16 @@ import dst.ass1.jpa.model.IOrganization; import dst.ass1.jpa.model.IVehicle; import javax.persistence.*; +import java.util.ArrayList; import java.util.Collection; import static dst.ass1.jpa.util.Constants.*; @Entity public class Organization implements IOrganization { - @Id @GeneratedValue private Long id; + @Id @GeneratedValue + private Long id; + private String name; @ManyToMany(targetEntity = Organization.class) @@ -20,16 +23,16 @@ public class Organization implements IOrganization { joinColumns = @JoinColumn(name = I_ORGANIZATION_PART_OF), inverseJoinColumns = @JoinColumn(name = I_ORGANIZATION_PARTS) ) - private Collection parts; + private Collection parts = new ArrayList<>(); @ManyToMany(mappedBy = "parts", targetEntity = Organization.class) - private Collection partOf; + private Collection partOf = new ArrayList<>(); @ManyToMany(targetEntity = Vehicle.class) - private Collection vehicles; + private Collection vehicles = new ArrayList<>(); @OneToMany(targetEntity = Employment.class) - private Collection employments; + private Collection employments = new ArrayList<>(); public Organization() { } diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Preferences.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Preferences.java index 57287bc..39d67c3 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Preferences.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Preferences.java @@ -4,17 +4,22 @@ import dst.ass1.jpa.model.IPreferences; import dst.ass1.jpa.model.IRider; import javax.persistence.*; +import java.util.HashMap; import java.util.Map; +import static dst.ass1.jpa.util.Constants.*; + @Entity public class Preferences implements IPreferences { - @Id + @Id @GeneratedValue private Long id; - @ElementCollection - private Map data; - @OneToOne(fetch = FetchType.LAZY) - @MapsId + @ElementCollection(fetch = FetchType.LAZY) + @OrderColumn + @JoinTable(name = J_PREFERENCES_DATA) + private Map data = new HashMap<>(); + + @OneToOne(targetEntity = Rider.class, fetch = FetchType.LAZY) private IRider rider; @Override diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java index 2af5cee..ac7b948 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java @@ -6,6 +6,7 @@ import dst.ass1.jpa.model.ITrip; import javax.persistence.*; import javax.validation.constraints.NotNull; +import java.util.ArrayList; import java.util.Collection; import static dst.ass1.jpa.util.Constants.M_RIDER_ACCOUNT; diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Trip.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Trip.java index 5bf1b08..34f3c94 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Trip.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Trip.java @@ -3,6 +3,7 @@ package dst.ass1.jpa.model.impl; import dst.ass1.jpa.model.*; import javax.persistence.*; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -10,11 +11,19 @@ import static dst.ass1.jpa.util.Constants.*; @Entity public class Trip implements ITrip { - @Id @GeneratedValue private Long id; + @Id @GeneratedValue + private Long id; + private Date created; + private Date updated; + private TripState state; + + @OneToOne(targetEntity = Location.class, optional = false) private ILocation pickup; + + @OneToOne(targetEntity = Location.class, optional = false) private ILocation destination; @ManyToMany(targetEntity = Location.class) @@ -23,10 +32,15 @@ public class Trip implements ITrip { joinColumns = @JoinColumn(name = I_TRIP), inverseJoinColumns = @JoinColumn(name = I_LOCATION) ) - private Collection stops; + private Collection stops = new ArrayList<>(); + @OneToOne(targetEntity = TripInfo.class) private ITripInfo tripInfo; + + @OneToOne(targetEntity = Match.class) private IMatch match; + + @OneToOne(targetEntity = Rider.class) private IRider rider; @Override diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/TripInfo.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/TripInfo.java index 0a2b6f0..48060a0 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/TripInfo.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/TripInfo.java @@ -4,21 +4,23 @@ import dst.ass1.jpa.model.IMoney; import dst.ass1.jpa.model.ITrip; import dst.ass1.jpa.model.ITripInfo; -import javax.persistence.Embedded; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.OneToOne; +import javax.persistence.*; import java.util.Date; @Entity public class TripInfo implements ITripInfo { - @Id + @Id @GeneratedValue private Long id; + private Date completed; + private Double distance; + @Embedded private IMoney total; + private Integer driverRating; + private Integer riderRating; @OneToOne(targetEntity = Trip.class) diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Vehicle.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Vehicle.java index d2fa945..74729cd 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Vehicle.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Vehicle.java @@ -10,17 +10,22 @@ import java.util.Collection; @Entity public class Vehicle implements IVehicle { - @Id + @Id @GeneratedValue private Long id; + @Column(unique = true) private String license; + private String color; + private String type; @OneToMany(targetEntity = Driver.class) private Collection driver; + @OneToMany(targetEntity = Match.class) private Collection match; + @ManyToMany(mappedBy = "vehicles", targetEntity = Organization.class) private Collection organization;