improved doc generation
This commit is contained in:
parent
af0965ef94
commit
ad21ec0b7c
|
@ -1,5 +1,2 @@
|
||||||
/target/
|
/target/
|
||||||
/entities.rst
|
/*.rst
|
||||||
/properties.rst
|
|
||||||
/relations.rst
|
|
||||||
/is-model.rst
|
|
|
@ -22,16 +22,22 @@ public class TreeGenerator extends Generator {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class);
|
private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class);
|
||||||
|
|
||||||
public static final String IS_MODEL_FILENAME = "is-model.rst";
|
public static final String EXTENSION = ".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";
|
|
||||||
|
|
||||||
protected RegistrationProvider rp;
|
protected RegistrationProvider rp;
|
||||||
|
protected boolean splittedFiles;
|
||||||
|
|
||||||
public TreeGenerator(RegistrationProvider rp) {
|
public TreeGenerator(RegistrationProvider rp) {
|
||||||
super();
|
super();
|
||||||
this.rp = rp;
|
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<Class<Element>> tree, File file, RegistrationProvider rp) throws Exception {
|
public void elaborateTree(final AccessType at, Tree<Class<Element>> tree, File file, RegistrationProvider rp) throws Exception {
|
||||||
|
@ -66,45 +72,58 @@ public class TreeGenerator extends Generator {
|
||||||
tree.elaborate(documentationNE);
|
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 {
|
public void generate() throws Exception {
|
||||||
|
|
||||||
|
modelKnowledge.addRegistrationProvider(rp);
|
||||||
modelKnowledge.createKnowledge();
|
modelKnowledge.createKnowledge();
|
||||||
|
|
||||||
File is = getFile(IS_MODEL_FILENAME, true);
|
|
||||||
File file = null;
|
File file = null;
|
||||||
|
|
||||||
|
if(!splittedFiles) {
|
||||||
|
file = getFile(getFileName(null), true);
|
||||||
|
}
|
||||||
|
|
||||||
for(AccessType at : AccessType.getModelTypes()) {
|
for(AccessType at : AccessType.getModelTypes()) {
|
||||||
|
if(splittedFiles) {
|
||||||
|
file = getFile(getFileName(at), true);
|
||||||
|
}
|
||||||
|
|
||||||
switch (at) {
|
switch (at) {
|
||||||
case PROPERTY:
|
case PROPERTY:
|
||||||
file = getFile(PROPERTIES_FILENAME, true);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RESOURCE:
|
case RESOURCE:
|
||||||
file = getFile(ENTITIES_FILENAME, true);
|
if(rp instanceof ISModelRegistrationProvider) {
|
||||||
Type type = TypeMapper.createTypeDefinition(AccessType.ENTITY.getTypeClass());
|
Type type = TypeMapper.createTypeDefinition(AccessType.ENTITY.getTypeClass());
|
||||||
writeTypeToFile(type, is);
|
writeTypeToFile(type, file);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IS_RELATED_TO:
|
case IS_RELATED_TO:
|
||||||
file = getFile(RELATIONS_FILENAME, true);
|
if(rp instanceof ISModelRegistrationProvider) {
|
||||||
type = TypeMapper.createTypeDefinition(AccessType.RELATION.getTypeClass());
|
Type type = TypeMapper.createTypeDefinition(AccessType.RELATION.getTypeClass());
|
||||||
writeTypeToFile(type, is);
|
writeTypeToFile(type, file);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Type type = TypeMapper.createTypeDefinition(at.getTypeClass());
|
|
||||||
writeTypeToFile(type, is);
|
|
||||||
|
|
||||||
Tree<Class<Element>> tree = modelKnowledge.getClassesTree(at);
|
Tree<Class<Element>> tree = modelKnowledge.getClassesTree(at);
|
||||||
|
elaborateTree(at, tree, file, rp);
|
||||||
if(!(rp instanceof ISModelRegistrationProvider)) {
|
|
||||||
elaborateTree(at, tree, file, rp);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.gcube.informationsystem.utils.documentation;
|
||||||
|
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
|
import org.gcube.informationsystem.discovery.ISModelRegistrationProvider;
|
||||||
import org.gcube.informationsystem.discovery.RegistrationProvider;
|
import org.gcube.informationsystem.discovery.RegistrationProvider;
|
||||||
import org.gcube.informationsystem.utils.documentation.generator.TreeGenerator;
|
import org.gcube.informationsystem.utils.documentation.generator.TreeGenerator;
|
||||||
import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator;
|
import org.gcube.informationsystem.utils.documentation.model.DocumentationGenerator;
|
||||||
|
@ -15,10 +16,12 @@ public class GenerateTest {
|
||||||
@Test
|
@Test
|
||||||
public void testDocGeneration() throws Exception {
|
public void testDocGeneration() throws Exception {
|
||||||
DocumentationGenerator.setDefaultOffsetLevel(2);
|
DocumentationGenerator.setDefaultOffsetLevel(2);
|
||||||
|
|
||||||
ServiceLoader<? extends RegistrationProvider> registrationProviders = ServiceLoader
|
ServiceLoader<? extends RegistrationProvider> registrationProviders = ServiceLoader
|
||||||
.load(RegistrationProvider.class);
|
.load(RegistrationProvider.class);
|
||||||
for(RegistrationProvider rp : registrationProviders) {
|
for(RegistrationProvider rp : registrationProviders) {
|
||||||
TreeGenerator treeGenerator = new TreeGenerator(rp);
|
TreeGenerator treeGenerator = new TreeGenerator(rp);
|
||||||
|
treeGenerator.setSplittedFiles(!(rp instanceof ISModelRegistrationProvider));
|
||||||
treeGenerator.generate();
|
treeGenerator.generate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue