blob: 236e5a1085966db7498eba5723f9ecd52bac3c7d [file] [log] [blame]
package autotest.common.table;
import com.google.gwt.json.client.JSONObject;
import java.util.AbstractSet;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Set that hashes JSONObjects by their ID, so that identical objects get
* matched together.
*/
public class JSONObjectSet<T extends JSONObject> extends AbstractSet<T> {
protected Map<String, T> backingMap = new HashMap<String, T>();
public JSONObjectSet() {
super();
}
public JSONObjectSet(Collection<T> items) {
super();
addAll(items);
}
protected String getKey(Object obj) {
return ((JSONObject) obj).get("id").toString();
}
@Override
public boolean add(T arg0) {
return backingMap.put(getKey(arg0), arg0) == null;
}
@Override
public Iterator<T> iterator() {
return backingMap.values().iterator();
}
@Override
public boolean remove(Object arg0) {
return backingMap.remove(getKey(arg0)) != null;
}
@Override
public boolean contains(Object o) {
return backingMap.containsKey(getKey(o));
}
@Override
public int size() {
return backingMap.size();
}
}