information-system-model/src/main/java/org/gcube/informationsystem/discovery/knowledge/ModelExtensionKnowledge.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();
}
}
}