All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.jhonsapp.bootstrap.model.user.roleGroup.RoleGroup Maven / Gradle / Ivy

package br.com.jhonsapp.bootstrap.model.user.roleGroup;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.Valid;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

import br.com.jhonsapp.bootstrap.model.user.permission.Permission;

@Entity
@Table(name = "role_group")
@SequenceGenerator(name = "role_group_seq_generator", sequenceName = "role_group_seq", allocationSize = 1, initialValue = 1)
public class RoleGroup implements Serializable {

	/**
	 * Generated serial version id created at 13 October 2017.
	 */
	private static final long serialVersionUID = 6943119775556862864L;
	
	
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "role_group_seq_generator")
	private long id;
	
	@Column(unique=true)
	private String name;
	
	@ManyToMany(fetch=FetchType.EAGER)
	@JoinTable(name = "role_group_permission", joinColumns = @JoinColumn(name = "id_role_group"), inverseJoinColumns = @JoinColumn(name = "id_permission"))
	private List permissions = new ArrayList();

	public RoleGroup() { }
	
	public RoleGroup(String name) {
		this.name = name;
	}
	
	public long getId() {
		return id;
	}

	@NotBlank
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
	public void addPermission(Permission permission) {
		
		if(!permissions.contains(permission))
			permissions.add(permission);
	}
	
	public void removePermission(Permission permission) {
		permissions.remove(permission);
	}
	
	@Valid @NotEmpty
	public List getPermissions() {
		return permissions;
	}

	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((permissions == null) ? 0 : permissions.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		RoleGroup other = (RoleGroup) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (permissions == null) {
			if (other.permissions != null)
				return false;
		} else if (!permissions.equals(other.permissions))
			return false;
		return true;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy