From 484690555abef8d9eff9391b42c4cd6f6eb4f807 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 6 Feb 2023 17:43:51 +0100 Subject: [PATCH] Refactoring --- .../discovery/ClassInformation.java | 5 --- .../discovery/knowledge/ModelKnowledge.java | 19 ++++++-- .../gcube/informationsystem/tree/Node.java | 31 +++++++++---- .../tree/NodeInformation.java | 13 ------ .../gcube/informationsystem/tree/Tree.java | 1 - .../types/knowledge/AddTypeToTreeAction.java | 44 +++++++++++++++++++ .../{toBeRemoved => }/UsageKnowledge.java | 2 +- 7 files changed, 82 insertions(+), 33 deletions(-) create mode 100644 src/main/java/org/gcube/informationsystem/types/knowledge/AddTypeToTreeAction.java rename src/main/java/org/gcube/informationsystem/types/knowledge/{toBeRemoved => }/UsageKnowledge.java (96%) diff --git a/src/main/java/org/gcube/informationsystem/discovery/ClassInformation.java b/src/main/java/org/gcube/informationsystem/discovery/ClassInformation.java index 311c3de..e786fbd 100644 --- a/src/main/java/org/gcube/informationsystem/discovery/ClassInformation.java +++ b/src/main/java/org/gcube/informationsystem/discovery/ClassInformation.java @@ -35,9 +35,4 @@ public class ClassInformation implements NodeInformation> { return ret; } - @Override - public void extraElaboration(Class t) { - // Nothing to do - } - } diff --git a/src/main/java/org/gcube/informationsystem/discovery/knowledge/ModelKnowledge.java b/src/main/java/org/gcube/informationsystem/discovery/knowledge/ModelKnowledge.java index fe63c35..c21d8c2 100644 --- a/src/main/java/org/gcube/informationsystem/discovery/knowledge/ModelKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/discovery/knowledge/ModelKnowledge.java @@ -8,22 +8,28 @@ import java.util.Set; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.Element; +import org.gcube.informationsystem.discovery.ClassInformation; import org.gcube.informationsystem.discovery.Discovery; import org.gcube.informationsystem.discovery.RegistrationProvider; import org.gcube.informationsystem.serialization.ElementMappingAction; import org.gcube.informationsystem.tree.AddElementToTreeAction; import org.gcube.informationsystem.tree.Tree; +import org.gcube.informationsystem.types.reference.Type; /** * @author Luca Frosini (ISTI - CNR) */ public class ModelKnowledge { - + + public static ModelKnowledge getInstance() { + return new ModelKnowledge(); + } + protected Map>> trees; - + protected Map> typesTree; protected Map> discoveries; - public ModelKnowledge() { + protected ModelKnowledge() { this.trees = new HashMap<>(); this.discoveries = new HashMap<>(); } @@ -39,13 +45,18 @@ public class ModelKnowledge { allPackages.addAll(rp.getPackagesToRegister()); } + ClassInformation classInformation = new ClassInformation(); + for(AccessType accessType : modelTypes) { Class clz = accessType.getTypeClass(); - Tree> tree = new Tree<>(clz, null); + Tree> tree = new Tree<>(clz, classInformation); trees.put(accessType, tree); AddElementToTreeAction aetta = new AddElementToTreeAction(tree); + + + Discovery discovery = new Discovery<>(clz); discoveries.put(accessType, discovery); discovery.addPackages(allPackages); diff --git a/src/main/java/org/gcube/informationsystem/tree/Node.java b/src/main/java/org/gcube/informationsystem/tree/Node.java index 29da37c..f9dca90 100644 --- a/src/main/java/org/gcube/informationsystem/tree/Node.java +++ b/src/main/java/org/gcube/informationsystem/tree/Node.java @@ -63,19 +63,32 @@ public class Node implements Comparable> { @Override public String toString() { - return createTree(0).toString(); + return printTree(0).toString(); } - private StringBuffer createTree(int level) { + private StringBuffer printTree(int level) { + StringBuffer stringBuffer = new StringBuffer(); - for (int i = 0; i < level; ++i) { - stringBuffer.append(Node.INDENTATION); - } - stringBuffer.append(tree.getNodeInformation().getIdentifier(t)); - for (Node child : children) { - stringBuffer.append("\n"); - stringBuffer.append(child.createTree(level+1)); + + NodeElaborator nodeElaborator = new NodeElaborator() { + + @Override + public void elaborate(Node node, int level) throws Exception { + for (int i = 0; i < level; ++i) { + stringBuffer.append(Node.INDENTATION); + } + stringBuffer.append(tree.getNodeInformation().getIdentifier(t)); + stringBuffer.append("\n"); + } + + }; + + try { + elaborate(nodeElaborator, level); + }catch (Exception e) { + throw new RuntimeException(e); } + return stringBuffer; } diff --git a/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java b/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java index 0ddbe21..846d5e9 100644 --- a/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java +++ b/src/main/java/org/gcube/informationsystem/tree/NodeInformation.java @@ -8,17 +8,4 @@ public interface NodeInformation { public abstract Set getParentIdentifiers(T root, T t); - public abstract void extraElaboration(T t); - - -// protected 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()); -// } } diff --git a/src/main/java/org/gcube/informationsystem/tree/Tree.java b/src/main/java/org/gcube/informationsystem/tree/Tree.java index f5d1db0..4022129 100644 --- a/src/main/java/org/gcube/informationsystem/tree/Tree.java +++ b/src/main/java/org/gcube/informationsystem/tree/Tree.java @@ -55,7 +55,6 @@ public class Tree { } this.locate.put(identifier, node); - this.ni.extraElaboration(t); return node; } diff --git a/src/main/java/org/gcube/informationsystem/types/knowledge/AddTypeToTreeAction.java b/src/main/java/org/gcube/informationsystem/types/knowledge/AddTypeToTreeAction.java new file mode 100644 index 0000000..d27716b --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/types/knowledge/AddTypeToTreeAction.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.informationsystem.types.knowledge; + +import org.gcube.informationsystem.base.reference.AccessType; +import org.gcube.informationsystem.base.reference.Element; +import org.gcube.informationsystem.discovery.DiscoveredElementAction; +import org.gcube.informationsystem.tree.Tree; +import org.gcube.informationsystem.types.TypeMapper; +import org.gcube.informationsystem.types.reference.Type; +import org.gcube.informationsystem.types.reference.entities.ResourceType; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public class AddTypeToTreeAction implements DiscoveredElementAction { + + protected Tree tree; + + public AddTypeToTreeAction(Tree tree) { + this.tree = tree; + } + + @Override + public void analizeElement(Class e) throws Exception { + Type type = TypeMapper.createTypeDefinition(e); + tree.addNode(type); + createUsageKnowledge(type); + } + + + protected 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()); + } + +} diff --git a/src/main/java/org/gcube/informationsystem/types/knowledge/toBeRemoved/UsageKnowledge.java b/src/main/java/org/gcube/informationsystem/types/knowledge/UsageKnowledge.java similarity index 96% rename from src/main/java/org/gcube/informationsystem/types/knowledge/toBeRemoved/UsageKnowledge.java rename to src/main/java/org/gcube/informationsystem/types/knowledge/UsageKnowledge.java index 05fa384..2e256a3 100644 --- a/src/main/java/org/gcube/informationsystem/types/knowledge/toBeRemoved/UsageKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/types/knowledge/UsageKnowledge.java @@ -1,4 +1,4 @@ -package org.gcube.informationsystem.types.knowledge.toBeRemoved; +package org.gcube.informationsystem.types.knowledge; import java.util.Collection; import java.util.LinkedHashMap;