Mercurial > hg > LGDataverses
diff src/main/java/edu/harvard/iq/dataverse/RoleAssignment.java @ 10:a50cf11e5178
Rewrite LGDataverse completely upgrading to dataverse4.0
| author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
|---|---|
| date | Tue, 08 Sep 2015 17:00:21 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/edu/harvard/iq/dataverse/RoleAssignment.java Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,125 @@ +package edu.harvard.iq.dataverse; + +import edu.harvard.iq.dataverse.authorization.DataverseRole; +import edu.harvard.iq.dataverse.authorization.RoleAssignee; +import java.util.Objects; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.Table; +import javax.persistence.UniqueConstraint; + +/** + * A role of a user in a Dataverse. A User may have many roles in a given Dataverse. + * This is a realization of a Many-to-Many relationship + * between users and dataverses, with roles as an extra column. + * @author michael + */ +@Entity +@Table( + uniqueConstraints = @UniqueConstraint(columnNames={"assigneeIdentifier","role_id","definitionPoint_id"}) ) +@NamedQueries({ + @NamedQuery( name = "RoleAssignment.listByAssigneeIdentifier_DefinitionPointId", + query = "SELECT r FROM RoleAssignment r WHERE r.assigneeIdentifier=:assigneeIdentifier AND r.definitionPoint.id=:definitionPointId" ), + @NamedQuery( name = "RoleAssignment.listByAssigneeIdentifier", + query = "SELECT r FROM RoleAssignment r WHERE r.assigneeIdentifier=:assigneeIdentifier" ), + @NamedQuery( name = "RoleAssignment.listByDefinitionPointId", + query = "SELECT r FROM RoleAssignment r WHERE r.definitionPoint.id=:definitionPointId" ), + @NamedQuery( name = "RoleAssignment.listByRoleId", + query = "SELECT r FROM RoleAssignment r WHERE r.role=:roleId" ), + @NamedQuery( name = "RoleAssignment.deleteByAssigneeIdentifier_RoleIdDefinition_PointId", + query = "DELETE FROM RoleAssignment r WHERE r.assigneeIdentifier=:userId AND r.role.id=:roleId AND r.definitionPoint.id=:definitionPointId"), +}) +public class RoleAssignment implements java.io.Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column( nullable=false ) + private String assigneeIdentifier; + + @ManyToOne( cascade = CascadeType.MERGE ) + @JoinColumn( nullable=false ) + private DataverseRole role; + + @ManyToOne( cascade = CascadeType.MERGE ) + @JoinColumn( nullable=false ) + private DvObject definitionPoint; + + public RoleAssignment() {} + + public RoleAssignment(DataverseRole aRole, RoleAssignee anAssignee, DvObject aDefinitionPoint) { + role = aRole; + assigneeIdentifier = anAssignee.getIdentifier(); + definitionPoint = aDefinitionPoint; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAssigneeIdentifier() { + return assigneeIdentifier; + } + + public void setAssigneeIdentifier(String assigneeIdentifier) { + this.assigneeIdentifier = assigneeIdentifier; + } + + public DataverseRole getRole() { + return role; + } + + public void setRole(DataverseRole role) { + this.role = role; + } + + public DvObject getDefinitionPoint() { + return definitionPoint; + } + + public void setDefinitionPoint(DvObject definitionPoint) { + this.definitionPoint = definitionPoint; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 97 * hash + Objects.hashCode(role); + hash = 97 * hash + Objects.hashCode(assigneeIdentifier); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if ( ! (obj instanceof RoleAssignment) ) { + return false; + } + final RoleAssignment other = (RoleAssignment) obj; + + return ( Objects.equals(getRole(), other.getRole() ) + && Objects.equals(getAssigneeIdentifier(), other.getAssigneeIdentifier()) + && Objects.equals(getDefinitionPoint(), other.getDefinitionPoint())); + + } + + @Override + public String toString() { + return "RoleAssignment{" + "id=" + id + ", assignee=" + assigneeIdentifier + ", role=" + role + ", definitionPoint=" + definitionPoint + '}'; + } + +}
