# HG changeset patch # User one # Date 1345674157 -32400 # Node ID 84dd614f141466e1acb4dec30825b18b87260332 # Parent bf7863a55cd6b1d4420ec94899898a6835fa8eac add LinkConvertGraph.java diff -r bf7863a55cd6 -r 84dd614f1414 src/howtouse/TestSaxParser.java --- a/src/howtouse/TestSaxParser.java Thu Aug 23 03:40:48 2012 +0900 +++ b/src/howtouse/TestSaxParser.java Thu Aug 23 07:22:37 2012 +0900 @@ -65,7 +65,7 @@ } public void startDocument() { - System.out.println("read start"); +// System.out.println("read start"); } public void startElement(String uri, String localName, String qName, @@ -121,7 +121,7 @@ } public void endDocument() { - System.out.println("end reading file."); +// System.out.println("end reading file."); } } diff -r bf7863a55cd6 -r 84dd614f1414 src/wikigraph/LinkConvertGraph.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/wikigraph/LinkConvertGraph.java Thu Aug 23 07:22:37 2012 +0900 @@ -0,0 +1,102 @@ +package wikigraph; + +import howtouse.TestSaxParser; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.xml.sax.SAXException; + +public class LinkConvertGraph { + + private String filename; + private FileInputStream fis; + private SAXParserFactory factory; + private SAXParser parser; + private TestSaxParser xmlParser; + + private HashMap> hash; + + + LinkConvertGraph() throws ParserConfigurationException, SAXException { + xmlParser = new TestSaxParser(); + factory = SAXParserFactory.newInstance(); + parser = factory.newSAXParser(); + } + + LinkConvertGraph(final String filename) throws FileNotFoundException, ParserConfigurationException, SAXException { + this.filename = filename; + fis = new FileInputStream(filename); + xmlParser = new TestSaxParser(); + factory = SAXParserFactory.newInstance(); + parser = factory.newSAXParser(); + } + + private void setFilename(final String filename) throws FileNotFoundException { + this.filename = filename; + fis = new FileInputStream(filename); + } + + private void parseXml() throws SAXException, IOException { + parser.parse(this.fis, this.xmlParser); + hash = xmlParser.getHash(); + } + + private HashMap> getHash() { + return hash; + } + + private void printHash() { + for (Map.Entry> entry : hash.entrySet()) { + String title = entry.getKey(); + System.out.println("title: " + title); + for (String link : entry.getValue()) { + System.out.println("\t"+link); + } + } + } + + public static void main(String[] args) { + final String filename = "./resource/article3.xml"; + try { + LinkConvertGraph lcg = new LinkConvertGraph(filename); + + lcg.parseXml(); + lcg.printHash(); + + + /* + FileInputStream fis = new FileInputStream(filename); + TestSaxParser xmlParser = new TestSaxParser(); + + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser parser = factory.newSAXParser(); + + parser.parse(fis, xmlParser ); + HashMap> hash; + hash = xmlParser.getHash(); +*/ + + + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (IOException e) { + System.err.println("Failed to parse xml"); + e.printStackTrace(); + } + + } +} diff -r bf7863a55cd6 -r 84dd614f1414 src/wikigraph/Neo4jTest.java --- a/src/wikigraph/Neo4jTest.java Thu Aug 23 03:40:48 2012 +0900 +++ b/src/wikigraph/Neo4jTest.java Thu Aug 23 07:22:37 2012 +0900 @@ -1,47 +1,120 @@ 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 names = new HashSet(); + + 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 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(); - Transaction tx = graphDb.beginTx(); - - Node firstNode = graphDb.createNode(); - firstNode.setProperty("name", "Jason Kidd"); - firstNode.setProperty("number", "2"); - - tx.success(); - - tx.finish(); - + HashMap hash = new HashMap(); + 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)); + } - for (Node node: graphOpe.getAllNodes()) { - System.out.println("ID="+ node.getId()); - for (String key: node.getPropertyKeys()) { - System.out.println(key + "=" + node.getProperty(key)); - } - System.out.println("--"); - } - - - - - - + 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); + + + tx.success(); + tx.finish(); graphDb.shutdown(); - - - - } - }