Refactoring

This commit is contained in:
Luca Frosini 2023-02-06 17:43:51 +01:00
parent 446adc09a1
commit 484690555a
7 changed files with 82 additions and 33 deletions

View File

@ -35,9 +35,4 @@ public class ClassInformation implements NodeInformation<Class<Element>> {
return ret; return ret;
} }
@Override
public void extraElaboration(Class<Element> t) {
// Nothing to do
}
} }

View File

@ -8,22 +8,28 @@ import java.util.Set;
import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.base.reference.AccessType;
import org.gcube.informationsystem.base.reference.Element; import org.gcube.informationsystem.base.reference.Element;
import org.gcube.informationsystem.discovery.ClassInformation;
import org.gcube.informationsystem.discovery.Discovery; import org.gcube.informationsystem.discovery.Discovery;
import org.gcube.informationsystem.discovery.RegistrationProvider; import org.gcube.informationsystem.discovery.RegistrationProvider;
import org.gcube.informationsystem.serialization.ElementMappingAction; import org.gcube.informationsystem.serialization.ElementMappingAction;
import org.gcube.informationsystem.tree.AddElementToTreeAction; import org.gcube.informationsystem.tree.AddElementToTreeAction;
import org.gcube.informationsystem.tree.Tree; import org.gcube.informationsystem.tree.Tree;
import org.gcube.informationsystem.types.reference.Type;
/** /**
* @author Luca Frosini (ISTI - CNR) * @author Luca Frosini (ISTI - CNR)
*/ */
public class ModelKnowledge { public class ModelKnowledge {
public static ModelKnowledge getInstance() {
return new ModelKnowledge();
}
protected Map<AccessType, Tree<Class<Element>>> trees; protected Map<AccessType, Tree<Class<Element>>> trees;
protected Map<AccessType, Tree<Type>> typesTree;
protected Map<AccessType, Discovery<? extends Element>> discoveries; protected Map<AccessType, Discovery<? extends Element>> discoveries;
public ModelKnowledge() { protected ModelKnowledge() {
this.trees = new HashMap<>(); this.trees = new HashMap<>();
this.discoveries = new HashMap<>(); this.discoveries = new HashMap<>();
} }
@ -39,13 +45,18 @@ public class ModelKnowledge {
allPackages.addAll(rp.getPackagesToRegister()); allPackages.addAll(rp.getPackagesToRegister());
} }
ClassInformation classInformation = new ClassInformation();
for(AccessType accessType : modelTypes) { for(AccessType accessType : modelTypes) {
Class<Element> clz = accessType.getTypeClass(); Class<Element> clz = accessType.getTypeClass();
Tree<Class<Element>> tree = new Tree<>(clz, null); Tree<Class<Element>> tree = new Tree<>(clz, classInformation);
trees.put(accessType, tree); trees.put(accessType, tree);
AddElementToTreeAction aetta = new AddElementToTreeAction(tree); AddElementToTreeAction aetta = new AddElementToTreeAction(tree);
Discovery<? extends Element> discovery = new Discovery<>(clz); Discovery<? extends Element> discovery = new Discovery<>(clz);
discoveries.put(accessType, discovery); discoveries.put(accessType, discovery);
discovery.addPackages(allPackages); discovery.addPackages(allPackages);

View File

@ -63,19 +63,32 @@ public class Node<T> implements Comparable<Node<T>> {
@Override @Override
public String toString() { 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(); StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < level; ++i) {
stringBuffer.append(Node.INDENTATION); NodeElaborator<T> nodeElaborator = new NodeElaborator<T>() {
}
stringBuffer.append(tree.getNodeInformation().getIdentifier(t)); @Override
for (Node<T> child : children) { public void elaborate(Node<T> node, int level) throws Exception {
stringBuffer.append("\n"); for (int i = 0; i < level; ++i) {
stringBuffer.append(child.createTree(level+1)); 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; return stringBuffer;
} }

View File

@ -8,17 +8,4 @@ public interface NodeInformation<T> {
public abstract Set<String> getParentIdentifiers(T root, T t); public abstract Set<String> 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());
// }
} }

View File

@ -55,7 +55,6 @@ public class Tree<T> {
} }
this.locate.put(identifier, node); this.locate.put(identifier, node);
this.ni.extraElaboration(t);
return node; return node;
} }

View File

@ -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<Element> {
protected Tree<Type> tree;
public AddTypeToTreeAction(Tree<Type> tree) {
this.tree = tree;
}
@Override
public void analizeElement(Class<Element> 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());
}
}

View File

@ -1,4 +1,4 @@
package org.gcube.informationsystem.types.knowledge.toBeRemoved; package org.gcube.informationsystem.types.knowledge;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;