package esl.cuenet.ranking; import com.mongodb.BasicDBObject; import esl.cuenet.query.drivers.mongodb.MongoDB; import esl.cuenet.ranking.network.NeoEntityBase; import esl.cuenet.source.accessors.Utils; import esl.system.SysLoggerUtils; import org.apache.commons.io.FileUtils; import org.apache.log4j.Logger; import org.junit.BeforeClass; import org.junit.Test; import org.neo4j.graphdb.*; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.index.IndexHits; import org.neo4j.graphdb.traversal.Evaluators; import org.neo4j.graphdb.traversal.TraversalDescription; import org.neo4j.graphdb.traversal.Traverser; import org.neo4j.kernel.EmbeddedGraphDatabase; import org.neo4j.kernel.Traversal; import java.io.File; import java.io.IOException; import java.util.*; public class UnifiedEntityList { private static Logger logger = Logger.getLogger(UnifiedEntityList.class); static String directory = "/data/graph_db/email"; @BeforeClass public static void setup() { SysLoggerUtils.initLogger(); logger.info("Deleting Files in " + directory); File[] files = (new File(directory)).listFiles(); if (files == null) files = new File[]{}; for (File file: files) FileUtils.deleteQuietly(file); } @Test public void random() { File storeTempDir = null; try { storeTempDir = new File(FileUtils.getTempDirectoryPath() + File.separator + System.currentTimeMillis()); logger.info("Creating temp graph db at: " + storeTempDir.getAbsolutePath()); FileUtils.forceMkdir(storeTempDir); } catch (IOException e) { e.printStackTrace(); } GraphDatabaseService g1 = new EmbeddedGraphDatabase(storeTempDir.getAbsolutePath()); new NeoEntityBase(g1); g1.shutdown(); try { FileUtils.deleteDirectory(storeTempDir); logger.info("Deleted temp db: " + storeTempDir.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } @Test public void constructEntities() { GraphDatabaseService g = new EmbeddedGraphDatabase(directory); NeoEntityBase entityBase = new NeoEntityBase(g); Transaction tx = g.beginTx(); try { entityBase.construct(); tx.success(); } catch (Exception e) { e.printStackTrace(); tx.failure(); } finally { tx.finish(); g.shutdown(); } g = new EmbeddedGraphDatabase(directory); Index<Node> xIndex = g.index().forNodes(NeoEntityBase.ENT_GRAPH_LITERAL_INDEX); IndexHits<Node> hits = xIndex.get(EntityBase.TEXT, "arjun.satish@gmail.com"); Node hit = hits.getSingle(); entityBase = new NeoEntityBase(g); Node entity = hit.getRelationships(Direction.INCOMING).iterator().next().getStartNode(); for (Relationship rel: entity.getRelationships(Direction.OUTGOING)) { logger.info(" (" + rel.getProperty(EntityBase.TYPE) + ") " + rel.getEndNode().getProperty(EntityBase.TEXT)); } URINode node = entityBase.lookup(EntityBase.V_EMAIL, "arjunmv@gmail.com"); for (TypedEdge edge: node.getAllRelationships()) { logger.info(" >>> " + edge.getProperty(EntityBase.TYPE) + " <<< " + edge.getEndNode().getProperty(EntityBase.TEXT)); } g.shutdown(); } }