PermissionGroupBean.java
package sk.iway.iwcm.users;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import org.eclipse.persistence.jpa.JpaEntityManager;
import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.database.ActiveRecordRepository;
import sk.iway.iwcm.system.adminlog.EntityListenersType;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnNested;
import sk.iway.iwcm.system.jpa.JpaTools;
/**
* Zastupuje SKUPINU prav, to znamena kolekciu prav zoskupenych pod nejakym nazvom. NEMAZAT - pri pouziti verzie z WJ8 nastane zacyklenie springfox (aj ked su triedy naoko rovnake)
*/
@Entity
@Table(name="user_perm_groups")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_USER_PERM_GROUP_UPDATE)
public class PermissionGroupBean extends ActiveRecordRepository implements Serializable
{
private static final long serialVersionUID = -1L;
public PermissionGroupBean(){
//constructor
}
@Id
@GeneratedValue(generator="WJGen_user_perm_groups")
@TableGenerator(name="WJGen_user_perm_groups",pkColumnValue="user_perm_groups")
@Column(name="group_id")
@DataTableColumn(
inputType = DataTableColumnType.ID,
title = "[[#{components.users.id}]]",
renderFormat = "dt-format-selector"
)
private Long id;
@Column(name="group_title")
@NotBlank
@DataTableColumn(
inputType = DataTableColumnType.OPEN_EDITOR,
title = "[[#{users.permission_group.name}]]",
tab = "basicInfo"
)
String title;
//***This columns are redirect through editorFields***
@Column(name="writable_folders")
String writableFolders;
@Column(name="editable_groups")
String editableGroups;
@Column(name="editable_pages")
String editablePages;
//***
@JsonManagedReference(value="group")
@OneToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL, targetEntity=PermissionInPermissionGroupBean.class, mappedBy="group")
private Set<PermissionInPermissionGroupBean> permissions = null;
@DataTableColumnNested
@Transient
private PermissionGroupEditorFields editorFields = null; //NOSONAR
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this. id = id;
}
@JsonIgnore
public int getUserPermGroupId() {
if (id == null) return 0;
return id.intValue();
}
@JsonIgnore
public void setUserPermGroupId(int id) {
this.id = Long.valueOf(id);
}
public void deletePermission(String permission)
{
if (permissions == null) return;
for (Iterator<PermissionInPermissionGroupBean> iterator = permissions.iterator(); iterator.hasNext();)
{
PermissionInPermissionGroupBean pg = iterator.next();
if (permission.equalsIgnoreCase(pg.getPermission()))
{
pg.delete();
JpaEntityManager em = JpaTools.getEclipseLinkEntityManager();
em.remove(pg);
iterator.remove();
}
}
}
public void addPermission(String permission)
{
if (permissions == null) permissions = new HashSet<>();
for (PermissionInPermissionGroupBean perm : permissions)
if (permission.equalsIgnoreCase(perm.getPermission()))
return;
PermissionInPermissionGroupBean newPerm = new PermissionInPermissionGroupBean();
newPerm.setPermission(permission);
permissions.add(newPerm);
newPerm.group = this;
}
public List<String> getPermissionNames()
{
List<String> perms = new ArrayList<>();
if (permissions == null) return perms;
for (PermissionInPermissionGroupBean perm : permissions)
perms.add(perm.permission);
return perms;
}
public Set<String> getPermissionSet()
{
Set<String> perms = new HashSet<>();
if (permissions == null) return perms;
for (PermissionInPermissionGroupBean perm : permissions)
perms.add(perm.permission);
return perms;
}
public String getWritableFolders() {
return writableFolders;
}
public void setWritableFolders(String writableFolders) {
this.writableFolders = writableFolders;
}
public String getEditableGroups() {
return editableGroups;
}
public void setEditableGroups(String editableGroups) {
this.editableGroups = editableGroups;
}
public String getEditablePages() {
return editablePages;
}
public void setEditablePages(String editablePages) {
this.editablePages = editablePages;
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PermissionGroupBean that = (PermissionGroupBean) o;
if (!Objects.equals(id, that.id) || !Objects.equals(title, that.title)) return false;
return true;
}
}