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();