comparison src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/browsing/JungleBrowsingBulletinBoard.java @ 10:6e91ad317eb0

fix
author suruga
date Wed, 19 Jul 2017 18:07:30 +0900
parents 6c584862fe93
children
comparison
equal deleted inserted replaced
9:d9a9154a075e 10:6e91ad317eb0
1 package jp.ac.u_ryukyu.ie.cr.bbs.browsing; 1 package jp.ac.u_ryukyu.ie.cr.bbs.browsing;
2
3 2
4 import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle; 3 import jp.ac.u_ryukyu.ie.cr.jungle.DefaultJungle;
5 import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; 4 import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
6 import jp.ac.u_ryukyu.ie.cr.jungle.JungleTree;
7 import jp.ac.u_ryukyu.ie.cr.jungle.JungleTreeEditor;
8 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; 5 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children;
9 import jp.ac.u_ryukyu.ie.cr.jungle.store.NodePath; 6 import jp.ac.u_ryukyu.ie.cr.jungle.query.traverser.InterfaceTraverser;
10 import jp.ac.u_ryukyu.ie.cr.jungle.store.NulIterator; 7 import jp.ac.u_ryukyu.ie.cr.jungle.store.NulIterator;
11 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath; 8 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.DefaultNodePath;
12 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; 9 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
13 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; 10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
14 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNodeChildren; 11 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor;
15 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode; 12 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.Default.DefaultTreeNode;
13 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
14 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNodeChildren;
16 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; 15 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
17 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser; 16 import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
18 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; 17 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
19 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; 18 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
19
20 import java.nio.ByteBuffer; 20 import java.nio.ByteBuffer;
21 import java.util.Iterator; 21 import java.util.Iterator;
22 22
23 public class JungleBrowsingBulletinBoard implements 23 public class JungleBrowsingBulletinBoard implements
24 BrowsingBulletinBoard { 24 BrowsingBulletinBoard {
25 private final Jungle jungle; 25 private final Jungle jungle;
26 26
27 public JungleBrowsingBulletinBoard() { 27 public JungleBrowsingBulletinBoard() {
28 jungle = new DefaultJungle(null, "hoge", new DefaultTreeEditor( 28 jungle = new DefaultJungle(null, "hoge");
29 new DefaultTraverser()));
30 jungle.createNewTree("boards"); 29 jungle.createNewTree("boards");
31 } 30 }
32 31
33 public JungleBrowsingBulletinBoard(Jungle jungle) { 32 public JungleBrowsingBulletinBoard(Jungle jungle) {
34 if (jungle.getTreeByName("boards") == null) 33 if (jungle.getTreeByName("boards") == null)
50 49
51 return new IterableConverter<String, TreeNode>(chs, converter); 50 return new IterableConverter<String, TreeNode>(chs, converter);
52 } 51 }
53 52
54 public void createBoards(final String _name) { 53 public void createBoards(final String _name) {
55 createBoards(_name, new DefaultTreeNode()); 54 createBoards(_name,new DefaultTreeNode());
56 } 55 }
57 public void createBoards(final String _name, TreeNode rootNode) { 56 public void createBoards(final String _name, TreeNode rootNode) {
58 if (null == jungle.createNewTree(_name, rootNode)) { 57 if (null == jungle.createNewTree(_name, rootNode)) {
59 throw new IllegalStateException(); 58 throw new IllegalStateException();
60 } 59 }
61 JungleTree tree = jungle.getTreeByName("boards"); 60 JungleTree tree = jungle.getTreeByName("boards");
62 JungleTreeEditor editor = tree.getTreeEditor(); 61 JungleTreeEditor editor = tree.getJungleTreeEditor();
63 DefaultNodePath root = new DefaultNodePath(); 62 DefaultNodePath root = new DefaultNodePath();
64 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, 0); 63 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, 0);
65 if (either.isA()) { 64 if (either.isA()) {
66 throw new IllegalStateException(); 65 throw new IllegalStateException();
67 } 66 }
76 if (result.isA()) { 75 if (result.isA()) {
77 throw new IllegalStateException(); 76 throw new IllegalStateException();
78 } 77 }
79 78
80 tree = jungle.getTreeByName(_name); 79 tree = jungle.getTreeByName(_name);
81 editor = tree.getTreeEditor(); 80 editor = tree.getJungleTreeEditor();
82 either = editor.putAttribute(root, "NodeName", ByteBuffer.wrap("root".getBytes())); 81 either = editor.putAttribute(root, "NodeName", ByteBuffer.wrap("root".getBytes()));
83 if (either.isA()) { 82 if (either.isA()) {
84 throw new IllegalStateException(); 83 throw new IllegalStateException();
85 } 84 }
86 editor = either.b(); 85 editor = either.b();
97 throw new IllegalStateException(); 96 throw new IllegalStateException();
98 } 97 }
99 98
100 JungleTreeEditor editor; 99 JungleTreeEditor editor;
101 do { 100 do {
102 editor = tree.getTreeEditor(); 101 editor = tree.getJungleTreeEditor();
103 Either<Error, JungleTreeEditor> either = editor.putAttribute(path, key, ByteBuffer.wrap(attribute.getBytes())); 102 Either<Error, JungleTreeEditor> either = editor.putAttribute(path, key, ByteBuffer.wrap(attribute.getBytes()));
104 if (either.isA()) { 103 if (either.isA()) {
105 throw new IllegalStateException(); 104 throw new IllegalStateException();
106 } 105 }
107 editor = either.b(); 106 editor = either.b();
121 TreeNode currentNode = getNodeEither.b(); 120 TreeNode currentNode = getNodeEither.b();
122 int childCount = currentNode.getChildren().size(); 121 int childCount = currentNode.getChildren().size();
123 122
124 JungleTreeEditor editor; 123 JungleTreeEditor editor;
125 do { 124 do {
126 editor = tree.getTreeEditor(); 125 editor = tree.getJungleTreeEditor();
127 Either<Error,JungleTreeEditor> either = editor.addNewChildAt(path, childCount); 126 Either<Error,JungleTreeEditor> either = editor.addNewChildAt(path, childCount);
128 if (either.isA()) { 127 if (either.isA()) {
129 throw new IllegalStateException(); 128 throw new IllegalStateException();
130 } 129 }
131 editor = either.b(); 130 editor = either.b();
145 144
146 JungleTreeEditor editor = null; 145 JungleTreeEditor editor = null;
147 146
148 do { 147 do {
149 JungleTree tree = jungle.getTreeByName(bname); 148 JungleTree tree = jungle.getTreeByName(bname);
150 editor = tree.getTreeEditor(); 149 editor = tree.getJungleTreeEditor();
151 150
152 Either<Error, JungleTreeEditor> either = editor.putAttribute(path, key, ByteBuffer.wrap(attribute.getBytes())); 151 Either<Error, JungleTreeEditor> either = editor.putAttribute(path, key, ByteBuffer.wrap(attribute.getBytes()));
153 152
154 if (either.isA()) { 153 if (either.isA()) {
155 throw new IllegalStateException(); 154 throw new IllegalStateException();
212 @Override 211 @Override
213 public boolean childMove(String bname, String pathString, String childNumString, String move) { 212 public boolean childMove(String bname, String pathString, String childNumString, String move) {
214 int childNum = Integer.parseInt(childNumString); 213 int childNum = Integer.parseInt(childNumString);
215 JungleTree tree = jungle.getTreeByName(bname); 214 JungleTree tree = jungle.getTreeByName(bname);
216 DefaultNodePath path = createNodePath(pathString); 215 DefaultNodePath path = createNodePath(pathString);
217 JungleTreeEditor editor = tree.getTreeEditor(); 216 JungleTreeEditor editor = tree.getJungleTreeEditor();
218 editor = editor.moveChild(path,childNum,move).b(); 217 editor = editor.moveChild(path,childNum,move).b();
219 return editor.success().isB(); 218 return editor.success().isB();
220 } 219 }
221 220
222 private DefaultNodePath createNodePath(String nodePath) { 221 private DefaultNodePath createNodePath(String nodePath) {