diff --git a/pom.xml b/pom.xml
index 09d2d9d..c924b3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,11 @@
logback-classic
test
+
+ org.gcube.resource-management
+ gcube-model
+ test
+
\ No newline at end of file
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/ClassesDiscoveryGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java
similarity index 97%
rename from src/main/java/org/gcube/informationsystem/utils/documentation/ClassesDiscoveryGenerator.java
rename to src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java
index eb157f2..791401f 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/ClassesDiscoveryGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/ClassesDiscoveryGenerator.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.utils.documentation;
+package org.gcube.informationsystem.utils.documentation.generator;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/TypeListGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TypeListGenerator.java
similarity index 96%
rename from src/main/java/org/gcube/informationsystem/utils/documentation/TypeListGenerator.java
rename to src/main/java/org/gcube/informationsystem/utils/documentation/generator/TypeListGenerator.java
index f92b16e..5fc6c61 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/TypeListGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/generator/TypeListGenerator.java
@@ -1,4 +1,4 @@
-package org.gcube.informationsystem.utils.documentation;
+package org.gcube.informationsystem.utils.documentation.generator;
import java.io.File;
import java.io.IOException;
@@ -48,12 +48,15 @@ public class TypeListGenerator {
protected List isRelatedToTypes;
protected List consistsOfTypes;
+ protected int offsetLevel;
+
public TypeListGenerator() {
this.propertyTypes = new ArrayList<>();
this.resourceTypes = new ArrayList<>();
this.facetTypes = new ArrayList<>();
this.isRelatedToTypes = new ArrayList<>();
this.consistsOfTypes = new ArrayList<>();
+ this.offsetLevel = 2;
}
public List getResourceTypes() {
@@ -187,6 +190,7 @@ public class TypeListGenerator {
for(Type type : types) {
DocumentationGenerator dg = getDocumentationGeneratorInstance(clz, type);
+ dg.setOffsetLevel(offsetLevel);
StringBuffer sb = dg.generateSection();
Files.write(f.toPath(), sb.toString().getBytes(), StandardOpenOption.APPEND);
}
@@ -203,6 +207,7 @@ public class TypeListGenerator {
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);
@@ -211,6 +216,7 @@ public class TypeListGenerator {
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);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/FacetKnowledge.java b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/FacetKnowledge.java
deleted file mode 100644
index 343774d..0000000
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/FacetKnowledge.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.gcube.informationsystem.utils.documentation.knowledge;
-
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
-
-public class FacetKnowledge {
-
- private static FacetKnowledge singleton;
-
- public static FacetKnowledge getInstace() {
- if(FacetKnowledge.singleton==null) {
- FacetKnowledge.singleton = new FacetKnowledge();
- }
- return FacetKnowledge.singleton;
- }
-
- protected Map> map;
-
- private FacetKnowledge(){
- this.map = new LinkedHashMap<>();
- }
-
- protected void add(String typeName, LinkedEntity linkedEntity) {
- Set list = map.get(typeName);
- if(list==null) {
- list = new TreeSet<>();
- map.put(typeName, list);
- }
- list.add(linkedEntity);
- }
-
- public void add(LinkedEntity linkedEntity) {
- String source = linkedEntity.getSource();
- add(source, linkedEntity);
- String relation = linkedEntity.getRelation();
- add(relation, linkedEntity);
- String target = linkedEntity.getTarget();
- add(target, linkedEntity);
- }
-
- public void addAll(Collection linkedEntities) {
- for(LinkedEntity le : linkedEntities) {
- add(le);
- }
- }
-
- public Set getUsage(String typeName){
- Set list = map.get(typeName);
- return list;
- }
-
-}
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/ResourceKnowledge.java b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/ResourceKnowledge.java
deleted file mode 100644
index dde0ad6..0000000
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/ResourceKnowledge.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.gcube.informationsystem.utils.documentation.knowledge;
-
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
-
-public class ResourceKnowledge {
-
- private static ResourceKnowledge singleton;
-
- public static ResourceKnowledge getInstace() {
- if(ResourceKnowledge.singleton==null) {
- ResourceKnowledge.singleton = new ResourceKnowledge();
- }
- return ResourceKnowledge.singleton;
- }
-
- protected Map> map;
-
- private ResourceKnowledge(){
- this.map = new LinkedHashMap<>();
- }
-
- protected void add(String typeName, LinkedEntity linkedEntity) {
- Set list = map.get(typeName);
- if(list==null) {
- list = new TreeSet<>();
- map.put(typeName, list);
- }
- list.add(linkedEntity);
- }
-
- public void add(LinkedEntity linkedEntity) {
- String source = linkedEntity.getSource();
- add(source, linkedEntity);
- String relation = linkedEntity.getRelation();
- add(relation, linkedEntity);
- String target = linkedEntity.getTarget();
- add(target, linkedEntity);
- }
-
- public void addAll(List linkedEntities) {
- for(LinkedEntity le : linkedEntities) {
- add(le);
- }
- }
-
- public Set getUsage(String typeName){
- Set list = map.get(typeName);
- return list;
- }
-
-}
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/Tree.java b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/Tree.java
new file mode 100644
index 0000000..15d6822
--- /dev/null
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/Tree.java
@@ -0,0 +1,109 @@
+package org.gcube.informationsystem.utils.documentation.knowledge;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author ycoppel@google.com (Yohann Coppel)
+ *
+ * @param Object's type in the tree.
+ */
+public class Tree {
+
+ private T head;
+ private List> leafs;
+ private Tree parent = null;
+
+ private HashMap> locate = new HashMap>();
+
+ public Tree(T head) {
+ this.head = head;
+ this.leafs = new ArrayList>();
+ locate.put(head, this);
+ }
+
+ public void addLeaf(T parent, T leaf) {
+ if (locate.containsKey(parent)) {
+ locate.get(parent).addLeaf(leaf);
+ } else {
+ addLeaf(parent).addLeaf(leaf);
+ }
+ }
+
+ public Tree addLeaf(T leaf) {
+ Tree t = new Tree(leaf);
+ leafs.add(t);
+ t.parent = this;
+ t.locate = this.locate;
+ locate.put(leaf, t);
+ return t;
+ }
+
+ public Tree setAsParent(T parentRoot) {
+ Tree t = new Tree(parentRoot);
+ t.leafs.add(this);
+ this.parent = t;
+ t.locate = this.locate;
+ t.locate.put(head, this);
+ t.locate.put(parentRoot, t);
+ return t;
+ }
+
+ public T getHead() {
+ return head;
+ }
+
+ public Tree getTree(T element) {
+ return locate.get(element);
+ }
+
+ public Tree getParent() {
+ return parent;
+ }
+
+ public Collection getSuccessors(T root) {
+ Collection successors = new ArrayList();
+ Tree tree = getTree(root);
+ if (null != tree) {
+ for (Tree leaf : tree.leafs) {
+ successors.add(leaf.head);
+ }
+ }
+ return successors;
+ }
+
+ public Collection> getSubTrees() {
+ return leafs;
+ }
+
+ public static Collection getSuccessors(T of, Collection> in) {
+ for (Tree tree : in) {
+ if (tree.locate.containsKey(of)) {
+ return tree.getSuccessors(of);
+ }
+ }
+ return new ArrayList();
+ }
+
+ @Override
+ public String toString() {
+ return printTree(0);
+ }
+
+ private static final int indent = 2;
+
+ private String printTree(int increment) {
+ String s = "";
+ String inc = "";
+ for (int i = 0; i < increment; ++i) {
+ inc = inc + " ";
+ }
+ s = inc + head;
+ for (Tree child : leafs) {
+ s += "\n" + child.printTree(increment + indent);
+ }
+ return s;
+ }
+}
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/TypesKnowledge.java b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/TypesKnowledge.java
new file mode 100644
index 0000000..9ecc33b
--- /dev/null
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/TypesKnowledge.java
@@ -0,0 +1,45 @@
+package org.gcube.informationsystem.utils.documentation.knowledge;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.gcube.informationsystem.types.reference.Type;
+
+public class TypesKnowledge {
+
+ protected Map typeByName;
+ protected Map> typesByLevels;
+ protected Map levelOfTypes;
+ protected Map> children;
+
+ public TypesKnowledge() {
+ this.typeByName = new HashMap<>();
+ this.typesByLevels = new HashMap<>();
+ this.levelOfTypes = new HashMap<>();
+ this.children = new HashMap<>();
+ }
+
+ public void addType(T type) {
+ typeByName.put(type.getName(), type);
+ Set superClasses = type.getSuperClasses();
+ for(String superClass : superClasses) {
+
+ }
+ }
+
+ public Set getTypesByLevel(int level) {
+ return typesByLevels.get(level);
+ }
+
+ public int getTypeLevel(Type type) {
+ return getTypeLevel(type.getName());
+ }
+
+ public int getTypeLevel(String typeName) {
+ return levelOfTypes.get(typeName);
+ }
+
+
+}
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/UsageKnowledge.java b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/UsageKnowledge.java
new file mode 100644
index 0000000..0ef1806
--- /dev/null
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/knowledge/UsageKnowledge.java
@@ -0,0 +1,73 @@
+package org.gcube.informationsystem.utils.documentation.knowledge;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
+
+/**
+ * @author Luca Frosini (ISTI - CNR)
+ */
+public class UsageKnowledge {
+
+ private static UsageKnowledge facetKnowledge;
+ private static UsageKnowledge resourceKnowledge;
+
+ public static UsageKnowledge getFacetKnowledge() {
+ if(UsageKnowledge.facetKnowledge==null) {
+ UsageKnowledge.facetKnowledge = new UsageKnowledge();
+ }
+ return UsageKnowledge.facetKnowledge;
+ }
+
+ public static UsageKnowledge getResourceKnowledge() {
+ if(UsageKnowledge.resourceKnowledge==null) {
+ UsageKnowledge.resourceKnowledge = new UsageKnowledge();
+ }
+ return UsageKnowledge.resourceKnowledge;
+ }
+
+
+ protected Map> map;
+
+ private UsageKnowledge(){
+ this.map = new LinkedHashMap<>();
+ }
+
+ protected void add(String typeName, LinkedEntity linkedEntity) {
+ Set list = map.get(typeName);
+ if(list==null) {
+ list = new TreeSet<>();
+ map.put(typeName, list);
+ }
+ list.add(linkedEntity);
+ }
+
+ public void add(LinkedEntity linkedEntity) {
+ if(linkedEntity!=null) {
+ String source = linkedEntity.getSource();
+ add(source, linkedEntity);
+ String relation = linkedEntity.getRelation();
+ add(relation, linkedEntity);
+ String target = linkedEntity.getTarget();
+ add(target, linkedEntity);
+ }
+ }
+
+ public void addAll(Collection linkedEntities) {
+ if(linkedEntities!=null) {
+ for(LinkedEntity le : linkedEntities) {
+ add(le);
+ }
+ }
+ }
+
+ public Set getUsage(String typeName){
+ Set list = map.get(typeName);
+ return list;
+ }
+
+}
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java
index 2cdb0da..1c2d415 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/DocumentationGenerator.java
@@ -29,32 +29,30 @@ public abstract class DocumentationGenerator {
protected final Type type;
protected final AccessType requiredType;
- protected final String superClassToBeExcluded;
- protected final int requiredNumberOfColumns;
+ protected String superClassToBeExcluded;
+ protected int requiredNumberOfColumns;
+ protected int offsetLevel;
+ protected int level;
protected DocumentationGenerator(Type type, AccessType requiredType) {
- this(type, requiredType, DEFAULT_NUMBER_OF_COLUMNS, null);
- }
-
- protected DocumentationGenerator(Type type, AccessType requiredType, int requiredNumberOfColumns) {
- this(type, requiredType, requiredNumberOfColumns, null);
- }
-
- protected DocumentationGenerator(Type type, AccessType requiredType, String superClassToBeExcluded) {
- this(type, requiredType, DEFAULT_NUMBER_OF_COLUMNS, superClassToBeExcluded);
- }
-
- protected DocumentationGenerator(Type type, AccessType requiredType, int requiredNumberOfColumns, String superClassToBeExcluded) {
this.type = type;
this.requiredType = requiredType;
AccessType accessType = type.getAccessType();
if(accessType!=requiredType) {
throw new RuntimeException(type.getName() + " is not a " + requiredType.getName() + " type");
}
- this.requiredNumberOfColumns = requiredNumberOfColumns;
- this.superClassToBeExcluded = superClassToBeExcluded;
+ this.requiredNumberOfColumns = DEFAULT_NUMBER_OF_COLUMNS;
+ this.superClassToBeExcluded = null;
+ this.offsetLevel = 0;
}
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public void setOffsetLevel(int offsetLevel) {
+ this.offsetLevel = offsetLevel;
+ }
protected Row getPropertyFieldsBoldRow() {
Row row = new Row(RowType.NORMAL);
Cell name = new Cell();
@@ -273,6 +271,11 @@ public abstract class DocumentationGenerator {
return addCellSpanToRow(row, content, cellSpan);
}
+ protected Row getHeadingRowCellSpan(String content, int cellSpan) {
+ Row row = new Row(RowType.HEADING);
+ return addCellSpanToRow(row, content, cellSpan);
+ }
+
protected Table addPropertyRows(Table table, Set properties) {
table.appendRow(getPropertyFieldsBoldRow());
if(properties!=null && properties.size()>0) {
@@ -358,7 +361,8 @@ public abstract class DocumentationGenerator {
stringBuffer.append("\n");
String name = type.getName();
Section section = new Section();
- stringBuffer.append(section.generateSection(SectionType.HEADING_3, name));
+ SectionType sectionType = SectionType.values()[level+offsetLevel];
+ stringBuffer.append(section.generateSection(sectionType, name));
stringBuffer.append(type.getDescription());
stringBuffer.append("\n");
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/EntityDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/EntityDocumentationGenerator.java
index e4a6a9d..db01f89 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/EntityDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/EntityDocumentationGenerator.java
@@ -19,25 +19,16 @@ import org.gcube.informationsystem.utils.documentation.rst.table.Table;
public class EntityDocumentationGenerator extends DocumentationGenerator {
public EntityDocumentationGenerator(Type type) {
- super(type, AccessType.ENTITY, 4, TypeMapper.getType(EntityElement.class));
+ super(type, AccessType.ENTITY);
+ this.requiredNumberOfColumns = 4;
+ this.superClassToBeExcluded = TypeMapper.getType(EntityElement.class);
+ setLevel(0);
}
protected EntityDocumentationGenerator(Type type, AccessType requiredType) {
super(type, requiredType);
}
- protected EntityDocumentationGenerator(Type type, AccessType requiredType, int requiredNumberOfColumns) {
- super(type, requiredType, requiredNumberOfColumns);
- }
-
- protected EntityDocumentationGenerator(Type type, AccessType requiredType, String superClassToBeExcluded) {
- super(type, requiredType, superClassToBeExcluded);
- }
-
- protected EntityDocumentationGenerator(Type type, AccessType requiredType, int requiredNumberOfColumns, String superClassToBeExcluded) {
- super(type, requiredType, requiredNumberOfColumns, superClassToBeExcluded);
- }
-
protected Row getEntityHeadingRow() {
Row row = new Row(RowType.HEADING);
row = addCellSpanToRow(row, "Properties", requiredNumberOfColumns);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/FacetDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/FacetDocumentationGenerator.java
index d551103..d469340 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/FacetDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/FacetDocumentationGenerator.java
@@ -6,7 +6,7 @@ import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
import org.gcube.informationsystem.types.reference.properties.PropertyDefinition;
-import org.gcube.informationsystem.utils.documentation.knowledge.FacetKnowledge;
+import org.gcube.informationsystem.utils.documentation.knowledge.UsageKnowledge;
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
/**
@@ -16,6 +16,11 @@ public class FacetDocumentationGenerator extends EntityDocumentationGenerator {
public FacetDocumentationGenerator(Type type) {
super(type, AccessType.FACET);
+ int level = 1;
+ if(type.getName().compareTo(requiredType.getName())!=0) {
+ ++level;
+ }
+ setLevel(level);
}
@Override
@@ -28,7 +33,7 @@ public class FacetDocumentationGenerator extends EntityDocumentationGenerator {
table.appendRow(getKnownUsageBoldRow());
table.appendRow(getSourceTargetBoldRow());
- FacetKnowledge fk = FacetKnowledge.getInstace();
+ UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
Set usage = fk.getUsage(type.getName());
addLinkedEntities(table, usage);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/ResourceDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/ResourceDocumentationGenerator.java
index 089cb4d..c53cfa8 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/ResourceDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/entities/ResourceDocumentationGenerator.java
@@ -6,8 +6,7 @@ import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.types.reference.entities.ResourceType;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
-import org.gcube.informationsystem.utils.documentation.knowledge.FacetKnowledge;
-import org.gcube.informationsystem.utils.documentation.knowledge.ResourceKnowledge;
+import org.gcube.informationsystem.utils.documentation.knowledge.UsageKnowledge;
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
/**
@@ -17,10 +16,15 @@ public class ResourceDocumentationGenerator extends EntityDocumentationGenerator
public ResourceDocumentationGenerator(Type type) {
super(type,AccessType.RESOURCE);
+ int level = 1;
+ if(type.getName().compareTo(requiredType.getName())!=0) {
+ ++level;
+ }
+ setLevel(level);
ResourceType rt = (ResourceType) type;
- FacetKnowledge fk = FacetKnowledge.getInstace();
+ UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
fk.addAll(rt.getFacets());
- ResourceKnowledge rk = ResourceKnowledge.getInstace();
+ UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
rk.addAll(rt.getResources());
}
@@ -30,11 +34,11 @@ public class ResourceDocumentationGenerator extends EntityDocumentationGenerator
table.appendRow(getSourceTargetHeadingRow());
table.appendRow(getRowCellSpan("**Facets**", requiredNumberOfColumns));
ResourceType resourceType = (ResourceType) type;
- FacetKnowledge fk = FacetKnowledge.getInstace();
+ UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
Set facets = fk.getUsage(resourceType.getName());
addLinkedEntities(table, facets);
table.appendRow(getRowCellSpan("**Relations**", requiredNumberOfColumns));
- ResourceKnowledge rk = ResourceKnowledge.getInstace();
+ UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
Set resources = rk.getUsage(resourceType.getName());
addLinkedEntities(table, resources);
return table;
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/properties/PropertyDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/properties/PropertyDocumentationGenerator.java
index f021bdb..42c56a9 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/properties/PropertyDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/properties/PropertyDocumentationGenerator.java
@@ -17,7 +17,14 @@ import org.gcube.informationsystem.utils.documentation.rst.table.Table;
public class PropertyDocumentationGenerator extends DocumentationGenerator {
public PropertyDocumentationGenerator(Type type) {
- super(type, AccessType.PROPERTY, 4, TypeMapper.getType(PropertyElement.class));
+ super(type, AccessType.PROPERTY);
+ this.requiredNumberOfColumns = 4;
+ this.superClassToBeExcluded = TypeMapper.getType(PropertyElement.class);
+ int level = 0;
+ if(type.getName().compareTo(requiredType.getName())!=0) {
+ ++level;
+ }
+ setLevel(level);
}
@Override
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/ConsistsOfDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/ConsistsOfDocumentationGenerator.java
index 54e5936..0bfd104 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/ConsistsOfDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/ConsistsOfDocumentationGenerator.java
@@ -5,7 +5,7 @@ import java.util.Set;
import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
-import org.gcube.informationsystem.utils.documentation.knowledge.FacetKnowledge;
+import org.gcube.informationsystem.utils.documentation.knowledge.UsageKnowledge;
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
/**
@@ -15,6 +15,11 @@ public class ConsistsOfDocumentationGenerator extends RelationDocumentationGener
public ConsistsOfDocumentationGenerator(Type type) {
super(type, AccessType.CONSISTS_OF);
+ int level = 1;
+ if(type.getName().compareTo(requiredType.getName())!=0) {
+ ++level;
+ }
+ setLevel(level);
}
@Override
@@ -22,7 +27,8 @@ public class ConsistsOfDocumentationGenerator extends RelationDocumentationGener
Table table = super.getTable();
table.appendRow(getKnownUsageBoldRow());
- FacetKnowledge fk = FacetKnowledge.getInstace();
+ table.appendRow(getSourceTargetBoldRow());
+ UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
Set facets = fk.getUsage(type.getName());
addLinkedEntities(table, facets);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/IsRelatedToDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/IsRelatedToDocumentationGenerator.java
index 6a5abd4..acef10f 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/IsRelatedToDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/IsRelatedToDocumentationGenerator.java
@@ -5,7 +5,7 @@ import java.util.Set;
import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.types.reference.Type;
import org.gcube.informationsystem.types.reference.properties.LinkedEntity;
-import org.gcube.informationsystem.utils.documentation.knowledge.ResourceKnowledge;
+import org.gcube.informationsystem.utils.documentation.knowledge.UsageKnowledge;
import org.gcube.informationsystem.utils.documentation.rst.table.Table;
/**
@@ -15,6 +15,11 @@ public class IsRelatedToDocumentationGenerator extends RelationDocumentationGene
public IsRelatedToDocumentationGenerator(Type type) {
super(type, AccessType.IS_RELATED_TO);
+ int level = 1;
+ if(type.getName().compareTo(requiredType.getName())!=0) {
+ ++level;
+ }
+ setLevel(level);
}
@Override
@@ -22,7 +27,8 @@ public class IsRelatedToDocumentationGenerator extends RelationDocumentationGene
Table table = super.getTable();
table.appendRow(getKnownUsageBoldRow());
- ResourceKnowledge rk = ResourceKnowledge.getInstace();
+ table.appendRow(getSourceTargetBoldRow());
+ UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
Set resources = rk.getUsage(type.getName());
addLinkedEntities(table, resources);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/RelationDocumentationGenerator.java b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/RelationDocumentationGenerator.java
index 4932be7..931cb32 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/RelationDocumentationGenerator.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/model/relations/RelationDocumentationGenerator.java
@@ -21,16 +21,14 @@ import org.gcube.informationsystem.utils.documentation.rst.table.Table;
public class RelationDocumentationGenerator extends DocumentationGenerator {
public RelationDocumentationGenerator(Type type) {
- super(type, AccessType.RELATION, TypeMapper.getType(RelationElement.class));
+ super(type, AccessType.RELATION);
+ this.superClassToBeExcluded = TypeMapper.getType(RelationElement.class);
+ setLevel(0);
}
protected RelationDocumentationGenerator(Type type, AccessType requiredType) {
super(type, requiredType);
}
-
- protected RelationDocumentationGenerator(Type type, AccessType requiredType, String superClassToBeExcluded) {
- super(type, requiredType, superClassToBeExcluded);
- }
protected Row getTypeDefinitionRow(RelationType extends EntityType, ? extends EntityType> relationType) {
Row row = new Row(RowType.NORMAL);
@@ -64,13 +62,14 @@ public class RelationDocumentationGenerator extends DocumentationGenerator {
@Override
protected Table getTable() {
Table table = new Table();
- table.appendRow(getSourceTargetHeadingRow());
+ table.appendRow(getHeadingRowCellSpan("**Definition**", requiredNumberOfColumns));
- table.appendRow(getRowCellSpan("**Definition**", requiredNumberOfColumns));
+ table.appendRow(getSourceTargetBoldRow());
@SuppressWarnings("unchecked")
RelationType extends EntityType, ? extends EntityType> relationType = (RelationType extends EntityType, ? extends EntityType>) type;
table.appendRow(getTypeDefinitionRow(relationType));
+ table.appendRow(getRowCellSpan("**Properties**", requiredNumberOfColumns));
Set properties = type.getProperties();
table = addPropertyRows(table, properties);
diff --git a/src/main/java/org/gcube/informationsystem/utils/documentation/rst/Section.java b/src/main/java/org/gcube/informationsystem/utils/documentation/rst/Section.java
index 3adf5bd..af489a6 100644
--- a/src/main/java/org/gcube/informationsystem/utils/documentation/rst/Section.java
+++ b/src/main/java/org/gcube/informationsystem/utils/documentation/rst/Section.java
@@ -6,16 +6,18 @@ package org.gcube.informationsystem.utils.documentation.rst;
public class Section {
public enum SectionType {
- HEADING_1(true, "*"),
- HEADING_2(false, "="),
- HEADING_3(false, "-"),
- HEADING_4(false, "^");
+ HEADING_1(true, "#"),
+ HEADING_2(true, "*"),
+ HEADING_3(false, "="),
+ HEADING_4(false, "-"),
+ HEADING_5(false, "^"),
+ HEADING_6(false, "\"");
- boolean both;
+ boolean overline;
String separator;
- private SectionType(boolean both, String separator) {
- this.both = both;
+ private SectionType(boolean overline, String separator) {
+ this.overline = overline;
this.separator = separator;
}
}
@@ -31,7 +33,7 @@ public class Section {
public StringBuffer generateSection(SectionType sectionType, String sectionTitle) {
StringBuffer stringBuffer = new StringBuffer();
int lenght = sectionTitle.length();
- if(sectionType.both) {
+ if(sectionType.overline) {
stringBuffer.append(getSectionSeparation(sectionType.separator, lenght));
stringBuffer.append("\n");
}
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 5c7be06..ebe3574 100644
--- a/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java
+++ b/src/test/java/org/gcube/informationsystem/utils/documentation/GenerateTest.java
@@ -1,5 +1,6 @@
package org.gcube.informationsystem.utils.documentation;
+import org.gcube.informationsystem.utils.documentation.generator.ClassesDiscoveryGenerator;
import org.junit.Test;
/**