package org.msh.tb.userprofile; import org.msh.tb.entities.UserPermission; import org.msh.tb.entities.UserRole; import org.msh.tb.entities.enums.CaseClassification; import java.util.ArrayList; import java.util.List; /** * Represents a node in the list of permissions of the user. A node is used as a representative display of * the user profile, where permissions are displayed in a tree view * @author Ricardo Memoria * */ public class PermissionNode { private UserPermission permission; private PermissionNode parent; private CaseClassification caseClassification; private List children = new ArrayList(); private boolean checked; public PermissionNode(PermissionNode parent, UserPermission permission, CaseClassification caseClassification) { super(); this.permission = permission; this.caseClassification = caseClassification; this.parent = parent; if (this.parent != null) this.parent.getChildren().add(this); } /** * Return unique name to be used in the XHTML form to display sub permissions * @return */ public String getUniqueName() { String s = getUserRole().getCode(); if (permission.getCaseClassification() != null) s += permission.getCaseClassification().toString(); return s; } /** * Return checked status * @return */ public boolean isChecked() { return checked; } /** * Change checked status * @param value */ public void setChecked(boolean value) { checked = value; } public UserRole getUserRole() { return (permission != null? permission.getUserRole(): null); } /** * @return the permission */ public UserPermission getPermission() { return permission; } /** * @param permission the permission to set */ public void setPermission(UserPermission permission) { this.permission = permission; } /** * @return the parent */ public PermissionNode getParent() { return parent; } /** * @param parent the parent to set */ public void setParent(PermissionNode parent) { this.parent = parent; } /** * @return the caseClassification */ public CaseClassification getCaseClassification() { return caseClassification; } /** * @param caseClassification the caseClassification to set */ public void setCaseClassification(CaseClassification caseClassification) { this.caseClassification = caseClassification; } /** * @return the children */ public List getChildren() { return children; } }