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 <ahu...@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();