From a46b1d9ac365c19e3725e2f29c1dc0c1bde2d7a7 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Wed, 8 Feb 2023 16:46:44 +0100 Subject: [PATCH] Added test to doc generation --- .../documentation/generator/Generator.java | 4 + .../utils/documentation/GenerateTest.java | 25 ++++++ .../utils/documentation/ResultAnaliser.java | 80 +++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 src/test/java/org/gcube/informationsystem/utils/documentation/ResultAnaliser.java diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/Generator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/Generator.java index f71f29d..b0270e9 100644 --- a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/Generator.java +++ b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/Generator.java @@ -33,6 +33,10 @@ public class Generator { this.modelKnowledge = new ModelKnowledge(); } + public ModelKnowledge getModelKnowledge() { + return modelKnowledge; + } + public Class getDocumentationGeneratorClass(AccessType accessType) throws Exception { Class clz; diff --git a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java index ded9675..37bb5a9 100644 --- a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java +++ b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java @@ -2,16 +2,24 @@ package org.gcube.informationsystem.utils.documentation; import java.util.ServiceLoader; +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.discovery.ISModelRegistrationProvider; import org.gcube.informationsystem.discovery.RegistrationProvider; +import org.gcube.informationsystem.discovery.knowledge.ModelKnowledge; +import org.gcube.informationsystem.tree.Tree; import org.gcube.informationsystem.utils.documentation.generator.TreeGenerator; import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ public class GenerateTest { + + public static Logger logger = LoggerFactory.getLogger(GenerateTest.class); @Test public void testDocGeneration() throws Exception { @@ -28,6 +36,23 @@ public class GenerateTest { treeGenerator.setSplittedFiles(true); } treeGenerator.generate(); + + logger.info("-------- Analising Discovery for model '{}'", rp.getModelName()); + + ModelKnowledge modelKnowledge = treeGenerator.getModelKnowledge(); + ResultAnaliser ra = new ResultAnaliser(rp); + modelKnowledge.addDiscoveredElementActions(ra); + + logger.info("-------- Analising Trees for model '{}'", rp.getModelName()); + + AccessType[] accessTypes = AccessType.getModelTypes(); + for(AccessType accessType : accessTypes) { + logger.info(" ------------- Analising Tree of '{}' for model '{}'", accessType.getName() ,rp.getModelName()); + + Tree> tree = modelKnowledge.getClassesTree(accessType); + tree.elaborate(ra); + } + } } diff --git a/src/test/java/org/gcube/informationsystem/utils/documentation/ResultAnaliser.java b/src/test/java/org/gcube/informationsystem/utils/documentation/ResultAnaliser.java new file mode 100644 index 0000000..2219e3a --- /dev/null +++ b/src/test/java/org/gcube/informationsystem/utils/documentation/ResultAnaliser.java @@ -0,0 +1,80 @@ +/** + * + */ +package org.gcube.informationsystem.utils.documentation; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.Element; +import org.gcube.informationsystem.discovery.DiscoveredElementAction; +import org.gcube.informationsystem.discovery.RegistrationProvider; +import org.gcube.informationsystem.tree.Node; +import org.gcube.informationsystem.tree.NodeElaborator; +import org.gcube.informationsystem.types.TypeMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public class ResultAnaliser implements DiscoveredElementAction, NodeElaborator> { + + public static Logger logger = LoggerFactory.getLogger(ResultAnaliser.class); + + protected RegistrationProvider rp; + protected Collection packages; + protected List> baseTypes; + + public ResultAnaliser(RegistrationProvider rp) { + this.rp = rp; + this.packages = rp.getPackagesToRegister(); + this.baseTypes = new ArrayList<>(); + AccessType[] accessTypes = AccessType.getModelTypes(); + for(AccessType accessType : accessTypes) { + this.baseTypes.add(accessType.getTypeClass()); + } + } + + @Override + public void analizeElement(Class e) throws Exception { + String typeName = TypeMapper.getType(e); + if(baseTypes.contains(e)) { + logger.info("- Type {} is the root type", typeName); + return; + } + + if(packages.contains(e.getPackage())) { + logger.info(" - Type {} belongs to {} as expected", typeName, rp.getModelName()); + }else { + logger.error(" - Type {} DOES NOT belong to {} as expected. This is very strange and should not occurr.", typeName, rp.getModelName()); + throw new Exception("Type " + typeName + " DOES NOT belong to " + rp.getModelName() +" as expected. This is very strange and should not occurr."); + } + } + + @Override + public void elaborate(Node> node, int level) throws Exception { + Class e = node.getNodeElement(); + + StringBuffer stringBuffer = new StringBuffer(); + for (int i = 0; i < level; ++i) { + stringBuffer.append(Node.INDENTATION); + } + + String typeName = TypeMapper.getType(e); + if(node.getTree().getRoot().getNodeElement() == e) { + logger.info("{}- Type {} is the root type", stringBuffer.toString(), typeName); + return; + } + + if(packages.contains(e.getPackage())) { + logger.info("{}- Type {} belongs to {} as expected", stringBuffer.toString(), typeName, rp.getModelName()); + }else { + logger.error("{}- Type {} DOES NOT belong to {} as expected. This is very strange and should not occurr.", stringBuffer.toString(), typeName, rp.getModelName()); + throw new Exception("Type " + typeName + " DOES NOT belong to " + rp.getModelName() +" as expected. This is very strange and should not occurr."); + } + } + +}