|
JavaXT
|
|
Record Class
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;
}
}
|
|