Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java @ 183:066d9c5758dc
change TreeContext
author | tatsuki |
---|---|
date | Mon, 23 Mar 2015 15:44:28 +0900 |
parents | 809f813d1083 |
children | d455e0ee7f4e 868a746996ad |
rev | line source |
---|---|
37 | 1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction; |
2 | |
3 import java.nio.ByteBuffer; | |
72
5969848b1bb8
deleting defaultNode(change to DefaultTreeNodeAttribute and DefaultTreeNode)
one
parents:
52
diff
changeset
|
4 |
5969848b1bb8
deleting defaultNode(change to DefaultTreeNodeAttribute and DefaultTreeNode)
one
parents:
52
diff
changeset
|
5 import fj.data.List; |
5969848b1bb8
deleting defaultNode(change to DefaultTreeNodeAttribute and DefaultTreeNode)
one
parents:
52
diff
changeset
|
6 import fj.data.Option; |
37 | 7 import fj.data.TreeMap; |
81 | 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; |
52 | 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; |
39 | 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError; |
37 | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
14 | |
152 | 15 public class DefaultTreeNodeAttribute implements TreeNodeAttributes |
16 { | |
17 public List<TreeNode> children; | |
18 public TreeMap<String,ByteBuffer> attrs; | |
172 | 19 |
152 | 20 |
21 public DefaultTreeNodeAttribute(List<TreeNode> _children,TreeMap<String,ByteBuffer> _attrs) | |
22 { | |
23 children = _children; | |
24 attrs = _attrs; | |
25 } | |
37 | 26 |
152 | 27 @Override |
28 public TreeMap<String,ByteBuffer> getAttributesAsRawMap(){ | |
29 return attrs; | |
30 } | |
31 | |
32 @Override | |
33 public Either<Error,TreeNode> delete(String _key) | |
34 { | |
35 if (_key == null) { | |
36 return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED); | |
37 } | |
38 | |
39 if (!attrs.contains(_key)) { | |
40 return DefaultEither.newA(NodeEditorError.DELETE_KEY_NOT_FOUND); | |
41 } | |
42 | |
43 TreeMap<String,ByteBuffer> newMap = attrs.delete(_key); | |
44 TreeNode newNode = new DefaultTreeNode(children,newMap); | |
45 return DefaultEither.newB(newNode); | |
46 } | |
37 | 47 |
152 | 48 @Override |
49 public Either<Error,TreeNode> put(String _key, ByteBuffer _value) | |
50 { | |
51 if (_key == null || _value == null) { | |
52 return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED); | |
53 } | |
54 | |
55 TreeMap<String,ByteBuffer> newMap = attrs.set(_key,_value); | |
56 TreeNode newNode = new DefaultTreeNode(children,newMap); | |
57 return DefaultEither.newB(newNode); | |
58 } | |
37 | 59 |
152 | 60 @Override |
61 public ByteBuffer get(String _key) | |
62 { | |
63 if (_key == null) { | |
64 return null; | |
65 } | |
66 | |
183 | 67 ByteBuffer result = attrs.getLoop(_key); |
68 return result; | |
152 | 69 } |
112 | 70 |
152 | 71 @Override |
72 public String getString(String key) { | |
73 ByteBuffer attribute = get(key); | |
74 if (attribute != null) | |
75 return new String(attribute.array()); | |
76 return null; | |
112 | 77 } |
141 | 78 |
152 | 79 @Override |
80 public List<String> getKeys() { | |
81 return attrs.keys(); | |
141 | 82 } |
37 | 83 } |