-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathBindingNode.java
More file actions
132 lines (110 loc) · 3.11 KB
/
BindingNode.java
File metadata and controls
132 lines (110 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package edu.pnu.stem.binder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author hgryoo
*
*/
public class BindingNode {
private Map<String, Object> attributes = new HashMap<String, Object>();
private Map<String, BindingNode> associations = new HashMap<String, BindingNode>();
private Map<String, List<BindingNode>> collections = new HashMap<String, List<BindingNode>>();
public void addAttribute(String key, Object value) {
key = key.toUpperCase();
if( !attributes.containsKey(key)) {
attributes.put(key, value);
} else {
String msg = "Duplicated Key : " + key;
throw new IllegalArgumentException(msg);
}
}
public Object getAttribute(String key) {
key = key.toUpperCase();
int idx= key.indexOf("/");
if(idx == -1) {
return attributes.get(key);
} else {
String assoName = key.substring(0, idx);
BindingNode bn = associations.get(assoName);
if(bn == null) {
return null;
/* String msg = assoName + "is not exist";
throw new IllegalArgumentException(msg);*/
} else {
return bn.getAttribute( key.substring(idx + 1));
}
}
}
public Map<String, Object> getAttributes() {
return attributes;
}
public void addAssociation(String key, BindingNode node) {
key = key.toUpperCase();
if( !associations.containsKey(key)) {
associations.put(key, node);
} else {
String msg = "Duplicated Key : " + key;
throw new IllegalArgumentException(msg);
}
}
public BindingNode getAssociation(String key) {
key = key.toUpperCase();
int idx= key.indexOf("/");
if(idx == -1) {
return associations.get(key);
} else {
String assoName = key.substring(0, idx - 1);
BindingNode bn = associations.get(assoName);
if(bn == null) {
String msg = assoName + "is not exist";
throw new IllegalArgumentException(msg);
} else {
return bn.getAssociation(key.substring(idx + 1));
}
}
}
public void addCollection(String key, BindingNode node) {
key = key.toUpperCase();
if(!collections.containsKey(key)) {
collections.put(key, new ArrayList<BindingNode>());
}
List<BindingNode> bindingList = collections.get(key);
bindingList.add(node);
}
public List<BindingNode> getCollection(String key) {
key = key.toUpperCase();
if(collections.containsKey(key)) {
return collections.get(key);
} else {
return Collections.EMPTY_LIST;
}
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "BindingNode [attributes=" + attributes + ", associations=" + associations + ", collections="
+ collections + "]";
}
//GET METHODS
public Integer getInteger(String key) {
Object value = getAttribute(key);
if(value == null) {
return null; //default value
} else {
return (Integer) value;
}
}
public String getString(String key) {
Object value = getAttribute(key);
if(value == null) {
return null; //default value
} else {
return (String) value;
}
}
}