package controllers.origo.admin;
import models.origo.core.RootNode;
import origo.helpers.NavigationHelper;
import origo.helpers.NodeHelper;
import origo.helpers.SettingsHelper;
import origo.helpers.ThemeHelper;
import play.Logger;
import play.modules.origo.core.CachedThemeVariant;
import play.modules.origo.core.Node;
import play.modules.origo.core.Themes;
import play.modules.origo.core.ui.NavigationElement;
import play.modules.origo.core.ui.RenderedNode;
import java.util.Collection;
public class AdminLoader {
public static RenderedNode getStartPage() {
return loadAndDecorateStartPage();
}
public static RenderedNode getPage(String withType) {
return loadAndDecoratePage(withType);
}
public static RenderedNode getPage(String withType, String identifier) {
return loadAndDecoratePage(withType, identifier);
}
private static RenderedNode loadAndDecorateStartPage() {
return loadAndDecoratePage(SettingsHelper.Admin.getDashboardType());
}
private static RenderedNode loadAndDecoratePage(String withType) {
Node node = loadNode(withType);
return decorateNode(node);
}
private static RenderedNode loadAndDecoratePage(String withType, String identifier) {
Node node = loadNode(withType, identifier);
return decorateNode(node);
}
private static Node loadNode(String withType) {
Logger.debug("Loading [" + withType + "] as type");
return loadByType(withType);
}
private static Node loadNode(String withType, String identifier) {
Logger.debug("Loading [" + withType + "] as type and identifier [" + identifier + "]");
return loadByType(withType, identifier);
}
private static Node loadByType(final String withType) {
RootNode rootNode = loadRootNode(withType);
return NodeHelper.load(rootNode);
}
private static Node loadByType(String withType, String identifier) {
RootNode rootNode = loadRootNode(withType, identifier);
return NodeHelper.load(rootNode);
}
private static RootNode loadRootNode(String withType) {
RootNode rootNode = new RootNode(0L);
rootNode.type = withType;
return rootNode;
}
private static RootNode loadRootNode(String withType, String identifier) {
RootNode rootNode = loadRootNode(withType);
rootNode.nodeId = identifier;
return rootNode;
}
private static RenderedNode decorateNode(Node node) {
CachedThemeVariant themeVariant = Themes.getThemeVariant(SettingsHelper.Admin.getThemeVariant());
RenderedNode renderedNode = ThemeHelper.decorate(node, themeVariant);
if (Logger.isDebugEnabled()) {
Logger.debug("Decorated " + renderedNode);
}
return renderedNode;
}
public static Collection<NavigationElement> getNavigation(String withType) {
Node node = loadRootNode(withType);
Collection<NavigationElement> navigationLinks = NavigationHelper.getNavigation(node, NavigationElement.ADMIN);
if (Logger.isDebugEnabled()) {
Logger.debug("Navigation loaded " + navigationLinks);
}
return navigationLinks;
}
}