package foundation.page; import foundation.data.entity.Entity; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.util.MapList; public class Page implements IJSONProvider { private String id; private String code; private String title; private String url; private boolean active; private MapList tabs; private MapList buttons; public Page() { tabs = new MapList(); buttons = new MapList(); } public void load(Entity entity) { id = entity.getString("id"); code = entity.getString("code"); title = entity.getString("title"); url = entity.getString("url"); active = entity.getBoolean("active", true); } public void loadOneTab(Tab tab) { tabs.add(tab.getId(), tab); } public Tab getTab(String tabId) { return tabs.get(tabId); } public void loadOneButton(Button button) { buttons.add(button.getId(), button); } public Button getButton(String buttonId) { return buttons.get(buttonId); } public String getId() { return id; } public String getCode() { return code; } public String getTitle() { return title; } public String getUrl() { return url; } public boolean isActive() { return active; } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject("page"); writeJSONBody(writer); writer.endObject(); } public void writeJSONPageBody(IJSONWriter writer) { writer.write("id", id); writer.write("code", code); writer.write("title", title); writer.write("url", url); writer.write("active", active); } public void writeJSONBody(IJSONWriter writer) { //1. write page writeJSONPageBody(writer); //2. write tabs writer.beginArray("tabs"); for (Tab tab: tabs) { writeOneTab(writer, tab); } writer.endArray(); //3. write buttons writer.beginArray("buttons"); for (Button button: buttons) { writeOneButton(writer, button); } writer.endArray(); } private void writeOneTab(IJSONWriter writer, Tab tab) { writer.beginObject(); writer.write("name", tab.getName()); writer.endObject(); } private void writeOneButton(IJSONWriter writer, Button button) { writer.beginObject(); writer.write("code", button.getCode()); writer.write("title", button.getTitle()); writer.write("visible", true); writer.write("active", true); writer.endObject(); } }