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 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); } } }