1 package org.sapia.archie.impl; 2 3 import java.util.ArrayList ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.Map ; 7 8 import org.sapia.archie.AbstractNode; 9 import org.sapia.archie.Entry; 10 import org.sapia.archie.NameParser; 11 import org.sapia.archie.NamePart; 12 import org.sapia.archie.NodeFactory; 13 import org.sapia.archie.ProcessingException; 14 15 16 27 public class SingleValueNode extends AbstractNode { 28 protected Map _values; 29 30 public SingleValueNode(Map children, Map values, NodeFactory fac) 31 throws ProcessingException { 32 super(children, fac); 33 _values = values; 34 } 35 36 public SingleValueNode(NameParser parser, Map children, Map values, NodeFactory fac) 37 throws ProcessingException { 38 super(parser, children, fac); 39 _values = values; 40 } 41 42 45 public Object getValue(NamePart name) { 46 Object val = _values.get(name); 47 48 if (val != null) { 49 return onRead(name, val); 50 } 51 52 return val; 53 } 54 55 58 public Object removeValue(NamePart name) { 59 Object val = getValue(name); 60 _values.remove(name); 61 return val; 62 } 63 64 65 68 public boolean putValue(NamePart name, Object value, boolean overwrite) { 69 if (!overwrite && _values.containsKey(name)) { 70 return false; 71 } else { 72 value = onWrite(name, value); 73 _values.put(name, value); 74 75 return true; 76 } 77 } 78 79 82 public int getValueCount() { 83 return _values.size(); 84 } 85 86 89 public Iterator getValueNames() { 90 return _values.keySet().iterator(); 91 } 92 93 96 public Iterator getEntries() { 97 List entries = new ArrayList (_values.size()); 98 Iterator items = _values.entrySet().iterator(); 99 Map.Entry entry; 100 while(items.hasNext()){ 101 entry = (Map.Entry )items.next(); 102 entries.add(new Entry(entry.getKey().toString(), entry.getValue())); 103 } 104 return entries.iterator(); 105 } 106 107 protected Object onRead(NamePart np, Object toRead) { 108 return toRead; 109 } 110 111 protected Object onWrite(NamePart np, Object o) { 112 return o; 113 } 114 } 115 | Popular Tags |