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 + '}';
+	}
+	
+}