argos/dmp-backend/src/main/java/entities/DMP.java

183 lines
4.4 KiB
Java

package entities;
import java.io.Serializable;
import java.util.Set;
import java.util.UUID;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
@Entity
@Table(name="\"DMP\"")
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
public class DMP implements Serializable {
private static final long serialVersionUID = -8263056535208547615L;
public DMP () {}
@Id
@GeneratedValue
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Type(type="org.hibernate.type.PostgresUUIDType")
@Column(name = "\"Previous\"")
private UUID previous;
@Column(name = "\"Label\"")
private String label;
@Column(name = "\"Version\"")
private Integer version;
@OneToOne(mappedBy = "dmp", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Dataset dataset;
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
// @Cascade(value=org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "\"Project\"")
private Project project;
@Type(type="typedefinition.XMLType")
@Column(name = "\"ProfileData\"", columnDefinition = "xml", nullable = true)
private String profileData;
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
// @Cascade(value=org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "\"Profile\"")
private DMPProfile profile;
@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="\"DMPOrganisation\"",
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")},
inverseJoinColumns={@JoinColumn(name="\"Organisation\"", referencedColumnName="\"ID\"")}
)
private Set<Organisation> organisations;
@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinTable(name="\"DMPResearcher\"",
joinColumns={@JoinColumn(name="\"DMP\"", referencedColumnName="\"ID\"")},
inverseJoinColumns={@JoinColumn(name="\"Researcher\"", referencedColumnName="\"ID\"")}
)
private Set<Researcher> researchers;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getPrevious() {
return previous;
}
public void setPrevious(UUID previous) {
this.previous = previous;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
public String getProfileData() {
return profileData;
}
public void setProfileData(String profileData) {
this.profileData = profileData;
}
public DMPProfile getProfile() {
return profile;
}
public void setProfile(DMPProfile profile) {
this.profile = profile;
}
public Dataset getDataset() {
return dataset;
}
public void setDataset(Dataset dataset) {
this.dataset = dataset;
}
public Set<Organisation> getOrganisations() {
return organisations;
}
public void setOrganisations(Set<Organisation> organisations) {
this.organisations = organisations;
}
public Set<Researcher> getResearchers() {
return researchers;
}
public void setResearchers(Set<Researcher> researchers) {
this.researchers = researchers;
}
public String toString() {
try {
return new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT).writeValueAsString(this);
} catch (JsonProcessingException e) {
return "";
}
}
}