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

com.evasion.entity.security.GroupSec Maven / Gradle / Ivy

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(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy