|
|
|
@ -3,7 +3,9 @@ package org.gcube.informationsystem.utils.documentation.knowledge;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
import org.gcube.informationsystem.base.reference.AccessType;
|
|
|
|
|
import org.gcube.informationsystem.types.reference.Type;
|
|
|
|
|
import org.gcube.informationsystem.types.reference.entities.ResourceType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
|
|
@ -26,20 +28,36 @@ public class Tree {
|
|
|
|
|
this.allowMultipleInheritance = allowMultipleInheritance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void addNode(Type t) {
|
|
|
|
|
if(root.getType().getName().compareTo(t.getName())==0) {
|
|
|
|
|
public void createUsageKnowledge(Type type) {
|
|
|
|
|
if(type.getAccessType() != AccessType.RESOURCE) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
ResourceType rt = (ResourceType) type;
|
|
|
|
|
UsageKnowledge fk = UsageKnowledge.getFacetKnowledge();
|
|
|
|
|
fk.addAll(rt.getFacets());
|
|
|
|
|
UsageKnowledge rk = UsageKnowledge.getResourceKnowledge();
|
|
|
|
|
rk.addAll(rt.getResources());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void addNode(Type type) {
|
|
|
|
|
if(root.getType().getName().compareTo(type.getName())==0) {
|
|
|
|
|
// Root has been already added
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Set<String> superClasses = t.getSuperClasses();
|
|
|
|
|
|
|
|
|
|
createUsageKnowledge(type);
|
|
|
|
|
|
|
|
|
|
Set<String> superClasses = type.getSuperClasses();
|
|
|
|
|
|
|
|
|
|
String name = type.getName();
|
|
|
|
|
for(String superClass : superClasses) {
|
|
|
|
|
Node parent = locate.get(superClass);
|
|
|
|
|
if(parent==null) {
|
|
|
|
|
throw new RuntimeException("I can find parent Node for " + t.getName() + ". Missing parent is " + superClass);
|
|
|
|
|
throw new RuntimeException("I can find parent Node for " + name + ". Missing parent is " + superClass);
|
|
|
|
|
}
|
|
|
|
|
Node node = new Node(t);
|
|
|
|
|
Node node = new Node(type);
|
|
|
|
|
parent.addChild(node);
|
|
|
|
|
locate.put(t.getName(), node);
|
|
|
|
|
locate.put(name, node);
|
|
|
|
|
if(!allowMultipleInheritance) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|