You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2023/01/26 10:17:38 UTC

[isis] branch master updated: ISIS-3328: adds stub for EntityDiagramPage

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 4f86c72eec ISIS-3328: adds stub for EntityDiagramPage
4f86c72eec is described below

commit 4f86c72eecac305d5c0640a9b52f04e67f7021d1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jan 26 11:17:31 2023 +0100

    ISIS-3328: adds stub for EntityDiagramPage
---
 .../extensions/docgen/CausewayModuleExtDocgen.java | 20 ++++--
 .../topics/domainobjects/EntityDiagramPage.java    | 77 ++++++++++++++++++++++
 .../docgen/topics/welcome/WelcomeHelpPage.java     |  1 +
 3 files changed, 92 insertions(+), 6 deletions(-)

diff --git a/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
index 9228bb1aed..b130322c63 100644
--- a/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/CausewayModuleExtDocgen.java
@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.causeway.extensions.docgen.applib.HelpNode.HelpTopic;
 import org.apache.causeway.extensions.docgen.menu.DocumentationMenu;
+import org.apache.causeway.extensions.docgen.topics.domainobjects.EntityDiagramPage;
 import org.apache.causeway.extensions.docgen.topics.welcome.WelcomeHelpPage;
 
 import lombok.val;
@@ -39,24 +40,31 @@ import lombok.val;
     // menu providers
     DocumentationMenu.class,
 
-    // help pages, as required by the default rootHelpTopic below (in case when to be managed by Spring)
-    WelcomeHelpPage.class
+    // help pages, as required by the default RootHelpTopic below (in case when to be managed by Spring)
+    WelcomeHelpPage.class,
+    EntityDiagramPage.class
 
 })
 public class CausewayModuleExtDocgen {
 
     public static final String NAMESPACE = "causeway.ext.docgen";
 
-    @Bean(NAMESPACE + "RootHelpTopic")
+    /**
+     * The help index (tree), if not provided already (somewhere else).
+     */
+    @Bean(NAMESPACE + ".RootHelpTopic")
     @ConditionalOnMissingBean(HelpTopic.class)
     @Qualifier("Default")
-    public HelpTopic rootHelpTopic(final WelcomeHelpPage welcomeHelpPage) {
+    public HelpTopic rootHelpTopic(
+            final WelcomeHelpPage welcomeHelpPage,
+            final EntityDiagramPage entityDiagramPage) {
+
         val root = HelpTopic.root("Topics");
 
         root.addPage(welcomeHelpPage);
 
-//        root.subTopic("Legacy")
-//            .addPage(legacyHelpPage);
+        root.subTopic("Domain")
+            .addPage(entityDiagramPage);
 
         return root;
     }
diff --git a/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/domainobjects/EntityDiagramPage.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/domainobjects/EntityDiagramPage.java
new file mode 100644
index 0000000000..31da539137
--- /dev/null
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/domainobjects/EntityDiagramPage.java
@@ -0,0 +1,77 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.extensions.docgen.topics.domainobjects;
+
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.springframework.stereotype.Component;
+
+import org.apache.causeway.core.config.beans.CausewayBeanTypeRegistry;
+import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
+import org.apache.causeway.extensions.docgen.CausewayModuleExtDocgen;
+import org.apache.causeway.extensions.docgen.applib.HelpPage;
+import org.apache.causeway.valuetypes.asciidoc.applib.value.AsciiDoc;
+
+import lombok.RequiredArgsConstructor;
+
+@Component
+@Named(CausewayModuleExtDocgen.NAMESPACE + ".EntityDiagramPage")
+@RequiredArgsConstructor(onConstructor_ = {@Inject})
+public class EntityDiagramPage implements HelpPage {
+
+    private final SpecificationLoader specLoader;
+    private final CausewayBeanTypeRegistry beanTypeRegistry;
+
+    @Override
+    public String getTitle() {
+        return "Entity Diagram";
+    }
+
+    @Override
+    public AsciiDoc getContent() {
+        return AsciiDoc.valueOf(
+                "== Entities\n\n"
+                + entityTypesAsOrderedList() // TODO generate a diagram instead
+                + "\n");
+    }
+
+    // -- HELPER
+
+    private String entityTypesAsOrderedList() {
+        return streamEntityTypes()
+            .map(spec->". " + spec.getLogicalTypeName())
+            .collect(Collectors.joining("\n"));
+    }
+
+    private Stream<ObjectSpecification> streamEntityTypes() {
+        return beanTypeRegistry.getEntityTypes().keySet()
+            .stream()
+            .map(specLoader::specForType)
+            .filter(Optional::isPresent)
+            .map(Optional::get);
+    }
+
+}
+
diff --git a/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/welcome/WelcomeHelpPage.java b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/welcome/WelcomeHelpPage.java
index b1d49e3e11..db9c52a8e6 100644
--- a/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/welcome/WelcomeHelpPage.java
+++ b/extensions/core/docgen/src/main/java/org/apache/causeway/extensions/docgen/topics/welcome/WelcomeHelpPage.java
@@ -82,6 +82,7 @@ public class WelcomeHelpPage implements HelpPage {
 
     // -- HELPER
 
+    //TODO generate ascii-doc syntax instead; also eventually split the page into smaller sub-pages
     private String getDocumentationAsHtml() {
         final StringBuilder html = new StringBuilder();
         Object homePage = homePageResolverService.getHomePage();