diff --git a/src/main/java/org/gcube/informationsystem/discovery/knowledge/ClassInformation.java b/src/main/java/org/gcube/informationsystem/discovery/knowledge/ClassInformation.java index 22fb4c9..04b32f3 100644 --- a/src/main/java/org/gcube/informationsystem/discovery/knowledge/ClassInformation.java +++ b/src/main/java/org/gcube/informationsystem/discovery/knowledge/ClassInformation.java @@ -3,7 +3,6 @@ package org.gcube.informationsystem.discovery.knowledge; import java.util.LinkedHashSet; import java.util.Set; -import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.tree.NodeInformation; import org.gcube.informationsystem.types.TypeMapper; @@ -36,14 +35,4 @@ public class ClassInformation implements NodeInformation> { return ret; } - @Override - public AccessType getAccessType(Class clz) { - return AccessType.getAccessType(clz); - } - - @Override - public Class getRoot(AccessType accessType) { - return accessType.getTypeClass(); - } - } diff --git a/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java b/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java index d40f68b..e17b5b7 100644 --- a/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/knowledge/ModelKnowledge.java @@ -18,7 +18,6 @@ import org.gcube.informationsystem.model.reference.entities.Resource; import org.gcube.informationsystem.model.reference.relations.ConsistsOf; import org.gcube.informationsystem.model.reference.relations.IsRelatedTo; import org.gcube.informationsystem.model.reference.relations.Relation; -import org.gcube.informationsystem.tree.NodeInformation; import org.gcube.informationsystem.tree.Tree; import org.gcube.informationsystem.types.PropertyTypeName; import org.gcube.informationsystem.types.TypeMapper; @@ -36,18 +35,18 @@ import org.slf4j.LoggerFactory; /** * @author Luca Frosini (ISTI - CNR) */ -public class ModelKnowledge> { +public class ModelKnowledge> { private static final Logger logger = LoggerFactory.getLogger(ModelKnowledge.class); - protected NI nodeInformation; + protected TI typeInformation; protected Map> trees; protected UsageKnowledge> propertyUsage; protected Map> erTypesUsage; - public ModelKnowledge(NI nodeInformation) { - this.nodeInformation = nodeInformation; + public ModelKnowledge(TI typeInformation) { + this.typeInformation = typeInformation; reset(); } @@ -58,9 +57,9 @@ public class ModelKnowledge> { AccessType[] modelTypes = AccessType.getModelTypes(); for(AccessType accessType : modelTypes) { - T t = nodeInformation.getRoot(accessType); + T t = typeInformation.getRoot(accessType); - Tree tree = new Tree<>(t, nodeInformation); + Tree tree = new Tree<>(t, typeInformation); trees.put(accessType, tree); if(accessType == AccessType.PROPERTY) { @@ -104,7 +103,7 @@ public class ModelKnowledge> { if(properties==null || properties.size()==0) { return; } - String typeName = nodeInformation.getIdentifier(t); + String typeName = typeInformation.getIdentifier(t); for(PropertyDefinition propertyDefinition : properties) { PropertyTypeName propertyTypeName = ((PropertyDefinitionImpl) propertyDefinition).getPropertyTypeName(); if(propertyTypeName.isGenericType()) { @@ -133,7 +132,7 @@ public class ModelKnowledge> { Set toRetry = new HashSet<>(); for(T t : types) { - logger.trace("Going to add {}", nodeInformation.getIdentifier(t)); + logger.trace("Going to add {}", typeInformation.getIdentifier(t)); try { addType(t); }catch (RuntimeException e) { @@ -147,8 +146,8 @@ public class ModelKnowledge> { } public void addType(T t) { - AccessType accessType = nodeInformation.getAccessType(t); - String typeName = nodeInformation.getIdentifier(t); + AccessType accessType = typeInformation.getAccessType(t); + String typeName = typeInformation.getIdentifier(t); Tree tree = trees.get(accessType); tree.addNode(t); diff --git a/src/main/java/org/gcube/informationsystem/knowledge/TypeInformation.java b/src/main/java/org/gcube/informationsystem/knowledge/TypeInformation.java index ce46a9d..5720ac9 100644 --- a/src/main/java/org/gcube/informationsystem/knowledge/TypeInformation.java +++ b/src/main/java/org/gcube/informationsystem/knowledge/TypeInformation.java @@ -1,40 +1,12 @@ package org.gcube.informationsystem.knowledge; -import java.util.LinkedHashSet; -import java.util.Set; - import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.tree.NodeInformation; -import org.gcube.informationsystem.types.TypeMapper; -import org.gcube.informationsystem.types.reference.Type; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -public class TypeInformation implements NodeInformation { - - @Override - public String getIdentifier(Type type) { - return type.getName(); - } - - @Override - public Set getParentIdentifiers(Type root, Type type) { - if(type.getName().compareTo(root.getName())==0) { - return new LinkedHashSet<>(); - } - - return type.getExtendedTypes(); - } - - @Override - public AccessType getAccessType(Type type) { - return type.getAccessType(); - } - - @Override - public Type getRoot(AccessType accessType) { - return TypeMapper.createTypeDefinition(accessType.getTypeClass()); - } +public interface TypeInformation extends NodeInformation { + + public AccessType getAccessType(T t); + + public T getRoot(AccessType accessType); + } diff --git a/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java b/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java index 610e2de..ca1ba26 100644 --- a/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java +++ b/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java @@ -2,16 +2,10 @@ package org.gcube.informationsystem.tree; import java.util.Set; -import org.gcube.informationsystem.base.reference.AccessType; - public interface NodeInformation { public String getIdentifier(T t); public Set getParentIdentifiers(T root, T t); - public AccessType getAccessType(T t); - - public T getRoot(AccessType accessType); - } diff --git a/src/main/java/org/gcube/informationsystem/types/knowledge/TypeInformation.java b/src/main/java/org/gcube/informationsystem/types/knowledge/TypeInformation.java new file mode 100644 index 0000000..42cbc5b --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/types/knowledge/TypeInformation.java @@ -0,0 +1,39 @@ +package org.gcube.informationsystem.types.knowledge; + +import java.util.LinkedHashSet; +import java.util.Set; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.types.TypeMapper; +import org.gcube.informationsystem.types.reference.Type; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public class TypeInformation implements org.gcube.informationsystem.knowledge.TypeInformation { + + @Override + public String getIdentifier(Type type) { + return type.getName(); + } + + @Override + public Set getParentIdentifiers(Type root, Type type) { + if(type.getName().compareTo(root.getName())==0) { + return new LinkedHashSet<>(); + } + + return type.getExtendedTypes(); + } + + @Override + public AccessType getAccessType(Type type) { + return type.getAccessType(); + } + + @Override + public Type getRoot(AccessType accessType) { + return TypeMapper.createTypeDefinition(accessType.getTypeClass()); + } + +} diff --git a/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java b/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java index bceb722..eee74e0 100644 --- a/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java +++ b/src/test/java/org/gcube/informationsystem/knowledge/ModelKnowledgeTest.java @@ -15,6 +15,7 @@ import org.gcube.informationsystem.tree.Node; import org.gcube.informationsystem.tree.NodeElaborator; import org.gcube.informationsystem.tree.Tree; import org.gcube.informationsystem.types.TypeMapper; +import org.gcube.informationsystem.types.knowledge.TypeInformation; import org.gcube.informationsystem.types.reference.Type; import org.gcube.informationsystem.types.reference.properties.LinkedEntity; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition;