package foundation.capacity.role;
|
|
import foundation.dao.preload.Bucket;
|
import foundation.dao.preload.Tree;
|
import foundation.data.entity.Entity;
|
import foundation.json.IJSONProvider;
|
import foundation.json.IJSONWriter;
|
import foundation.menu.Menu;
|
import foundation.page.Page;
|
|
public class Role implements IJSONProvider {
|
|
protected String id;
|
protected String code;
|
protected String name;
|
private Bucket<RolePage> rolePageBucket;
|
private Tree<RoleMenu> roleMenuTree;
|
|
|
public Role() {
|
rolePageBucket = new Bucket<RolePage>();
|
roleMenuTree = new Tree<RoleMenu>();
|
}
|
|
public void load(Entity entity) {
|
id = entity.getString("id");
|
code = entity.getString("code");
|
name = entity.getString("name");
|
}
|
|
public void loadOnePage(String menuId, Page page) {
|
if (page == null) {
|
return;
|
}
|
|
String menuPageKey = RolePage.createKey(menuId, page.getId());
|
RolePage rolePage = new RolePage(page);
|
rolePageBucket.loadOne(menuPageKey, rolePage);
|
}
|
|
public void loadOneTab(String menuId, String pageId, String tabId) {
|
String menuPageKey = RolePage.createKey(menuId, pageId);
|
RolePage rolePage = rolePageBucket.getCachedOne(menuPageKey);
|
|
if (rolePage == null) {
|
return;
|
}
|
|
rolePage.loadOneTab(tabId);
|
}
|
|
public void loadOneButton(String menuId, String pageId, String buttonId, Entity entity) {
|
String menuPageKey = RolePage.createKey(menuId, pageId);
|
RolePage rolePage = rolePageBucket.getCachedOne(menuPageKey);
|
|
if (rolePage == null) {
|
return;
|
}
|
|
rolePage.loadOneButton(entity);
|
}
|
|
public void loadOneMenu(Menu menu) {
|
if (menu == null) {
|
return;
|
}
|
|
//1. add parent
|
Menu parent = menu.getParent();
|
while (parent != null && !roleMenuTree.contains(parent.getId())) {
|
RoleMenu roleMenu = new RoleMenu(parent);
|
roleMenuTree.loadOne(roleMenu.getId(), roleMenu);
|
|
parent = parent.getParent();
|
}
|
|
//2. add menu
|
RoleMenu roleMenu = new RoleMenu(menu);
|
roleMenuTree.loadOne(roleMenu.getId(), roleMenu);
|
}
|
|
public void resetMenuTree(Tree<RoleMenu> newTree) {
|
this.roleMenuTree = newTree;
|
}
|
|
public Bucket<RolePage> getPages() {
|
return rolePageBucket;
|
}
|
|
public RolePage getPageById(String pageKey) {
|
return rolePageBucket.get(pageKey);
|
}
|
|
public Tree<RoleMenu> getMenuTree() {
|
return roleMenuTree;
|
}
|
|
public void onAfterLoadMenuTree() {
|
roleMenuTree.onAfterLoad(true);
|
}
|
|
public String getId() {
|
return id;
|
}
|
|
public String getCode() {
|
return code;
|
}
|
|
@Override
|
public void writeJSON(IJSONWriter writer) {
|
writer.beginObject("role");
|
writeJSONBody(writer);
|
writer.endObject();
|
}
|
|
public void writeJSONBody(IJSONWriter writer) {
|
writer.write("id", id);
|
writer.write("code", code);
|
writer.write("name", name);
|
}
|
|
}
|