package foundation.capacity.role;

import foundation.dao.preload.Tree;
import foundation.data.entity.Entity;
import foundation.json.IJSONWriter;
import foundation.menu.Menu;
import foundation.page.Page;

public class RoleAgent {

	private Role role;
	
	public RoleAgent() {
		
	}

	public Role newTarget() {
		Role result = new Role();
		
		if (role == null) {
			return result;
		}
		
		result.id = role.id;
		result.code = role.code;
		result.name = role.name;
		
		return result;
	}
	
	public void load(Entity entity) throws Exception {
		if (role == null) {
			role = new Role();
		}
		
		role.load(entity);
	}

	public void loadOnePage(String menuId, Page page) {
		if (role == null) {
			return;
		}
		
		role.loadOnePage(menuId, page);
	}

	public void loadOneTab(String menuId, String pageId, String tabId) {
		if (role == null) {
			return;
		}
		
		role.loadOneTab(menuId, pageId, tabId);
	}

	public void loadOneButton(String menuId, String pageId, String tabId, Entity entity) {
		if (role == null) {
			return;
		}
		
		role.loadOneButton(menuId, pageId, tabId, entity);
	}

	public void loadOneMenu(Menu menu) {
		if (role == null) {
			return;
		}
		
		role.loadOneMenu(menu);
	}

	public void onAfterLoadMenuTree() {
		if (role == null) {
			return;
		}
		
		role.onAfterLoadMenuTree();
	}

	public Role get() {
		return role;
	}

	public void set(Role role) {
		this.role = role;
	}
	
	public Tree<RoleMenu> getMenuTree() {
		if (role == null) {
			return null;
		}
		
		return role.getMenuTree();
	}

	public void resetMenuTree(Tree<RoleMenu> newTree) {
		if (role == null) {
			return;
		}
		
		role.resetMenuTree(newTree);
	}

	public String getId() {
		if (role == null) {
			return null;
		}
		
		return role.getId();
	}

	public String getCode() {
		if (role == null) {
			return null;
		}
		
		return role.getCode();
	}

	public void writeJSONBody(IJSONWriter writer) {
		if (role == null) {
			writer.writeNull();
		}
		
		role.writeJSONBody(writer);
	}
	
}