package origo.helpers; import models.origo.core.RootNode; import org.apache.commons.lang.StringUtils; import origo.listeners.PageNotFoundException; import play.modules.origo.core.Node; import play.modules.origo.core.annotations.Types; import java.util.Date; public class NodeHelper { public static Node load(String nodeId) { //Load RootNode model RootNode rootNode = RootNode.findLatestPublishedVersionWithNodeId(nodeId, new Date()); if (rootNode == null) { throw new PageNotFoundException(nodeId); } return load(rootNode); } public static Node load(String nodeId, long version) { //Load RootNode model RootNode rootNode = RootNode.findWithNodeIdAndSpecificVersion(nodeId, version); if (rootNode == null) { throw new PageNotFoundException(nodeId); } return load(rootNode); } public static Node load(RootNode rootNode) { boolean hasType = !StringUtils.isBlank(rootNode.type) && !rootNode.type.equals(RootNode.class.getName()); if (hasType) { triggerBeforeNodeLoaded(rootNode.type, rootNode); } Node node = rootNode; if (hasType) { node = triggerProvidesNodeListener(rootNode.type, rootNode); } if (hasType) { triggerAfterNodeLoaded(rootNode.type, node); } return node; } /* * Convenience methods for hooks with NODE type */ public static Node triggerProvidesNodeListener(String withType, RootNode rootNode) { return ProvidesHelper.triggerListener(Types.NODE, withType, rootNode); } public static void triggerBeforeNodeLoaded(String withType, RootNode rootNode) { OnLoadHelper.triggerBeforeListener(Types.NODE, withType, rootNode); } public static void triggerAfterNodeLoaded(String withType, Node node) { OnLoadHelper.triggerAfterListener(Types.NODE, withType, node); } }