package org.lrg.hindsight.classes; import org.lrg.outcode.IHindsight; import org.lrg.outcode.activator.GraphDB; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Label; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.ResourceIterator; import org.neo4j.graphdb.Transaction; import com.salexandru.xcore.utils.interfaces.Group; import com.salexandru.xcore.utils.interfaces.IRelationBuilder; import com.salexandru.xcore.utils.metaAnnotation.RelationBuilder; import outcode.metamodel.entity.XClass; import outcode.metamodel.entity.XClassVersion; import outcode.metamodel.factory.Factory; @RelationBuilder public class RevisionGroup implements IRelationBuilder<XClassVersion, XClass> { @Override public Group<XClassVersion> buildGroup(XClass entity) { Group<XClassVersion> res = new Group<>(); GraphDatabaseService dbService = GraphDB.instance.getDB(); Transaction tx = dbService.beginTx(); ResourceIterator<Node> allArticles = dbService.findNodes(Label.label("Type")); while (allArticles.hasNext()) { Node node = allArticles.next(); if (node.getProperty(IHindsight.NAME).equals(entity.getUnderlyingObject().getElementName())) { res.add(Factory.getInstance().createXClassVersion(node)); } } allArticles.close(); tx.success(); return res; } }