Mercurial > hg > Members > shoshi > jungle > bbs
comparison src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/local/JungleBulletinBoard.java @ 4:5acde010c6db
add jungle browsing system
author | tatsuki |
---|---|
date | Tue, 28 Jun 2016 19:45:55 +0900 |
parents | 64a72a7a0491 |
children | 6e91ad317eb0 |
comparison
equal
deleted
inserted
replaced
3:f3d30646c863 | 4:5acde010c6db |
---|---|
7 import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; | 7 import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor; |
8 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; | 8 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; |
9 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; | 9 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; |
10 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; | 10 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; |
11 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; | 11 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; |
12 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator; | 12 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode; |
13 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; | 13 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; |
14 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal; | |
15 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; | 14 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; |
16 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; | 15 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; |
17 import junit.framework.Assert; | |
18 | 16 |
19 import java.nio.ByteBuffer; | 17 import java.nio.ByteBuffer; |
20 import java.util.concurrent.atomic.AtomicInteger; | 18 import java.util.concurrent.atomic.AtomicInteger; |
21 | 19 |
22 public class JungleBulletinBoard implements | 20 public class JungleBulletinBoard implements |
71 tree = jungle.getTreeByName(_name); | 69 tree = jungle.getTreeByName(_name); |
72 editor = tree.getTreeEditor(); | 70 editor = tree.getTreeEditor(); |
73 editor = editor.putAttribute(root,"author", ByteBuffer.wrap(_author.getBytes())).b(); | 71 editor = editor.putAttribute(root,"author", ByteBuffer.wrap(_author.getBytes())).b(); |
74 editor = editor.putAttribute(root,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); | 72 editor = editor.putAttribute(root,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); |
75 either = editor.putAttribute(root,"mes", ByteBuffer.wrap(_initMessage.getBytes())); | 73 either = editor.putAttribute(root,"mes", ByteBuffer.wrap(_initMessage.getBytes())); |
76 | 74 |
77 if (either.isA()) { | 75 if (either.isA()) { |
78 throw new IllegalStateException(); | 76 throw new IllegalStateException(); |
79 } | 77 } |
80 editor = either.b(); | 78 editor = either.b(); |
81 editor.success(); | 79 editor.success(); |
102 } | 100 } |
103 editor = either.b(); | 101 editor = either.b(); |
104 editor = editor.putAttribute(path.add(size),"author", ByteBuffer.wrap(_author.getBytes())).b(); | 102 editor = editor.putAttribute(path.add(size),"author", ByteBuffer.wrap(_author.getBytes())).b(); |
105 editor = editor.putAttribute(path.add(size),"key", ByteBuffer.wrap(_editKey.getBytes())).b(); | 103 editor = editor.putAttribute(path.add(size),"key", ByteBuffer.wrap(_editKey.getBytes())).b(); |
106 either = editor.putAttribute(path.add(size),"mes", ByteBuffer.wrap(_message.getBytes())); | 104 either = editor.putAttribute(path.add(size),"mes", ByteBuffer.wrap(_message.getBytes())); |
107 | 105 |
108 if (either.isA()) { | 106 if (either.isA()) { |
109 throw new IllegalStateException(); | 107 throw new IllegalStateException(); |
110 } | 108 } |
111 editor = either.b(); | 109 editor = either.b(); |
112 }while (editor.success().isA()); | 110 }while (editor.success().isA()); |
123 editor = tree.getTreeEditor(); | 121 editor = tree.getTreeEditor(); |
124 | 122 |
125 editor = editor.putAttribute(path,"author", ByteBuffer.wrap(_author.getBytes())).b(); | 123 editor = editor.putAttribute(path,"author", ByteBuffer.wrap(_author.getBytes())).b(); |
126 editor = editor.putAttribute(path,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); | 124 editor = editor.putAttribute(path,"key", ByteBuffer.wrap(_editKey.getBytes())).b(); |
127 Either<Error, JungleTreeEditor> either = editor.putAttribute(path,"mes", ByteBuffer.wrap(_message.getBytes())); | 125 Either<Error, JungleTreeEditor> either = editor.putAttribute(path,"mes", ByteBuffer.wrap(_message.getBytes())); |
128 | 126 |
129 if (either.isA()) { | 127 if (either.isA()) { |
130 throw new IllegalStateException(); | 128 throw new IllegalStateException(); |
131 } | 129 } |
132 editor = either.b(); | 130 editor = either.b(); |
133 }while (editor.success().isA()); | 131 }while (editor.success().isA()); |
186 str = str.replaceAll("\"", """); | 184 str = str.replaceAll("\"", """); |
187 str = str.replaceAll("'", "'"); | 185 str = str.replaceAll("'", "'"); |
188 return str; | 186 return str; |
189 } | 187 } |
190 | 188 |
191 public GetAttributeImp getAttribute(String _bname, String _nodeNum, String revisionStr) { | 189 public GetAttributeImp getAttribute(String _bname, String nodePath,String revisionStr) { |
192 | 190 Long revision = Long.parseLong(revisionStr); |
193 DefaultNodePath path = new DefaultNodePath(); | 191 DefaultNodePath path = createNodePath(nodePath); |
194 try { | 192 JungleTree tree = jungle.getTreeByName(_bname); |
195 for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { | 193 JungleTree oldTree = tree.getOldTree(revision).b(); |
196 if (!_nodeNum.substring(count, count + 1).equals("/")) | 194 Either<Error, TreeNode> either = tree.getNodeOfPath(path); |
197 path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1))); | 195 if (either.isA()) |
198 } | 196 return new GetAttributeImp(new DefaultTreeNode()); |
199 } catch (Exception _e) { | 197 TreeNode node = either.b(); |
198 return new GetAttributeImp(node); | |
200 } | 199 } |
201 JungleTree tree = jungle.getTreeByName(_bname); | 200 |
202 System.out.println(tree.revision()); | 201 private DefaultNodePath createNodePath(String nodePath) { |
203 Long revision = Long.parseLong(revisionStr); | 202 DefaultNodePath path = new DefaultNodePath(); |
204 JungleTree oldTree = tree.getOldTree(revision).b(); | 203 try { |
205 System.out.println(oldTree.revision()); | 204 for (int count = 0; nodePath.substring(count, count + 1) != null; count++) { |
206 TreeNode node = oldTree.getRootNode(); | 205 if (!nodePath.substring(count, count + 1).equals("/")) |
207 | 206 path = path.add(Integer.parseInt(nodePath.substring(count, count + 1))); |
208 DefaultTraverser traverser = new DefaultTraverser(); | 207 } |
209 DefaultEvaluator evaluator = new DefaultEvaluator(path); | 208 } catch (Exception _e) { |
210 Either<Error, Traversal> ret = traverser.traverse(node, evaluator); | 209 } |
211 if (ret.isA()) { | 210 return path; |
212 Assert.fail(); | |
213 } | 211 } |
214 | |
215 Traversal traversal = ret.b(); | |
216 TreeNode target = traversal.destination(); | |
217 return new GetAttributeImp(target); | |
218 } | |
219 } | 212 } |