annotate Main/jungle-main/transaction/DefaultTreeNodeAttribute.cs @ 35:f2ea780b3e80

fix
author Kazuma Takeda
date Wed, 22 Feb 2017 16:30:19 +0900
parents 07318c10b894
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
Kazuma Takeda
parents: 32
diff changeset
1 using System.Collections;
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
2 using System.Collections.Generic;
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
3 using System;
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
4 using System.Text;
32
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
5 using System.Runtime.Serialization.Formatters.Binary;
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
6 using System.IO;
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
7
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
8 namespace JungleDB {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
9 public class DefaultTreeNodeAttribute : TreeNodeAttributes {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
10 public List<TreeNode> children;
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
11 public TreeMap<string, object> attrs;
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
12
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
13 public DefaultTreeNodeAttribute(List<TreeNode> _children, TreeMap<string, object> _attrs){
28
9588ad364fdd Last commit before change.
Kazuma Takeda
parents: 20
diff changeset
14 children = _children;
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
15 attrs = _attrs;
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
16 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
17
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
18 public TreeMap<string, object> getAttributesAsRawMap(){
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
19 return attrs;
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
20 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
21
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
22 public Either<Error, TreeNode> delete(string _key) {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
23 if (_key == null) {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
24 return DefaultEither<Error,TreeNode>.newA (NodeEditorError.NULL_VALUE_NOT_ALLOWED);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
25 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
26
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
27 if (null == attrs.getRoot()) {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
28 return DefaultEither<Error,TreeNode>.newA(NodeEditorError.DELETE_KEY_NOT_FOUND);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
29 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
30
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
31 TreeMap<string, object> newMap = attrs.delete(_key);
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
32 TreeNode newNode = new DefaultTreeNode(children, newMap);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
33 return DefaultEither<Error,TreeNode>.newB(newNode);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
34 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
35
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
36 public Either<Error, TreeNode> put(string _key, object _value){
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
37 if (_key == null || _value == null) {
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
38 return DefaultEither<Error, TreeNode>.newA (NodeEditorError.NULL_VALUE_NOT_ALLOWED);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
39 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
40
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
41 TreeMap<string, object> newMap = attrs.put (_key, _value);
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
42
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
43 TreeNode newNode = new DefaultTreeNode (children, newMap);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
44
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
45 return DefaultEither<Error, TreeNode>.newB (newNode);
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
46 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
47
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
48 public object get(string _key) {
28
9588ad364fdd Last commit before change.
Kazuma Takeda
parents: 20
diff changeset
49 if (_key == null)
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
50 return null;
28
9588ad364fdd Last commit before change.
Kazuma Takeda
parents: 20
diff changeset
51
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
52 object op = attrs.get(_key);
28
9588ad364fdd Last commit before change.
Kazuma Takeda
parents: 20
diff changeset
53 if (op != null)
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
54 return op;
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
55 return null;
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
56 }
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
57
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
58 public T get<T> (string _key) {
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
59 if (_key == null)
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
60 return default(T);
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
61
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
62 T op = (T)attrs.get (_key);
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
63 if (op != null)
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
64 return op;
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
65 return default(T);
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
66 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
67
28
9588ad364fdd Last commit before change.
Kazuma Takeda
parents: 20
diff changeset
68 public string getString(string key) {
31
1466993c104c byte[] to object Rewrite.
Kazuma Takeda
parents: 28
diff changeset
69 return attrs.get(key).ToString();
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
70 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
71
32
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
72 /// <summary>
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
73 /// Gets the bytes.
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
74 /// need Serializable to class.
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
75 /// </summary>
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
76 /// <returns>byte[]</returns>
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
77 /// <param name="key">Key.</param>
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
78 public byte[] getBytes(string key)
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
79 {
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
80 var formatter = new BinaryFormatter();
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
81 object source = attrs.get (key);
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
82 using (var stream = new MemoryStream())
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
83 {
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
84 formatter.Serialize(stream, source);
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
85 return stream.ToArray();
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
86 }
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
87 }
07318c10b894 add getBytes method.
Kazuma Takeda
parents: 31
diff changeset
88
20
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
89 public IEnumerator<string> getKeys(){
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
90 return attrs.keys ();
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
91 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
92
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
93 }
1f99e150f336 fix folder and add Object Mapper.
Kazuma Takeda
parents:
diff changeset
94 }