From ad21ec0b7c787e915c4f7f436714bcbc7f9e2aa3 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Tue, 7 Feb 2023 15:18:58 +0100 Subject: [PATCH] improved doc generation --- .gitignore | 5 +- .../generator/TreeGenerator.java | 61 ++++++++++++------- .../utils/documentation/GenerateTest.java | 3 + 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index fd6dfa5..b703075 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ /target/ -/entities.rst -/properties.rst -/relations.rst -/is-model.rst +/*.rst \ No newline at end of file diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TreeGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TreeGenerator.java index 53ffbaf..d0b27a4 100644 --- a/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TreeGenerator.java +++ b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TreeGenerator.java @@ -22,16 +22,22 @@ public class TreeGenerator extends Generator { private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class); - public static final String IS_MODEL_FILENAME = "is-model.rst"; - public static final String PROPERTIES_FILENAME = "properties.rst"; - public static final String ENTITIES_FILENAME = "entities.rst"; - public static final String RELATIONS_FILENAME = "relations.rst"; + public static final String EXTENSION = ".rst"; protected RegistrationProvider rp; - + protected boolean splittedFiles; + public TreeGenerator(RegistrationProvider rp) { super(); this.rp = rp; + this.splittedFiles = false; + } + + public void setSplittedFiles(boolean splittedFiles) { + if(rp instanceof ISModelRegistrationProvider && splittedFiles) { + throw new RuntimeException(rp.getModelName() + " documentation can be only produced in a single file"); + } + this.splittedFiles = splittedFiles; } public void elaborateTree(final AccessType at, Tree> tree, File file, RegistrationProvider rp) throws Exception { @@ -66,45 +72,58 @@ public class TreeGenerator extends Generator { tree.elaborate(documentationNE); } + protected String getFileName(AccessType accessType) { + String modelName = rp.getModelName(); + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(modelName.toLowerCase().replaceAll(" ", "_")); + if(accessType!=null && splittedFiles) { + stringBuffer.append("_"); + stringBuffer.append(accessType.getName().toLowerCase()); + } + stringBuffer.append(EXTENSION); + return stringBuffer.toString(); + } + public void generate() throws Exception { + modelKnowledge.addRegistrationProvider(rp); modelKnowledge.createKnowledge(); - File is = getFile(IS_MODEL_FILENAME, true); File file = null; + if(!splittedFiles) { + file = getFile(getFileName(null), true); + } + for(AccessType at : AccessType.getModelTypes()) { - + if(splittedFiles) { + file = getFile(getFileName(at), true); + } switch (at) { case PROPERTY: - file = getFile(PROPERTIES_FILENAME, true); break; case RESOURCE: - file = getFile(ENTITIES_FILENAME, true); - Type type = TypeMapper.createTypeDefinition(AccessType.ENTITY.getTypeClass()); - writeTypeToFile(type, is); + if(rp instanceof ISModelRegistrationProvider) { + Type type = TypeMapper.createTypeDefinition(AccessType.ENTITY.getTypeClass()); + writeTypeToFile(type, file); + } break; case IS_RELATED_TO: - file = getFile(RELATIONS_FILENAME, true); - type = TypeMapper.createTypeDefinition(AccessType.RELATION.getTypeClass()); - writeTypeToFile(type, is); + if(rp instanceof ISModelRegistrationProvider) { + Type type = TypeMapper.createTypeDefinition(AccessType.RELATION.getTypeClass()); + writeTypeToFile(type, file); + } break; default: break; } - Type type = TypeMapper.createTypeDefinition(at.getTypeClass()); - writeTypeToFile(type, is); - Tree> tree = modelKnowledge.getClassesTree(at); - - if(!(rp instanceof ISModelRegistrationProvider)) { - elaborateTree(at, tree, file, rp); - } + elaborateTree(at, tree, file, rp); } 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 1b44400..b088b83 100644 --- a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java +++ b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java @@ -2,6 +2,7 @@ package org.gcube.informationsystem.utils.documentation; import java.util.ServiceLoader; +import org.gcube.informationsystem.discovery.ISModelRegistrationProvider; import org.gcube.informationsystem.discovery.RegistrationProvider; import org.gcube.informationsystem.utils.documentation.generator.TreeGenerator; import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator; @@ -15,10 +16,12 @@ public class GenerateTest { @Test public void testDocGeneration() throws Exception { DocumentationGenerator.setDefaultOffsetLevel(2); + ServiceLoader registrationProviders = ServiceLoader .load(RegistrationProvider.class); for(RegistrationProvider rp : registrationProviders) { TreeGenerator treeGenerator = new TreeGenerator(rp); + treeGenerator.setSplittedFiles(!(rp instanceof ISModelRegistrationProvider)); treeGenerator.generate(); } }