annotate src/wikigraph/LinkToNode.java @ 23:21902773e530 draft

fix ReadWikiLink.java
author one
date Tue, 28 Aug 2012 14:38:13 +0900
parents f9ef906676eb
children 71fe482aaf32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
1 package wikigraph;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
2
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
3 import java.util.HashMap;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
4
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
5 import org.neo4j.graphdb.Direction;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
6 import org.neo4j.graphdb.GraphDatabaseService;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
7 import org.neo4j.graphdb.Node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
8 import org.neo4j.graphdb.Path;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
9 import org.neo4j.graphdb.Relationship;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
10 import org.neo4j.graphdb.RelationshipType;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
11 import org.neo4j.graphdb.traversal.Evaluators;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
12 import org.neo4j.graphdb.traversal.TraversalDescription;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
13 import org.neo4j.graphdb.traversal.Traverser;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
14 import org.neo4j.kernel.Traversal;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
15 import org.neo4j.tooling.GlobalGraphOperations;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
16
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
17 import wikigraph.Neo4jTest.RelTypes;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
18
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
19
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
20 public class LinkToNode {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
21
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
22 GraphDatabaseService graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
23 GlobalGraphOperations graphOpe;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
24
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
25 public final static String PAGE_TITLE = "page_title";
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
26 public final static String PAGE_RANK = "page_rank";
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
27 private HashMap<String,Long> pageIdTable = new HashMap<String,Long>();
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
28 private HashMap<String,Long> pageRankTable = new HashMap<String,Long>();
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
29
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
30 private HashMap<String,WikiPage> wikiPageHash = new HashMap<String,WikiPage>();
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
31
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
32 public enum RelTypes implements RelationshipType {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
33 HAS_LINK
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
34 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
35
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
36 LinkToNode(GraphDatabaseService graphDb) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
37 this.graphDb = graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
38 this.graphOpe = GlobalGraphOperations.at(graphDb);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
39 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
40
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
41 LinkToNode(GraphDatabaseService graphDb, GlobalGraphOperations graphOpe) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
42 this.graphDb = graphDb;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
43 this.graphOpe = graphOpe;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
44 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
45
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
46 void setGraphDb(GraphDatabaseService graphDb) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
47 this.graphDb = graphDb;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
48 this.graphOpe = GlobalGraphOperations.at(graphDb);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
49 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
50
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
51 Long getId(String pageTitle) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
52 return pageIdTable.get(pageTitle);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
53 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
54
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
55 boolean isHasLink(Relationship rel) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
56 return rel.isType(RelTypes.HAS_LINK);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
57 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
58
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
59 private Node createNode() {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
60 return graphDb.createNode();
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
61 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
62
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
63 private Node createNodeWithProperty(String key, Object value) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
64 Node node = createNode();
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
65 node.setProperty(key,value);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
66 return node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
67 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
68
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
69 void initAllNodePageRank() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
70 for (Node node : graphOpe.getAllNodes()) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
71 setPageRank(node, 0);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
72 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
73 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
74
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
75
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
76 String getPageTitle(Node node) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
77 return (String) node.getProperty(PAGE_TITLE);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
78 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
79
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
80 Long getPageRank(Node node) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
81 return (Long) node.getProperty(PAGE_RANK);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
82 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
83
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
84 Node createNodeWithPageTitle(String pageTitle){
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
85 Node node = createNodeWithProperty(PAGE_TITLE, pageTitle);
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
86 pageIdTable.put(pageTitle, node.getId());
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
87 return node;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
88 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
89
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
90 Node setPageRank(Node node, long rank) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
91 node.setProperty(PAGE_RANK, rank);
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
92 return node;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
93 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
94
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
95
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
96 Node getNode(String name) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
97 long id = pageIdTable.get(name);
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
98 return graphDb.getNodeById(id);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
99 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
100
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
101 void setRelationship(Node node1, Node node2, RelTypes type) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
102 node1.createRelationshipTo(node2, type);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
103 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
104
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
105 void setHasLink(Node node1, Node node2) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
106 setRelationship(node1, node2, RelTypes.HAS_LINK);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
107 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
108
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
109 long searchPageTitleAllNodes() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
110 long AllNodeNumber = 0;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
111 for (Node n: graphOpe.getAllNodes()) {
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
112 if (n.hasProperty(PAGE_TITLE)) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
113 pageIdTable.put((String)n.getProperty(PAGE_TITLE), n.getId());
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
114 pageRankTable.put((String)n.getProperty(PAGE_TITLE), (Long) n.getProperty(PAGE_RANK));
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
115 AllNodeNumber++;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
116 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
117 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
118 return AllNodeNumber;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
119 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
120
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
121 long searchAllNodes() {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
122 long AllNodeNumber = 0;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
123 for (Node n: graphOpe.getAllNodes()) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
124 if (n.hasProperty(PAGE_TITLE)) {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
125 WikiPage wiki = new WikiPage(n);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
126 wikiPageHash.put((String)n.getProperty(PAGE_TITLE), wiki);
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
127 AllNodeNumber++;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
128 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
129 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
130 return AllNodeNumber;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
131 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
132
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
133 HashMap<String,Long> getPageIdTable() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
134 return pageIdTable;
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
135 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
136
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
137 HashMap<String,Long> getPageRankTable() {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
138 return pageRankTable;
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
139 }
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
140
23
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
141 HashMap<String,WikiPage> getWikiPageHash() {
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
142 return wikiPageHash;
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
143 }
21902773e530 fix ReadWikiLink.java
one
parents: 21
diff changeset
144
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
145 public void printAllNodes() {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
146 for (Node n: graphOpe.getAllNodes()) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
147 System.out.println("ID="+ n.getId());
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
148 for (String key: n.getPropertyKeys()) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
149 System.out.println(key + "=" + n.getProperty(key));
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
150 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
151 Iterable<Relationship> relIter = n.getRelationships(RelTypes.HAS_LINK);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
152 for (Relationship rel : relIter ) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
153 System.out.println(rel);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
154 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
155 System.out.println("--");
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
156 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
157
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
158 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
159
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
160 public Traverser getInHasLink( final Node person) {
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
161 TraversalDescription td = Traversal.description()
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
162 .breadthFirst()
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
163 .relationships( RelTypes.HAS_LINK, Direction.INCOMING )
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
164 .evaluator( Evaluators.excludeStartPosition());
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
165 return td.traverse( person );
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
166 }
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
167
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
168 public Traverser getOutHasLink( final Node person) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
169 TraversalDescription td = Traversal.description()
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
170 .breadthFirst()
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
171 .relationships( RelTypes.HAS_LINK, Direction.OUTGOING )
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
172 .evaluator( Evaluators.excludeStartPosition());
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
173 return td.traverse( person );
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
174 }
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
175
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
176
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
177
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
178 public void searchHasLinkOut(final Node node) {
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
179 int numberOfLinkPages = 0;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
180 String output = node.getProperty(PAGE_TITLE) + " have link pages:\n";
21
f9ef906676eb modify LinkToNode.java
one
parents: 20
diff changeset
181 Traverser hasLinkTraverser = getOutHasLink( node );
20
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
182 for ( Path hasLinkPath : hasLinkTraverser) {
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
183 output += "At depth " + hasLinkPath.length() + " => "
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
184 + hasLinkPath.endNode()
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
185 .getProperty(PAGE_TITLE) + "\n";
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
186 numberOfLinkPages++;
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
187 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
188 output += "Number of link pages: " + numberOfLinkPages + "\n";
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
189 System.out.println(output);
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
190 }
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
191
2c3a10047ec6 add ReadWikiLink.java and LinkToNode.java
one
parents:
diff changeset
192 }