51 lines
1.5 KiB
Java
51 lines
1.5 KiB
Java
package org.gcube.informationsystem.discovery.knowledge;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import org.gcube.informationsystem.base.reference.AccessType;
|
|
import org.gcube.informationsystem.base.reference.Element;
|
|
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;
|
|
|
|
/**
|
|
* @author Luca Frosini (ISTI - CNR)
|
|
*/
|
|
public class ModelExtensionKnowledge {
|
|
|
|
protected RegistrationProvider registrationProvider;
|
|
|
|
protected Map<AccessType, Tree<Class<Element>>> trees;
|
|
|
|
public ModelExtensionKnowledge(RegistrationProvider registrationProvider) {
|
|
this.registrationProvider = registrationProvider;
|
|
this.trees = new HashMap<>();
|
|
}
|
|
|
|
public void createKnowledge() throws Exception {
|
|
|
|
AccessType[] modelTypes = AccessType.getModelTypes();
|
|
|
|
for(AccessType accessType : modelTypes) {
|
|
Class<Element> clz = accessType.getTypeClass();
|
|
|
|
Tree<Class<Element>> tree = new Tree<>(clz, null);
|
|
trees.put(accessType, tree);
|
|
AddElementToTreeAction aetta = new AddElementToTreeAction(tree);
|
|
|
|
Discovery<? extends Element> discovery = new Discovery<>(clz, false);
|
|
discovery.addRegistrationProvider(registrationProvider);
|
|
discovery.addDiscoveredElementActions(new ElementMappingAction());
|
|
discovery.addDiscoveredElementActions(aetta);
|
|
|
|
|
|
discovery.discover();
|
|
}
|
|
|
|
}
|
|
|
|
}
|