Mercurial > hg > Members > nobuyasu > TestNeo4j
view src/wikigraph/Neo4jTest.java @ 18:7e4aa7037c7c draft
modify LinkToNode.java
author | one |
---|---|
date | Thu, 23 Aug 2012 18:49:47 +0900 |
parents | 84dd614f1414 |
children |
line wrap: on
line source
package wikigraph; import java.util.HashMap; import java.util.HashSet; import org.neo4j.graphdb.Direction; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Path; import org.neo4j.graphdb.RelationshipType; import org.neo4j.graphdb.Transaction; 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 org.neo4j.tooling.GlobalGraphOperations; public class Neo4jTest { public static HashSet<String> names = new HashSet<String>(); public enum RelTypes implements RelationshipType { FRIEND } public static void addName(String name) { names.add(name); } public static Node createNodeWithProperty(GraphDatabaseService graphDb, String name) { System.out.println("createNode name="+name); Node node = graphDb.createNode(); node.setProperty("name", name); return node; } public static void createNodes(GraphDatabaseService graphDb) { createNodeWithProperty(graphDb, "Alto Saotome"); createNodeWithProperty(graphDb, "Sheryl Nome"); createNodeWithProperty(graphDb, "Ranka Lee"); } public static void createRelationships(GraphDatabaseService graphDb) { Node alto = graphDb.getNodeById(2); Node sheryl = graphDb.getNodeById(3); Node ranka = graphDb.getNodeById(4); // Relationship relationship = alto.createRelationshipTo(sheryl, RelTypes.FRIEND); // alto.createRelationshipTo(ranka, RelTypes.FRIEND); sheryl.createRelationshipTo(ranka, RelTypes.FRIEND); ranka.createRelationshipTo(alto, RelTypes.FRIEND); } public static void printType(RelationshipType type) { System.out.println(type); } public static Traverser getFriends( final Node person) { TraversalDescription td = Traversal.description() .breadthFirst() .relationships( RelTypes.FRIEND, Direction.OUTGOING ) .evaluator( Evaluators.excludeStartPosition()); return td.traverse( person ); } public static void searchFriends(final Node node) { int numberOfFriends = 0; String output = node.getProperty("name") + "'s friends:\n"; Traverser friendsTraverser = getFriends( node ); for ( Path friendPath : friendsTraverser) { output += "At depth " + friendPath.length() + " => " + friendPath.endNode() .getProperty("name") + "\n"; numberOfFriends++; } output += "Number of friends found: " + numberOfFriends + "\n"; System.out.println(output); } public static void printAllNodes(GlobalGraphOperations graphOpe) { for (Node n: graphOpe.getAllNodes()) { System.out.println("ID="+ n.getId()); for (String key: n.getPropertyKeys()) { System.out.println(key + "=" + n.getProperty(key)); } System.out.println("--"); } } public static void main(String[] args) { GraphDatabaseService graphDb = new EmbeddedGraphDatabase("db"); GlobalGraphOperations graphOpe = GlobalGraphOperations.at(graphDb); Transaction tx = graphDb.beginTx(); HashMap<String,Long> hash = new HashMap<String,Long>(); for (Node n: graphOpe.getAllNodes()) { if (n.hasProperty("name")) hash.put((String)n.getProperty("name"), n.getId()); } for (String name : hash.keySet()) { System.out.println("name = "+ name + ", Id = "+ hash.get(name)); } addName("Alto Saotome"); addName("Sheryl Nome"); addName("Ranka Lee"); addName("Mikhail Blanc"); for (String name : names) { if (hash.get(name) == null) createNodeWithProperty(graphDb, name); } printAllNodes(graphOpe); printType(RelTypes.FRIEND); tx.success(); tx.finish(); graphDb.shutdown(); } }