information-system-model-do.../src/main/java/org/gcube/informationsystem/utils/documentation/generator/TreeGenerator.java

79 lines
2.3 KiB
Java

package org.gcube.informationsystem.utils.documentation.generator;
import java.util.Map;
import java.util.TreeMap;
import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.TypeMapper;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.utils.documentation.knowledge.Tree;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class TreeGenerator {
private static final Logger logger = LoggerFactory.getLogger(TreeGenerator.class);
protected Map<AccessType, Tree> types;
public TreeGenerator() {
types = new TreeMap<>();
}
public void addType(Type type) {
AccessType accessType = type.getAccessType();
if(types.get(accessType)==null) {
Type head = TypeMapper.createTypeDefinition(accessType.getTypeClass());
Tree tree = new Tree(head);
types.put(accessType, tree);
}
if(type.getName().compareTo(accessType.getName())==0) {
return;
}
Tree tree = types.get(accessType);
tree.addNode(type);
}
public void elaborateTree(AccessType at, Tree tree) {
logger.info("\n{}", tree.toString());
// elaborateList(propertyTypes);
//
// File f = getFile(ENTITIES_FILENAME, true);
// DocumentationGenerator edg = new EntityDocumentationGenerator(TypeMapper.createTypeDefinition(Entity.class));
// edg.setOffsetLevel(offsetLevel);
// StringBuffer sb = edg.generateSection();
// Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
//
// elaborateList(resourceTypes);
// elaborateList(facetTypes);
//
// f = getFile(RELATIONS_FILENAME, true);
// DocumentationGenerator rdg = new RelationDocumentationGenerator(TypeMapper.createTypeDefinition(Relation.class));
// rdg.setOffsetLevel(offsetLevel);
// sb = rdg.generateSection();
// Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
//
// elaborateList(isRelatedToTypes);
// elaborateList(consistsOfTypes);
}
public void generate() throws Exception {
AccessType[] accessTypes = new AccessType[] {
AccessType.PROPERTY,
AccessType.RESOURCE, AccessType.FACET,
AccessType.CONSISTS_OF, AccessType.IS_RELATED_TO};
for(AccessType at : accessTypes) {
Tree tree = types.get(at);
elaborateTree(at, tree);
}
}
}