package graphtea.extensions.io;
import graphtea.platform.attribute.AttributeSet;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* it filters all unserializable attributes of the binding attribute set
* @author Azin Azadi
*/
public class SerializedAttrSet<Binding extends AttributeSet> implements Serializable {
public HashMap<String, Serializable> attrs = new HashMap<>();
public SerializedAttrSet(Binding binding) {
setBinding(binding);
}
/**
* feed the binding with the values
*/
public void feed(Binding binding){
for (String key : attrs.keySet()){
binding.put(key, attrs.get(key));
}
}
/**
* a unmodifiable copy of attributes in this object
*/
public void setBinding(Binding binding) {
attrs.clear();
Map<String, Object> bindingAttrs = binding.getAttrs();
for (String key : bindingAttrs.keySet()) {
Object val = bindingAttrs.get(key);
if (val instanceof Serializable) {
attrs.put(key, (Serializable) val);
}
// else
// System.out.println(key + "Is not serializable! --wouldnt save!");
}
}
@Override
public boolean equals(Object obj) {
return obj instanceof SerializedAttrSet && attrs.equals(((SerializedAttrSet) obj).attrs);
}
}