package eu.eudat.data; import eu.eudat.commons.enums.DmpStatus; import eu.eudat.commons.enums.IsActive; import eu.eudat.data.converters.DateToUTCConverter; import eu.eudat.data.converters.enums.IsActiveConverter; import jakarta.persistence.*; import org.hibernate.annotations.GenericGenerator; import java.time.Instant; import java.util.UUID; //TODO: (thgiannos) Wire up when all other dependent entities are refactored //@Entity //@Table(name = "\"DMP\"") public class DmpEntity { @Id @Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)") private UUID id; public static final String _id = "id"; @Column(name = "label") private String label; public static final String _label = "label"; @Column(name = "version") private Integer version; public static final String _version = "version"; @Enumerated(EnumType.STRING) @Column(name = "status", nullable = false) private DmpStatus status; public static final String _status = "status"; @Column(name = "properties") private String properties; public static final String _properties = "properties"; @Column(name = "dmp_properties") private String dmpProperties; public static final String _dmpProperties = "dmpProperties"; @Column(name = "group_id", columnDefinition = "BINARY(16)") private UUID groupId; public static final String _groupId = "groupId"; @Column(name = "description") private String description; public static final String _description = "description"; @Column(name = "is_public", nullable = false) private boolean isPublic; public static final String _isPublic = "isPublic"; @Column(name = "extra_properties") private String extraProperties; public static final String _extraProperties = "extraProperties"; @Column(name = "created_at") @Convert(converter = DateToUTCConverter.class) private Instant createdAt; public static final String _createdAt = "createdAt"; @Column(name = "updated_at") @Convert(converter = DateToUTCConverter.class) private Instant updatedAt; public static final String _updatedAt = "updatedAt"; @Column(name = "is_active", nullable = false) @Convert(converter = IsActiveConverter.class) private IsActive isActive; public static final String _isActive = "isActive"; @Column(name = "\"finalized_at\"") @Convert(converter = DateToUTCConverter.class) private Instant finalizedAt; public static final String _finalizedAt = "finalizedAt"; @Column(name = "\"published_at\"") @Convert(converter = DateToUTCConverter.class) private Instant publishedAt; public static final String _publishedAt = "publishedAt"; //TODO: (thgiannos) Handle using the DMPEntity builder // @OneToMany(mappedBy = "dmp", fetch = FetchType.LAZY) // private Set dataset; // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "\"Grant\"") //TODO: (thgiannos) Previously 'Grant' private UUID grant; public static final String _grant = "grant"; //TODO: (thgiannos) Handle using the DMPEntity builder // @OneToMany(fetch = FetchType.LAZY, mappedBy = "dmp") // private Set associatedDmps; // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "\"Profile\"") //TODO: (thgiannos) Previously 'DMPProfile' private UUID profile; public static final String _profile = "profile"; // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "\"Creator\"") //TODO: (thgiannos) Previously 'UserInfo' private UUID creator; public static final String _creator = "creator"; //TODO: (thgiannos) Handle using the DMPEntity builder // @OneToMany(mappedBy = "entityId", fetch = FetchType.LAZY) // private Set dois; // @ManyToOne(fetch = FetchType.LAZY) // @JoinColumn(name = "\"Project\"") //TODO: (thgiannos) Previously 'Project' private UUID project; public static final String _project = "project"; // TODO: (thgiannos) Implement join entity // @OneToMany(fetch = FetchType.LAZY) // @JoinTable(name = "\"DMPOrganisation\"", // joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}, // inverseJoinColumns = {@JoinColumn(name = "\"Organisation\"", referencedColumnName = "\"ID\"")} // ) // private Set organisations; // TODO: (thgiannos) Implement join entity // @OneToMany(fetch = FetchType.LAZY) // @JoinTable(name = "\"DMPResearcher\"", // joinColumns = {@JoinColumn(name = "\"DMP\"", referencedColumnName = "\"ID\"")}, // inverseJoinColumns = {@JoinColumn(name = "\"Researcher\"", referencedColumnName = "\"ID\"")} // ) // private Set researchers; //TODO: (thgiannos) Handle using the DMPEntity builder // private Set users; public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } 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 DmpStatus getStatus() { return status; } public void setStatus(DmpStatus status) { this.status = status; } public String getProperties() { return properties; } public void setProperties(String properties) { this.properties = properties; } public String getDmpProperties() { return dmpProperties; } public void setDmpProperties(String dmpProperties) { this.dmpProperties = dmpProperties; } public UUID getGroupId() { return groupId; } public void setGroupId(UUID groupId) { this.groupId = groupId; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public boolean getIsPublic() { return isPublic; } public void setIsPublic(boolean aPublic) { isPublic = aPublic; } public String getExtraProperties() { return extraProperties; } public void setExtraProperties(String extraProperties) { this.extraProperties = extraProperties; } public Instant getCreatedAt() { return createdAt; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } public Instant getUpdatedAt() { return updatedAt; } public void setUpdatedAt(Instant updatedAt) { this.updatedAt = updatedAt; } public IsActive getIsActive() { return isActive; } public void setIsActive(IsActive isActive) { this.isActive = isActive; } public Instant getFinalizedAt() { return finalizedAt; } public void setFinalizedAt(Instant finalizedAt) { this.finalizedAt = finalizedAt; } public Instant getPublishedAt() { return publishedAt; } public void setPublishedAt(Instant publishedAt) { this.publishedAt = publishedAt; } public UUID getGrant() { return grant; } public void setGrant(UUID grant) { this.grant = grant; } public UUID getProfile() { return profile; } public void setProfile(UUID profile) { this.profile = profile; } public UUID getCreator() { return creator; } public void setCreator(UUID creator) { this.creator = creator; } public UUID getProject() { return project; } public void setProject(UUID project) { this.project = project; } }