blob: dba9d3c06fbff5a0496c502c542dfedf411255ed [file] [log] [blame]
package de.ids_mannheim.korap.entity;
import java.util.List;
import de.ids_mannheim.korap.constant.PredefinedRole;
import de.ids_mannheim.korap.constant.PrivilegeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;
/**
* Describes user roles for example in managing a group or
* virtual corpora of a group.
*
* @author margaretha
* @see Privilege
*/
@Setter
@Getter
@Entity
@Table(name = "role")
public class Role implements Comparable<Role> {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(unique = true)
@Enumerated(EnumType.STRING)
private PredefinedRole name;
@Enumerated(EnumType.STRING)
private PrivilegeType privilege;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "query_id", referencedColumnName = "id")
private QueryDO query;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id", referencedColumnName = "id")
private UserGroup userGroup;
// @ManyToMany(fetch = FetchType.LAZY)
// @JoinTable(
// name = "role_user_roles",
// joinColumns = @JoinColumn(name = "role_id"),
// inverseJoinColumns = @JoinColumn(name = "user_role_id")
// )
// private Set<UserRole> user_roles;
@ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER)
private List<UserGroupMember> userGroupMembers;
//
// @OneToMany(mappedBy = "role", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
// private List<Privilege> privileges;
public Role () {}
public Role (PredefinedRole name, PrivilegeType privilege, UserGroup group) {
setName(name);
setPrivilege(privilege);
setUserGroup(group);
}
public Role (PredefinedRole name, PrivilegeType privilege, UserGroup group,
QueryDO query) {
setName(name);
setPrivilege(privilege);
setUserGroup(group);
setQuery(query);
}
public String toString () {
return "id=" + id + ", name=" + name + ", privilege=" + privilege
+ ", usergroup=" + userGroup.getId()
// + ", members=" + userGroupMembers
+ ", query=" + ((query!=null) ? query.getId() : query)
;
}
@Override
public int compareTo (Role o) {
if (this.getId() > o.getId()) {
return 1;
}
else if (this.getId() < o.getId()) {
return -1;
}
return 0;
}
@Override
public boolean equals (Object obj) {
Role r = (Role) obj;
if (this.name.equals(r.getName())
&& this.privilege.equals(r.getPrivilege())
&& this.userGroup.equals(r.getUserGroup())) {
if (this.query != null && r.getQuery() == null) {
return false;
}
if (this.query == null && r.getQuery() != null) {
return false;
}
if(this.query != null && r.getQuery() != null
&& !this.query.equals(r.getQuery())) {
return false;
}
return true;
}
return false;
}
@Override
public int hashCode () {
int hash = 7;
hash = 31 * hash + (int) id;
hash = 31 * hash + (name == null ? 0 : name.hashCode());
return hash;
}
}