package eu.eudat.data.entities; import eu.eudat.queryable.queryableentity.DataEntity; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Type; import javax.persistence.*; import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.UUID; @Entity @Table(name = "\"UserInfo\"") @NamedEntityGraphs({ @NamedEntityGraph( name = "userInfo", attributeNodes = {@NamedAttributeNode("userRoles"), @NamedAttributeNode("credentials")}) }) public class UserInfo implements DataEntity { @Id @GeneratedValue @GenericGenerator(name = "uuid2", strategy = "uuid2") @Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)") private UUID id; @Column(name = "email", nullable = false) private String email = null; @Column(name = "authorization_level", nullable = false) private Short authorization_level; //0 admin, 1 user @Column(name = "usertype", nullable = false) private Short usertype; // 0 internal, 1 external @Column(name = "verified_email", nullable = true) private Boolean verified_email = null; @Column(name = "name", nullable = true) private String name = null; @Column(name = "created", nullable = false) private Date created = null; @Column(name = "lastloggedin", nullable = true) private Date lastloggedin = null; @Type(type = "eu.eudat.configurations.typedefinition.XMLType") @Column(name = "additionalinfo", nullable = true) private String additionalinfo; @OneToMany(fetch = FetchType.LAZY) @JoinTable(name = "\"UserDMP\"", joinColumns = {@JoinColumn(name = "usr", referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "dmp", referencedColumnName = "\"ID\"")} ) private Set dmps; @OneToMany(mappedBy = "userInfo", fetch = FetchType.LAZY) private Set credentials = new HashSet<>(); @OneToMany(mappedBy = "userInfo", fetch = FetchType.LAZY) private Set userRoles = new HashSet<>(); public Set getDmps() { return dmps; } public void setDmps(Set dmps) { this.dmps = dmps; } public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } public Date getLastloggedin() { return lastloggedin; } public void setLastloggedin(Date lastloggedin) { this.lastloggedin = lastloggedin; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Short getAuthorization_level() { return authorization_level; } public void setAuthorization_level(Short authorization_level) { this.authorization_level = authorization_level; } public Short getUsertype() { return usertype; } public void setUsertype(Short usertype) { this.usertype = usertype; } public Boolean getVerified_email() { return verified_email; } public void setVerified_email(Boolean verified_email) { this.verified_email = verified_email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAdditionalinfo() { return additionalinfo; } public void setAdditionalinfo(String additionalinfo) { this.additionalinfo = additionalinfo; } public Set getCredentials() { return credentials; } public void setCredentials(Set credentials) { this.credentials = credentials; } public Set getUserRoles() { return userRoles; } public void setUserRoles(Set userRoles) { this.userRoles = userRoles; } @Override public void update(UserInfo entity) { this.name = entity.getName(); this.email = entity.getEmail(); this.additionalinfo = entity.getAdditionalinfo(); this.lastloggedin = entity.getLastloggedin(); this.userRoles = entity.getUserRoles(); } @Override public UUID getKeys() { return this.id; } }