diff --git a/src/main/java/org/gcube/informationsystem/model/discovery/ISMDiscovery.java b/src/main/java/org/gcube/informationsystem/model/discovery/ISMDiscovery.java deleted file mode 100644 index 65b86be..0000000 --- a/src/main/java/org/gcube/informationsystem/model/discovery/ISMDiscovery.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * - */ -package org.gcube.informationsystem.model.discovery; - -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.gcube.informationsystem.impl.utils.discovery.ReflectionUtility; -import org.gcube.informationsystem.model.ISManageable; -import org.gcube.informationsystem.model.annotations.ISProperty; -import org.gcube.informationsystem.model.embedded.Embedded; -import org.jgrapht.Graph; -import org.jgrapht.graph.DefaultDirectedGraph; -import org.jgrapht.graph.DefaultEdge; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author Luca Frosini (ISTI - CNR) - */ -public class ISMDiscovery { - - private static Logger logger = LoggerFactory.getLogger(ISMDiscovery.class); - - protected final Graph, DefaultEdge> graph; - - public Graph, DefaultEdge> getGraph() { - return graph; - } - - protected final Class root; - protected final Set> visited; - - public ISMDiscovery(Class root) { - this.root = root; - - this.graph = new DefaultDirectedGraph<>(DefaultEdge.class); - - this.visited = new HashSet<>(); - - this.graph.addVertex(root); - this.visited.add(root); - - } - - protected void addISM(Class clz, Class parent) { - graph.addEdge(parent, clz); - visited.add(clz); - logger.debug("Adding {} as children of {}", clz, parent); - } - - protected void analizeISM(Class clz) { - logger.trace(" --- Analizyng {}", clz.getCanonicalName()); - - if (visited.contains(clz)) { - logger.trace(" --------- discarding {} because was already managed", clz); - return; - } else { - graph.addVertex(clz); - - Class[] interfaces = clz.getInterfaces(); - - for (Class interfaceClass : interfaces) { - if (!root.isAssignableFrom(interfaceClass)) { - logger.trace(" --------- discarding {} because is not a {}", interfaceClass, - root.getClass().getSimpleName()); - continue; - } - - @SuppressWarnings("unchecked") - Class parent = (Class) interfaceClass; - - if (!visited.contains(parent)) { - analizeISM(parent); - } - - addISM(clz, parent); - - } - - if(root==Embedded.class){ - - for (Method m : clz.getDeclaredMethods()){ - m.setAccessible(true); - if(m.isAnnotationPresent(ISProperty.class)){ - if(root.isAssignableFrom(m.getReturnType())){ - @SuppressWarnings("unchecked") - Class type = (Class) m.getReturnType(); - analizeISM(type); - addISM(clz, type); - } - - } - - } - } - - logger.trace("{}", (Object[]) interfaces); - } - } - - public void discover() throws Exception { - - List> classes = ReflectionUtility.getClassesForPackage(root.getPackage()); - for (Class clz : classes) { - logger.trace("Analyzing {}", clz); - if (!clz.isInterface()) { - logger.trace("Discarding {} that is not an interface", clz); - continue; - } - - if (root.isAssignableFrom(clz)) { - @SuppressWarnings("unchecked") - Class ism = (Class) clz; - analizeISM(ism); - } - - } - - } - -} diff --git a/src/test/java/org/gcube/informationsystem/model/discovery/ISMDiscoveryTest.java b/src/test/java/org/gcube/informationsystem/model/discovery/ISMDiscoveryTest.java index d0e0c6c..e4dedbb 100644 --- a/src/test/java/org/gcube/informationsystem/model/discovery/ISMDiscoveryTest.java +++ b/src/test/java/org/gcube/informationsystem/model/discovery/ISMDiscoveryTest.java @@ -1,10 +1,9 @@ package org.gcube.informationsystem.model.discovery; +import org.gcube.informationsystem.impl.utils.discovery.ISMDiscovery; import org.gcube.informationsystem.model.embedded.Embedded; import org.gcube.informationsystem.model.entity.Entity; import org.gcube.informationsystem.model.relation.Relation; -import org.jgrapht.graph.DefaultEdge; -import org.jgrapht.traverse.BreadthFirstIterator; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,16 +16,18 @@ public class ISMDiscoveryTest { public void testEmbeddedDiscovery() throws Exception{ ISMDiscovery embeddedDiscovery = new ISMDiscovery<>(Embedded.class); embeddedDiscovery.discover(); + + for(Class embedded : embeddedDiscovery.getDiscovered()) { + logger.info("Going to create : {}", embedded); + } } @Test public void testEntityDiscovery() throws Exception{ ISMDiscovery entityDiscovery = new ISMDiscovery<>(Entity.class); entityDiscovery.discover(); - BreadthFirstIterator, DefaultEdge> breadthFirstIterator = new BreadthFirstIterator, DefaultEdge>(entityDiscovery.getGraph()); - while(breadthFirstIterator.hasNext()){ - Class entity = breadthFirstIterator.next(); + for(Class entity : entityDiscovery.getDiscovered()) { logger.info("Going to create : {}", entity); } } diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/DataBaseCreator.java b/src/test/java/org/gcube/informationsystem/resourceregistry/DataBaseCreator.java index 353ec10..7863142 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/DataBaseCreator.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/DataBaseCreator.java @@ -1,10 +1,7 @@ package org.gcube.informationsystem.resourceregistry; +import org.gcube.informationsystem.impl.utils.discovery.ISMDiscovery; import org.gcube.informationsystem.impl.utils.discovery.SchemaAction; -import org.gcube.informationsystem.model.discovery.ISMDiscovery; -import org.gcube.informationsystem.model.embedded.Embedded; -import org.gcube.informationsystem.model.entity.Entity; -import org.gcube.informationsystem.model.relation.Relation; import org.gcube.informationsystem.resourceregistry.dbinitialization.DatabaseEnvironment; import org.gcube.informationsystem.resourceregistry.dbinitialization.SchemaActionImpl; import org.junit.Test; @@ -12,47 +9,19 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DataBaseCreator { - + private static Logger logger = LoggerFactory.getLogger(ISMDiscovery.class); @Test - public void createDatabase() throws Exception{ + public void createDatabase() throws Exception { String db = DatabaseEnvironment.DB_URI; logger.info("Created DB {}", db); } - @SuppressWarnings("unchecked") @Test public void createTypes() throws Exception { - SchemaAction schemaAction = new SchemaActionImpl(); - - ISMDiscovery embeddedDiscovery = new ISMDiscovery<>(Embedded.class); - embeddedDiscovery.discover(); - - for(Class embedded : embeddedDiscovery.getDiscovered()) { - logger.info("Going to create : {}", embedded); - schemaAction.manageEmbeddedClass(embedded); - } - - ISMDiscovery entityDiscovery = new ISMDiscovery<>(Entity.class); - entityDiscovery.discover(); - - for(Class entity : entityDiscovery.getDiscovered()) { - logger.info("Going to create : {}", entity); - schemaAction.manageEntityClass(entity); - } - - - @SuppressWarnings("rawtypes") - ISMDiscovery relationDiscovery = new ISMDiscovery<>(Relation.class); - relationDiscovery.discover(); - - for(@SuppressWarnings("rawtypes") Class relation : relationDiscovery.getDiscovered()) { - logger.info("Going to create : {}", relation); - schemaAction.manageRelationClass(relation); - } - + ISMDiscovery.manageISM(schemaAction); } }