com.evasion.entity.security.GroupSec Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of API Show documentation
Show all versions of API Show documentation
API de l'application modulaire evasion-en-ligne
The newest version!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.evasion.entity.security;
import com.evasion.EntityJPA;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
/**
* L'entity Group permet d'affecter un groupe de droit a plusieurs utilisateur.
*
*create table groups (
* id bigint generated by default as identity(start with 0) primary key,
* group_name varchar_ignorecase(50) not null);
*
*create table group_authorities (
* group_id bigint not null,
* authority varchar(50) not null,
* constraint fk_group_authorities_group foreign key(group_id) references groups(id));
* @author sebastien.glon
*/
@Entity
@Table(name = "groups")
public class GroupSec extends EntityJPA {
/**
* UID de serialisation.
*/
private static final long serialVersionUID = 1L;
/**
* ID du grouped'utilisateur.
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
/**
* Nom du groupe de droit.
*/
@Column(unique = true, length = 50)
private String groupName;
/**
* Liste des droits affecte au groupe.
*/
@OneToMany
private Collection authoritiesInternal;
/**
* Liste des utilisateurs affecte a ce groupe de droit.
*/
@ManyToMany(mappedBy = "groupsInternal")
private Collection users;
/**
* Constructeur par defaut pour la persistence.
*/
protected GroupSec() {
}
/**
* Constructeur par defaut avec les champs obligatoire.
* @param name nom du groupe.
*/
public GroupSec(final String name) {
this.groupName = name;
}
/**
* Constructeur avec champs obligatiore et optionnel.
* @param groupName nom du groupe (obligatoire).
* @param authorities liste des roles (optionnel).
* @param users liste des utilisateurs du groupe (optionnel).
*/
public GroupSec(final String groupName, final Collection authorities,
final Set users) {
this.groupName = groupName;
this.authoritiesInternal = authorities;
this.users = users;
}
/**
* Getter des roles.
* (Methode interne utilise par la couche de persistence).
* @return la liste des roles affecte au groupe.
*/
protected Collection getAuthoritiesInternal() {
if (authoritiesInternal == null) {
authoritiesInternal = new HashSet();
}
return authoritiesInternal;
}
/**
* Setter des roles.
* (Methode interne utilise par la couche de persistence).
* @param authorities liste des roles affecte au groupe.
*/
protected void setAuthoritiesInternal(Collection authorities) {
this.authoritiesInternal = authorities;
}
/**
* Getter des roles affectes au groupe.
* @return liste des roles.
*/
public Collection getAuthorities() {
return Collections.unmodifiableCollection(getAuthoritiesInternal());
}
public boolean addAllAuthorities(Collection authorities) {
return this.getAuthoritiesInternal().addAll(authorities);
}
public boolean addAuthoritie(Authority auth) {
return this.getAuthoritiesInternal().add(auth);
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
/**
* Getter des utilisateurs.
* (Methode interne utilise par la couche de persistence).
* @return la liste des utilisateurs affecte au groupe.
*/
protected Collection getUsersInternal() {
if (users == null) {
users = new HashSet();
}
return users;
}
/**
* Setter des utilisateurs.
* (Methode interne utilise par la couche de persistence).
* @param users liste des utilisateurs affecte au groupe.
*/
protected void setUsersInternal(Set users) {
this.users = users;
}
public Collection getUsers() {
return Collections.unmodifiableCollection(getUsersInternal());
}
public boolean addUser(User user) {
return getUsersInternal().add(user);
}
public boolean addAllUser(Set users) {
return getUsersInternal().addAll(users);
}
/**
* {@inheritDoc }
*/
@Override
public boolean equals(final Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (!( obj instanceof GroupSec )) {
return false;
}
GroupSec rhs = (GroupSec) obj;
return new EqualsBuilder().append(this.groupName, rhs.groupName).
isEquals();
}
/**
* @{@inheritDoc }
*/
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37).append(this.groupName).toHashCode();
}
}