String id = model.getId(); List<ResourceCascadeBean> children = model.getChildren(); if (model.getType() == SysResType.MENU) { if (children == null) { children = new ArrayList<>(); String qkey = model.getKey() + ":query"; for (ResourceCascadeBean operate : children) { if (qkey.equals(operate.getKey())) { q = operate; break; q = new ResourceCascadeBean(); q.setKey(qkey); q.setName("查询"); q.setSortIndex(1); children.add(q); child.setType(SysResType.OPERATE); child.setSceneType(model.getSceneType()); child.setParentId(id); create(child, me);
private ResourceCascadeBean findFirstMenu(ResourceCascadeBean root) { Iterator<ResourceCascadeBean> itr = root.depthFirstIterator(); while (itr.hasNext()) { ResourceCascadeBean item = itr.next(); if (item.getType() == SysResType.MENU) { return item; } } return null; }
private ModuleOptions handleModuleOptions(ResourceCascadeBean item) { ModuleOptions options; if (item.getOptions() == null) { options = new ModuleOptions(); } else { options = item.getOptions().to(ModuleOptions.class); } if (StringTools.isUrl(item.getUrl())) { options.setAbsolute(true); } item.setOptions(options); return options; } }
/** {@inheritDoc} **/ @Override public <T extends ResourceCoreBean> ResourceCascadeBean wrap(List<T> list, boolean upgrade) throws ServiceException { ResourceCascadeBean root = new ResourceCascadeBean(); root.setId(Keys.ROOT_CODE); root.setName("RootNode"); wrap(root, list, upgrade); return root; }
if (resource instanceof ResourceCascadeBean) { ResourceCascadeBean o = (ResourceCascadeBean) resource; item.setChildren(o.getChildren()); String pid = item.getParentId(); if (map.containsKey(pid)) { map.get(pid).addChild(item); } else { lost.add(item.getKey()); if (upgrade) { root.addChild(item);
Iterator<ResourceCascadeBean> itr = root.breadthFirstIterator(); while (itr.hasNext()) { ResourceCascadeBean item = itr.next(); if (item.getType() == SysResType.MODULE) { ModuleOptions options = handleModuleOptions(item); options.setSublink(PathTools.concat(item.getUrl(), firstMenu.getUrl()));
private List<String> collectAllChildrenId(String scene, List<String> ids) throws ServiceException { Objects.requireNonNull(scene, "scene"); PageList<ResourceCoreBean> all; { ResourceCoreWhere where = new ResourceCoreWhere(); where.setSceneType(scene); all = resourceCoreBasic.list(OrderPaging.NONE); } ResourceCascadeBean root = resourceCascadeQueryer.wrap(all.toList(), true); Iterator<ResourceCascadeBean> rootIterator = root.breadthFirstIterator(); List<String> targets = new ArrayList<>(); targets.addAll(ids); // 收集所有后代节点的ID while (rootIterator.hasNext()) { ResourceCascadeBean item = rootIterator.next(); if (targets.indexOf(item.getId()) >= 0) { continue; // 已在待删除列表中 } if (targets.indexOf(item.getParentId()) >= 0) { targets.add(item.getId()); // 当前节点的父节点在待删除列表中, 当前节点也应加入 } } return targets; }
public List<ResourceCascadeBean> getMenus(String module) { if (VerifyTools.isBlank(module) || "test".equals(module)) { return null; } ResourceCascadeBean root = (ResourceCascadeBean) SessionTools.getUserResources(); if (root == null) { return null; } String modulePath = "/" + module + "/"; List<ResourceCascadeBean> modules = root.getChildren(); if (modules == null) { return null; } for (ResourceCascadeBean m : modules) { if (modulePath.equals(m.getUrl())) { return m.getChildren(); } } return null; }