package com.norteksoft.acs.web.authorization; import java.util.List; import org.apache.struts2.convention.annotation.ParentPackage; import org.springframework.beans.factory.annotation.Required; import com.norteksoft.acs.base.web.struts2.CRUDActionSupport; import com.norteksoft.acs.entity.authorization.BusinessSystem; import com.norteksoft.acs.entity.authorization.FunctionGroup; import com.norteksoft.acs.entity.authorization.RoleGroup; import com.norteksoft.acs.entity.organization.Company; import com.norteksoft.acs.service.authorization.BusinessSystemManager; import com.norteksoft.product.util.ContextUtils; @ParentPackage("default") public class LoadTreeAction extends CRUDActionSupport<Company> { private static final long serialVersionUID = 1L; private BusinessSystemManager businessSystemManager; private String currentId; private String treeType; public String loadSystemTree(){ StringBuilder tree = new StringBuilder("[ "); //初始化时显示公司根节点和工作站根节点 if("INITIALIZED".equals(currentId)){ List<BusinessSystem> businessSystems = businessSystemManager.getAllBusiness(); for(BusinessSystem bs : businessSystems){ tree.append(generateJsTreeNode("BUSINESSSYSTEM,"+bs.getId(), "open", bs.getName(), ""/*getDefaultNodes(bs.getId())*/)); tree.append(","); } if(tree.lastIndexOf(",") != -1 && tree.lastIndexOf(",") == tree.length()-1){ tree.replace(tree.length()-1, tree.length(), ""); } } // else if(currentId.startsWith("ROLEGROUPS")){ // tree.append(getRoleGroupNodes(Long.valueOf(currentId.substring(currentId.indexOf(',')+1, currentId.length())))); // }else if(currentId.startsWith("FUNCTIONGROUPS")){ // tree.append(getFuncGroupNodes(Long.valueOf(currentId.substring(currentId.indexOf(',')+1, currentId.length())))); // } tree.append(" ]") ; this.renderText(tree.toString()); return null; } /** * 角色组列表 */ private String getRoleGroupNodes(Long id){ BusinessSystem businessSystem = businessSystemManager.getBusiness(id); StringBuilder nodes = new StringBuilder(); for(RoleGroup rg : businessSystem.getRoleGroups()){ if(rg.isDeleted()) if(rg.getCompanyId().equals(ContextUtils.getCompanyId())){ nodes.append(generateJsTreeNode("ROLESBYROLEGROUP,"+rg.getId(), "", rg.getName(), "")); nodes.append(","); } } if(nodes.lastIndexOf(",") != -1 && nodes.lastIndexOf(",") == nodes.length()-1){ nodes.replace(nodes.length()-1, nodes.length(), ""); } return nodes.toString(); } /** * 资源组列表 */ private String getFuncGroupNodes(Long id){ BusinessSystem businessSystem = businessSystemManager.getBusiness(id); StringBuilder nodes = new StringBuilder(); for(FunctionGroup fg :businessSystem.getFunctionGroups()){ if(fg.isDeleted()){ nodes.append(generateJsTreeNode("FUNCTIONS,"+fg.getId(), "", fg.getName(), "")); nodes.append(","); } } if(nodes.lastIndexOf(",") != -1 && nodes.lastIndexOf(",") == nodes.length()-1){ nodes.replace(nodes.length()-1, nodes.length(), ""); } return nodes.toString(); } private String getDefaultNodes(Long id){ StringBuilder nodes = new StringBuilder(); nodes.append(generateJsTreeNode("ROLEGROUPS,"+id.toString(), "closed", getText("roleGroup.roleGroup"), "")); nodes.append(",").append(generateJsTreeNode("STANDARDROLESBYSYS,"+id.toString(), "", getText("role.standardRole"), "")); nodes.append(",").append(generateJsTreeNode("CUSTOMROLESBYSYS,"+id.toString(), "", getText("role.customRole"), "")); nodes.append(",").append(generateJsTreeNode("FUNCTIONGROUPS,"+id.toString(), "closed", getText("functionGroup.functionGroup"), "")); nodes.append(",").append(generateJsTreeNode("FUNCTIONSBYSYS,"+id.toString(), "", getText("function.functionList"), "")); return nodes.toString(); } /** * 生成JSon格式的树节点 * @param id id * @param state open or closed * @param data 显示数据 * @param children 子节点 * @return */ protected String generateJsTreeNode(String id, String state, String data, String children){ StringBuilder node = new StringBuilder(); node.append("{ attributes: { id : \"").append(id).append("\" }"); if(state != null && !"".equals(state.trim())){ node.append(",state : \"").append(state).append("\""); } node.append(", data: \"").append(data).append("\" "); if(children != null && !"".equals(children.trim())){ node.append(", children : [").append(children).append("]"); } node.append("}"); return node.toString(); } public String getCurrentId() { return currentId; } public void setCurrentId(String currentId) { this.currentId = currentId; } public String getTreeType() { return treeType; } public void setTreeType(String treeType) { this.treeType = treeType; } @Required public void setBusinessSystemManager(BusinessSystemManager businessSystemManager) { this.businessSystemManager = businessSystemManager; } @Override public String delete() throws Exception { return null; } @Override public String list() throws Exception { return null; } @Override protected void prepareModel() throws Exception { } @Override public String save() throws Exception { return null; } public Company getModel() { return null; } }