-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRecord.java
More file actions
170 lines (137 loc) · 5.31 KB
/
Record.java
File metadata and controls
170 lines (137 loc) · 5.31 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package javaxt.utils;
import java.util.Map;
//******************************************************************************
//** Record Class
//******************************************************************************
/**
* Used to store an ordered list of key value pairs.
*
******************************************************************************/
public class Record {
private final java.util.LinkedHashMap<String, Object> map;
//**************************************************************************
//** Constructor
//**************************************************************************
public Record() {
map = new java.util.LinkedHashMap<>();
}
//**************************************************************************
//** get
//**************************************************************************
/** Returns the value associated with a key.
*/
public Value get(String key) {
if (key == null) return new Value(null);
return new Value(map.get(key));
}
//**************************************************************************
//** set
//**************************************************************************
/** Used to set the value for a given key.
*/
public void set(String key, Object value) {
if (key == null) {
throw new NullPointerException("Null key.");
}
if (value instanceof Value){
value = ((Value) value).toObject();
}
map.put(key, value);
}
//**************************************************************************
//** has
//**************************************************************************
/** Returns true if a key exists.
*/
public boolean has(String key) {
return this.map.containsKey(key);
}
//**************************************************************************
//** remove
//**************************************************************************
/** Removes a key and its value, if present. Returns the value that was
* associated with the key, or null if there was no value.
*/
public Value remove(String key) {
Object o = map.remove(key);
if (o instanceof Value) return (Value) o;
else return new Value(o);
}
//**************************************************************************
//** clear
//**************************************************************************
/** Removes all key/value pairs from the record.
*/
public void clear(){
map.clear();
}
//**************************************************************************
//** isNull
//**************************************************************************
/** Returns true if there is no value associated with the key.
*/
public boolean isNull(String key) {
return map.get(key)==null;
}
//**************************************************************************
//** isEmpty
//**************************************************************************
/** Returns true if there are no entries in the Record.
*/
public boolean isEmpty(){
return map.isEmpty();
}
//**************************************************************************
//** keySet
//**************************************************************************
/** Returns all the keys in this Record. Note that modifying the keySet will
* also modify the record. Use with caution.
*/
public java.util.Set<String> keySet() {
return this.map.keySet();
}
//**************************************************************************
//** entrySet
//**************************************************************************
/** Returns all the values in this Record. Note that modifying the entrySet
* will also modify the record. Use with caution.
*/
public java.util.Set<Map.Entry<String, Object>> entrySet() {
return this.map.entrySet();
}
//**************************************************************************
//** length
//**************************************************************************
/** Returns the number of keys in the record.
*/
public int length() {
return this.map.size();
}
//**************************************************************************
//** equals
//**************************************************************************
/** Returns true if the given object is a Record and the Record has the
* same key/value pairs as this class. Note that the order of the key/value
* pairs is not important.
*/
public boolean equals(Object obj){
if (obj instanceof Record){
Record record = (Record) obj;
if (record.length()==this.length()){
for (String key : this.keySet()){
if (!record.has(key)) return false;
Object val = this.get(key).toObject();
Object val2 = record.get(key).toObject();
if (val==null){
if (val2!=null) return false;
}
else{
if (!val.equals(val2)) return false;
}
}
return true;
}
}
return false;
}
}