diff --git a/src/main/java/NTNU/IDATT1002/models/GeoLocation.java b/src/main/java/NTNU/IDATT1002/models/GeoLocation.java new file mode 100644 index 0000000000000000000000000000000000000000..23c75bd08f256fe9c8e6a8bf7cdcfe8cd09cc019 --- /dev/null +++ b/src/main/java/NTNU/IDATT1002/models/GeoLocation.java @@ -0,0 +1,84 @@ +package NTNU.IDATT1002.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; + +/** + * Creates table Geolocation + */ + +@Entity +@Table(name = "Geolocation") +public class GeoLocation { + + /** + * Defines geolocationId, this may not be blank + */ + + @Id @NotBlank(message = "Geolocation-Id may not be blank") + private int geoLocationId; + + /** + * One to one relation between geolocationId in table Geolocation + * Joins column geolocation_id in metadata + */ + + @OneToOne + @JoinColumn(name = "metadata_id") + private Metadata metadata; + + @NotBlank (message = "Altitude may not be blank") + private String altitude; + + @NotBlank (message = "Longditude may not be blank") + private String longditude; + + /** + * Creates constructor for geolocation that takes in each parameter + * @param geoLocationId + * @param altitude + * @param longditude + */ + + public GeoLocation(int geoLocationId, String altitude, String longditude){ + this.geoLocationId = geoLocationId; + this.altitude = altitude; + this.longditude = longditude; + } + + /** + * Another constructor that takes in one geolocation, and uses get-methods to define parameters + * @param geoLocation + */ + + public GeoLocation(GeoLocation geoLocation){ + this(geoLocation.getGeoLocationId(), + geoLocation.getAltitude(), + geoLocation.getLongditude()); + } + + public int getGeoLocationId() { + return geoLocationId; + } + + public String getAltitude() { + return altitude; + } + + public String getLongditude() { + return longditude; + } + + public void setGeoLocationId(int geoLocationId) { + this.geoLocationId = geoLocationId; + } + + public void setAltitude(String altitude) { + this.altitude = altitude; + } + + public void setLongditude(String longditude) { + this.longditude = longditude; + } +} diff --git a/src/main/java/NTNU/IDATT1002/models/Histogram.java b/src/main/java/NTNU/IDATT1002/models/Histogram.java new file mode 100644 index 0000000000000000000000000000000000000000..8e84bdc9f0d7cc7e898200a721025e25bf49ce8b --- /dev/null +++ b/src/main/java/NTNU/IDATT1002/models/Histogram.java @@ -0,0 +1,79 @@ +package NTNU.IDATT1002.models; + + +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * Creates histogram table + */ + +@Entity +@Table(name = "Histogram") +public class Histogram { + + /** + * Defines id, may not be blank + */ + + @Id @NotBlank(message = "HistogramId may not be blank") + private int histogramId; + + /** + * One to one relations, joins histogramId + * On columns histogram_id in metadata + */ + + @OneToOne + @JoinColumn(name = "metadata_id") + private Metadata metadata; + + @NotBlank (message = "Data may not be blank") + private String data; + + /** + * Constrtuctor for Histogram, taking in both histogramId and data + * @param histogramId + * @param data + */ + + + public Histogram(int histogramId , String data){ + this.histogramId = histogramId; + this.data = data; + } + + /** + * Constructor taking in a histogram object as parameter + * @param histogram + */ + + public Histogram(Histogram histogram){ + this(histogram.getHistogramId(), + histogram.getData()); + } + + public int getHistogramId() { + return histogramId; + } + + public String getData() { + return data; + } + + public void setHistogramId(int histogramId) { + this.histogramId = histogramId; + } + + public void setData(String data) { + this.data = data; + } + +} diff --git a/src/main/java/NTNU/IDATT1002/models/Metadata.java b/src/main/java/NTNU/IDATT1002/models/Metadata.java new file mode 100644 index 0000000000000000000000000000000000000000..25e442f19c342298a2bc141ea6d24290f155ee4f --- /dev/null +++ b/src/main/java/NTNU/IDATT1002/models/Metadata.java @@ -0,0 +1,72 @@ +package NTNU.IDATT1002.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; + +/** + * Creates Metadata table + */ + +@Entity +@Table(name = "Metadata") +public class Metadata { + + /** + * Defines metadataId, may not be blank + */ + + @Id @NotBlank(message = "Metadata-Id may not be blank") + private int metadataId; + + /** + * One to one relation joining imageId + * on image_id column in image + */ + + @OneToOne + @JoinColumn(name = "image_id") + private Image image; + + @NotBlank (message = "GeolocationId may not be blank") + private int geoLocationId; + + @NotBlank (message = "HistogramId may not be blank") + private int histogramId; + + public Metadata(int metadataId, int geoLocationId, int histogramId){ + this.metadataId = metadataId; + this.geoLocationId = geoLocationId; + this.histogramId = histogramId; + } + + public Metadata(Metadata metadata){ + this(metadata.getMetadataId(), + metadata.getGeoLocationId(), + metadata.getHistogramId()); + } + + public int getMetadataId() { + return metadataId; + } + + public int getGeoLocationId() { + return geoLocationId; + } + + public int getHistogramId() { + return histogramId; + } + + public void setGeoLocationId(int geoLocationId) { + this.geoLocationId = geoLocationId; + } + + public void setMetadataId(int metadataId) { + this.metadataId = metadataId; + } + + public void setHistogramId(int histogramId) { + this.histogramId = histogramId; + } +} diff --git a/src/main/java/NTNU/IDATT1002/models/Tag.java b/src/main/java/NTNU/IDATT1002/models/Tag.java new file mode 100644 index 0000000000000000000000000000000000000000..5a3dd0cfdbcfc7140e8e451299e64eb9ef2f91c9 --- /dev/null +++ b/src/main/java/NTNU/IDATT1002/models/Tag.java @@ -0,0 +1,81 @@ +package NTNU.IDATT1002.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * Creates table named tag + */ + +@Entity +@Table(name = "Tag") +public class Tag { + + /** + * Defines the tag-id, this cannot be blank + */ + + + @Id @NotBlank(message = "Tag-Id may not be blank") + @GeneratedValue(strategy = GenerationType.AUTO) + private int tagId; + + + /** + * Creates a many to many relations between tag and image + * on table ImageTags, joining column tagId and imageId + */ + + @ManyToMany(cascade = {CascadeType.ALL}) + @JoinTable( + name = "ImageTags", + joinColumns = { @JoinColumn(name = "tagId")}, + inverseJoinColumns = {@JoinColumn(name = "imageId")} + ) + Set<Image> image = new HashSet<>(); + + @NotBlank (message = "Tag title may not be blank") + private String title; + + /** + * Constructor with tagId and title as parameters + * @param tagId + * @param title + */ + + public Tag(int tagId, String title){ + this.tagId = tagId; + this.title = title; + } + + /** + * Constructor thar takes in a tag object + * @param tag + */ + + public Tag(Tag tag){ + this(tag.getTagId(), + tag.getTitle()); + } + + public int getTagId() { + return tagId; + } + + public String getTitle() { + return title; + } + + public void setTagId(int tagId) { + this.tagId = tagId; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index e920adae25251e23bdcc426728ef9b1a07c3e349..98274f00820aad0e8077e05c49b1b5bf6a12718f 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -11,6 +11,10 @@ <class>NTNU.IDATT1002.models.User</class> <class>NTNU.IDATT1002.models.Image</class> <class>NTNU.IDATT1002.models.ImageAlbum</class> + <class>NTNU.IDATT1002.models.Tag</class> + <class>NTNU.IDATT1002.models.Metadata</class> + <class>NTNU.IDATT1002.models.Histogram</class> + <class>NTNU.IDATT1002.models.GeoLocation</class> <properties> <!-- Configuring JDBC properties -->