package com.ese.beans; import com.ese.model.db.MenuObjectModel; import com.ese.model.db.RoleAccessModel; import com.ese.model.db.SystemRoleModel; import com.ese.model.view.SystemRoleView; import com.ese.service.RoleAccessService; import com.ese.service.security.UserDetail; import com.ese.utils.MessageDialog; import com.ese.utils.Utils; import lombok.Getter; import lombok.Setter; import org.primefaces.model.CheckboxTreeNode; import org.primefaces.model.TreeNode; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Getter @Setter @ManagedBean(name = "roleAccess") @ViewScoped public class RoleAccessBean extends Bean{ private static final long serialVersionUID = 4412578634029874840L; @ManagedProperty("#{roleAccessService}") private RoleAccessService roleAccessService; private String modeRole; private String modeRoleAccess; private boolean flagBtnSaveRole; private boolean flagBtnDeleteRole; private boolean flagBtnPrint; private String keySearchRole; private boolean flagBtnAddRoleAccess; private boolean flagBtnDeleteRoleAccess; private boolean flagItemRoleAccess; private boolean flagSearchRoleAccess; private boolean flagBtnSearchRoleAccess; private String keySearchRoleAccess; private List<SystemRoleModel> systemRoleModelList; private SystemRoleModel systemRoleModel; private List<RoleAccessModel> roleAccessModelList; private List<RoleAccessModel> selectRoleAccess; //Root RoleAccessMode private TreeNode rootRoleAccessMode; private TreeNode rootMenuRoleAccessMode; //Dialog //Select Root private TreeNode[] selectRootRoleAccess; private TreeNode[] selectRootMenuRoleAccess; //Dialog Map<Integer, CheckboxTreeNode> treeNodeMap; Map<Integer, CheckboxTreeNode> treeNodeMenuRoleAccessMap; //Dialog private SystemRoleView systemRoleView; private List<MenuObjectModel> menuObjectModelList; private MenuObjectModel menuObjectModel; //Add Role Access Dialog //TB private List<MenuObjectModel> menuRoleAccessDlgList; private List<MenuObjectModel> selectMenuRoleAccessDlg; private String keySearchMenuObj; //Item private List<MenuObjectModel> menuRoleAccessItemList; private MenuObjectModel menuRoleAccessItem; private UserDetail userDetail; @PostConstruct private void onLoad(){ btnAndtextOnload(); newObjectOnload(); roleTBOnload(); } private void btnAndtextOnload(){ modeRole = "Mode:Search"; modeRoleAccess = "Mode:Search"; // flagBtnSaveRole = true; flagBtnDeleteRole = true; flagBtnPrint = true; flagBtnAddRoleAccess = true; flagBtnDeleteRoleAccess = true; flagItemRoleAccess = true; flagSearchRoleAccess = true; flagBtnSearchRoleAccess = true; keySearchRole = ""; keySearchRoleAccess = ""; keySearchMenuObj = ""; } private void newObjectOnload(){ systemRoleModel = new SystemRoleModel(); systemRoleView = new SystemRoleView(); menuObjectModel = new MenuObjectModel(); rootRoleAccessMode = new CheckboxTreeNode(); rootMenuRoleAccessMode = new CheckboxTreeNode(); } private void roleTBOnload(){ systemRoleModelList = roleAccessService.getSystemRoleByIsValid(); menuObjectModelList = roleAccessService.getMenuObjectByObjCategory(); } public void onClickRoleTB(){ log.debug("systemRoleModel Id : {}", systemRoleModel.getId()); modeRole = "Mode:Edit"; // flagBtnSaveRole = false; flagBtnDeleteRole = false; flagBtnPrint = false; flagBtnAddRoleAccess = false; flagBtnDeleteRoleAccess = false; flagItemRoleAccess = false; flagSearchRoleAccess = false; flagBtnSearchRoleAccess = false; systemRoleView = roleAccessService.getModelToView(systemRoleModel); roleAccessModelList = roleAccessService.getRoleAccessBySystemRoleId(systemRoleModel.getId()); rootRoleAccessMode = creRootRoleAccess(); } private TreeNode creRootRoleAccess() { TreeNode root = new CheckboxTreeNode(new Document(0, "", ""), null); log.debug("roleAccessModelList Size : ", roleAccessModelList.size()); final int MENU = 1; final int TAB = 2; final int ACTION = 3; treeNodeMap = new HashMap<Integer, CheckboxTreeNode>(); for (RoleAccessModel model : roleAccessModelList) { if ( !Utils.isNull(model) ) { if ( !Utils.isZero(Utils.parseInt(model.getMenuObjectModel().getCode().length(), 0)) && model.getMenuObjectModel().getObjCategory() == MENU ) { treeNodeMap.put(model.getMenuObjectModel().getId(), new CheckboxTreeNode(new Document(model.getId(), model.getMenuObjectModel().getCode(), model.getMenuObjectModel().getName()), root)); } else if ( model.getMenuObjectModel().getObjCategory() == TAB ) { treeNodeMap.put(model.getMenuObjectModel().getId(), new CheckboxTreeNode(new Document(model.getId(), model.getMenuObjectModel().getCode(), model.getMenuObjectModel().getName()), treeNodeMap.get(model.getMenuObjectModel().getParentId()))); } else if ( model.getMenuObjectModel().getObjCategory() == ACTION ) { new CheckboxTreeNode(new Document(model.getId(), model.getMenuObjectModel().getCode(), model.getMenuObjectModel().getName()), treeNodeMap.get(model.getMenuObjectModel().getParentId())); } } } return root; } public void onFilterRoleTB(){ systemRoleModelList = roleAccessService.getSystemRoleByKey(keySearchRole); clearTextBox(); } public void clearTextBox(){ modeRole = "Mode:New"; modeRoleAccess = "Mode:Search"; // flagBtnSaveRole = true; flagBtnDeleteRole = true; flagBtnPrint = true; flagBtnAddRoleAccess = true; flagBtnDeleteRoleAccess = true; flagItemRoleAccess = true; flagSearchRoleAccess = true; flagBtnSearchRoleAccess = true; keySearchRole = ""; systemRoleModel = new SystemRoleModel(); systemRoleView = new SystemRoleView(); roleAccessModelList = new ArrayList<RoleAccessModel>(); rootRoleAccessMode = creRootRoleAccess(); } public void preDeleteRole(){ showDialog(MessageDialog.WARNING.getMessageHeader(), "Click Yes confirm delete.", "confirmDeleteRoleDlg"); } public void onSaveRole(){ roleAccessService.saveSystemRole(systemRoleView); showDialogSaved(); onLoad(); modeRole = "Mode:New"; modeRoleAccess = "Mode:Search"; roleAccessModelList = new ArrayList<RoleAccessModel>(); rootRoleAccessMode = creRootRoleAccess(); } public void onDeleteRole(){ roleAccessService.deleteRole(systemRoleModel); showDialogDeleted(); onLoad(); } public void onFilterRoleAccess(){ log.debug("Object ID : {}, SystemRoleId : {}, keySearchRoleAccess : {}", menuObjectModel.getId(), systemRoleModel.getId(), keySearchRoleAccess); roleAccessModelList = roleAccessService.getRoleAccessByMenuObjectIdAndSystemRoleId(menuObjectModel.getId(), systemRoleModel.getId(), keySearchRoleAccess); rootRoleAccessMode = creRootRoleAccess(); } public List<Document> selectOnDelete(){ List<Document> documents = new ArrayList<Document>(); Document document = null; if (!Utils.isNull(selectRootRoleAccess)){ for (TreeNode node : selectRootRoleAccess){ document = new Document(0, "", ""); document = (Document) node.getData(); documents.add(document); } } return documents; } public void preDeleteRoelAccess(){ if (Utils.isNull(selectRootRoleAccess)){ showDialog(MessageDialog.WARNING.getMessageHeader(), "Please select Menu Object and Action.", "msgBoxSystemMessageDlg"); } else { showDialog(MessageDialog.WARNING.getMessageHeader(), "Click Yes confirm delete.", "confirmDeleteRoleAccessDlg"); } } public void onDeleteRoleAccess(){ // log.debug("selectRoleAccess length : {}", selectRootRoleAccess.length); roleAccessService.deleteRoleAccess(selectOnDelete()); roleAccessModelList = roleAccessService.getRoleAccessBySystemRoleId(systemRoleModel.getId()); rootRoleAccessMode = creRootRoleAccess(); } public void onLoadMenuObjDialog(){ selectMenuRoleAccessDlg = new ArrayList<MenuObjectModel>(); menuRoleAccessItem = new MenuObjectModel(); menuRoleAccessDlgList = roleAccessService.getMenuObjAll(); rootMenuRoleAccessMode = creRootMenuRoleAccess(); menuRoleAccessItemList = roleAccessService.getMenuObjectByObjCategory(); } public void onFilterMenuObjDlg(){ menuRoleAccessDlgList = roleAccessService.getMenuObjByIdAndKey(menuRoleAccessItem.getId(), keySearchMenuObj); rootMenuRoleAccessMode = creRootMenuRoleAccess(); } private TreeNode creRootMenuRoleAccess() { TreeNode root = new CheckboxTreeNode(new Document(0, "", ""), null); log.debug("menuRoleAccessDlgList Size : {}", menuRoleAccessDlgList.size()); final int MENU = 1; final int TAB = 2; final int ACTION = 3; treeNodeMenuRoleAccessMap = new HashMap<Integer, CheckboxTreeNode>(); for (MenuObjectModel model : menuRoleAccessDlgList) { if ( !Utils.isNull(model) ) { if ( !Utils.isZero(Utils.parseInt(model.getCode().length(), 0)) && model.getObjCategory() == MENU ) { treeNodeMenuRoleAccessMap.put(model.getId(), new CheckboxTreeNode( new Document(model.getId(), model.getCode(), model.getName()), root)); } else if ( model.getObjCategory() == TAB ) { treeNodeMenuRoleAccessMap.put(model.getId(), new CheckboxTreeNode( new Document(model.getId(), model.getCode(), model.getName()), treeNodeMenuRoleAccessMap.get(model.getParentId()))); } else if ( model.getObjCategory() == ACTION ) { new CheckboxTreeNode(new Document(model.getId(), model.getCode(), model.getName()), treeNodeMenuRoleAccessMap.get(model.getParentId())); } } } return root; } public void onSaveMenuObjToRoleAccess(){ if (Utils.isNull(selectRootMenuRoleAccess)){ showDialog(MessageDialog.WARNING.getMessageHeader(), "Please select Menu Object and Action.", "msgBoxSystemMessageDlg"); } else { roleAccessService.saveMenuObjectInRoleAccess(selectOnAddMenuRoleAccess(), systemRoleModel); showDialogSaved(); onLoadMenuObjDialog(); roleAccessModelList = roleAccessService.getRoleAccessBySystemRoleId(systemRoleModel.getId()); rootRoleAccessMode = creRootRoleAccess(); } } public List<Document> selectOnAddMenuRoleAccess(){ List<Document> documents = new ArrayList<Document>(); Document document = null; if (!Utils.isNull(selectRootMenuRoleAccess)){ for (TreeNode node : selectRootMenuRoleAccess){ document = new Document(0, "", ""); document = (Document) node.getData(); documents.add(document); } } return documents; } public void onPrint(){ userDetail = getUser(); roleAccessService.onPrintRoleAccess(userDetail); } }