package ch.x42.terye.persistence; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; public class NodeState extends ItemState { private List<String> children = new LinkedList<String>(); private List<String> properties = new LinkedList<String>(); public NodeState() { super(ItemType.NODE); } public NodeState(String path) { this(); put("path", path); } @Override public boolean containsField(String s) { if (s.equals("children") && children != null) { return true; } else if (s.equals("properties") && properties != null) { return true; } return super.containsField(s); } @Override public Object get(String key) { if (key.equals("children")) { return children; } else if (key.equals("properties")) { return properties; } return super.get(key); } @Override public Set<String> keySet() { Set<String> set = super.keySet(); set.add("children"); set.add("properties"); return set; } @Override @SuppressWarnings("unchecked") public Object put(String key, Object v) { if (key.equals("children")) { children = (List<String>) v; return v; } else if (key.equals("properties")) { properties = (List<String>) v; return v; } return super.put(key, v); } @Override public Object removeField(String key) { Object ret = null; if (key.equals("children")) { ret = children; children = null; } else if (key.equals("properties")) { ret = properties; properties = null; } else { ret = super.removeField(key); } return ret; } @Override @SuppressWarnings({ "rawtypes", "unchecked" }) public Map toMap() { Map<String, Object> ret = super.toMap(); ret.put("children", children); ret.put("properties", properties); return ret; } public List<String> getChildren() { return children; } public List<String> getProperties() { return properties; } }