package fr.openwide.core.jpa.security.business.authority.model; import java.util.Collections; import java.util.Set; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.bindgen.Bindable; import com.google.common.collect.Sets; import fr.openwide.core.commons.util.collections.CollectionUtils; import fr.openwide.core.jpa.business.generic.model.GenericEntity; @Entity @Bindable public class Authority extends GenericEntity<Long, Authority> { private static final long serialVersionUID = -7704280784189665811L; @Id @GeneratedValue private Long id; @Column private String name; @ElementCollection private Set<String> customPermissionNames = Sets.newHashSet(); public Authority() { } @Override public Long getId() { return id; } @Override public void setId(Long id) { this.id = id; } public Authority(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<String> getCustomPermissionNames() { return Collections.unmodifiableSet(customPermissionNames); } public void setCustomPermissionNames(Set<String> customPermissionNames) { CollectionUtils.replaceAll(this.customPermissionNames, customPermissionNames); } public boolean addCustomPermissionName(String customPermissionName) { return customPermissionNames.add(customPermissionName); } public boolean removeCustomPermissionName(String customPermissionName) { return customPermissionNames.remove(customPermissionName); } @Override public int compareTo(Authority authority) { if(this == authority) { return 0; } return this.getName().compareToIgnoreCase(authority.getName()); } @Override public String getNameForToString() { return getName(); } @Override public String getDisplayName() { return getName(); } }