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("\"", "&quot;"); 184 str = str.replaceAll("\"", "&quot;");
187 str = str.replaceAll("'", "&#39;"); 185 str = str.replaceAll("'", "&#39;");
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 }