package origo.listeners; import models.origo.core.RootNode; import models.origo.structuredcontent.Segment; import models.origo.structuredcontent.StructuredPage; import origo.helpers.SegmentHelper; import play.modules.origo.core.Node; import play.modules.origo.core.annotations.OnLoad; import play.modules.origo.core.annotations.Provides; import play.modules.origo.core.annotations.Types; import play.modules.origo.core.ui.UIElement; import java.util.List; public class StructuredPageProvider { @Provides(type = Types.NODE, with = "models.origo.structuredcontent.StructuredPage") public static Node loadPage(RootNode rootNode) { StructuredPage page = StructuredPage.findWithNodeIdAndSpecificVersion(rootNode.nodeId, rootNode.version); if (page == null) { throw new PageNotFoundException(rootNode.nodeId); } page.rootNode = rootNode; return page; } @OnLoad(type = Types.NODE, with = "models.origo.structuredcontent.StructuredPage") public static void loadContent(Node node) { List<Segment> segmentModels = Segment.findWithNodeIdAndSpecificVersion(node.getNodeId(), node.getVersion()); for (Segment segment : segmentModels) { SegmentHelper.triggerBeforeSegmentLoaded(segment.type, node, segment); UIElement element = SegmentHelper.triggerSegmentProvider(segment.type, node, segment); SegmentHelper.triggerAfterSegmentLoaded(segment.type, node, segment, element); node.addUIElement(element); } } }