Mercurial > hg > Members > shoshi > jungle > bbs
comparison src/main/java/jp/ac/u_ryukyu/ie/cr/bbs/browsing/JungleBrowsingBulletinBoard.java @ 5:2b3542c5be34
move child
author | tatsuki |
---|---|
date | Tue, 02 Aug 2016 17:46:03 +0900 |
parents | 5acde010c6db |
children | 36f0f18ce6a8 |
comparison
equal
deleted
inserted
replaced
4:5acde010c6db | 5:2b3542c5be34 |
---|---|
12 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; | 12 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor; |
13 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; | 13 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode; |
14 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNodeChildren; | 14 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNodeChildren; |
15 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode; | 15 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode; |
16 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; | 16 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; |
17 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.InterfaceTraverser; | |
17 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; | 18 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; |
18 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; | 19 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error; |
20 import plparser.Property; | |
21 import plparser.jungle.PropertyJungleTreeFactoryImpl; | |
22 import plparser.jungle.PropertyListJungleNodeFactory; | |
23 import plparser.jungle.PropertyListParserCreateTree; | |
19 | 24 |
20 import java.nio.ByteBuffer; | 25 import java.nio.ByteBuffer; |
21 import java.util.Iterator; | 26 import java.util.Iterator; |
22 | 27 |
23 public class JungleBrowsingBulletinBoard implements | 28 public class JungleBrowsingBulletinBoard implements |
44 | 49 |
45 return new IterableConverter<String, TreeNode>(chs, converter); | 50 return new IterableConverter<String, TreeNode>(chs, converter); |
46 } | 51 } |
47 | 52 |
48 public void createBoards(final String _name) { | 53 public void createBoards(final String _name) { |
49 if (null == jungle.createNewTree(_name)) { | 54 createBoards(_name, new DefaultTreeNode()); |
55 } | |
56 public void createBoards(final String _name, TreeNode rootNode) { | |
57 if (null == jungle.createNewTree(_name, rootNode)) { | |
50 throw new IllegalStateException(); | 58 throw new IllegalStateException(); |
51 } | 59 } |
52 JungleTree tree = jungle.getTreeByName("boards"); | 60 JungleTree tree = jungle.getTreeByName("boards"); |
53 JungleTreeEditor editor = tree.getTreeEditor(); | 61 JungleTreeEditor editor = tree.getTreeEditor(); |
54 DefaultNodePath root = new DefaultNodePath(); | 62 DefaultNodePath root = new DefaultNodePath(); |
182 TreeNode currentNode = either.b(); | 190 TreeNode currentNode = either.b(); |
183 TreeNodeChildren children = currentNode.getChildren(); | 191 TreeNodeChildren children = currentNode.getChildren(); |
184 return children.iterator(); | 192 return children.iterator(); |
185 } | 193 } |
186 | 194 |
195 @Override | |
196 public void importLayout(String boardName, String path) { | |
197 PropertyListParserCreateTree<Property> jp; | |
198 PropertyListJungleNodeFactory jlf = new PropertyJungleTreeFactoryImpl(); | |
199 jp = new PropertyListParserCreateTree<Property>(jlf); | |
200 TreeNode root = jp.parseFile(path); | |
201 createBoards(boardName, root); | |
202 } | |
203 | |
204 @Override | |
205 public Iterator<TreeNode> findNode(String bname, String key, String value) { | |
206 JungleTree tree = jungle.getTreeByName(bname); | |
207 InterfaceTraverser traverser = tree.getTraverser(true); | |
208 return traverser.find((TreeNode node) -> { | |
209 return true; | |
210 },key,value); | |
211 } | |
212 | |
213 @Override | |
214 public String getNodePath(String bname, TreeNode node) { | |
215 JungleTree tree = jungle.getTreeByName(bname); | |
216 NodePath path = tree.getNodePath(node); | |
217 return path.toString(); | |
218 } | |
219 | |
220 @Override | |
221 public boolean childMove(String bname, String pathString, String childNumString, String move) { | |
222 int childNum = Integer.parseInt(childNumString); | |
223 JungleTree tree = jungle.getTreeByName(bname); | |
224 DefaultNodePath path = createNodePath(pathString); | |
225 TreeNode node = tree.getNodeOfPath(path).b(); | |
226 int childrenCount = node.getChildren().size(); | |
227 TreeNode child = node.getChildren().at(childNum).b(); | |
228 TreeNodeChildren grandsons = child.getChildren(); | |
229 JungleTreeEditor editor = tree.getTreeEditor(); | |
230 editor = editor.deleteChildAt(path,childNum).b(); | |
231 if (move.equals("up") && childNum != 0) | |
232 childNum--; | |
233 else if (move.equals("down") && childNum != childrenCount) | |
234 childNum++; | |
235 editor = editor.addNewChildAt(path,childNum).b(); | |
236 | |
237 Iterator<String> keys = child.getAttributes().getKeys(); | |
238 NodePath newChildPath = path.add(childNum); | |
239 while (keys.hasNext()) { | |
240 String key = keys.next(); | |
241 ByteBuffer value = child.getAttributes().get(key); | |
242 editor = editor.putAttribute(newChildPath,key,value).b(); | |
243 } | |
244 | |
245 for (TreeNode grandson : grandsons) { | |
246 | |
247 } | |
248 return editor.success().isB(); | |
249 } | |
250 | |
187 private DefaultNodePath createNodePath(String nodePath) { | 251 private DefaultNodePath createNodePath(String nodePath) { |
188 DefaultNodePath path = new DefaultNodePath(); | 252 DefaultNodePath path = new DefaultNodePath(); |
189 String[] nums = nodePath.split(","); | 253 String[] nums = nodePath.split(","); |
190 for (String num : nums) { | 254 for (String num : nums) { |
191 if (num.equals("-1")) | 255 if (num.equals("-1")) |