KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xml > MapLiteral


1 package jfun.yan.xml;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.HashMap JavaDoc;
5
6 /**
7  * For map literal in the form of {key=val, ...}
8  * in the config file.
9  * <p>
10  * @author Ben Yu
11  * Nov 23, 2005 11:01:58 PM
12  */

13 final class MapLiteral extends HashMap JavaDoc implements Literal {
14   private final ArrayList JavaDoc keys;
15   MapLiteral() {
16     this.keys = new ArrayList JavaDoc();
17   }
18
19   MapLiteral(int initialCapacity) {
20     super(initialCapacity);
21     this.keys = new ArrayList JavaDoc(initialCapacity);
22   }
23   Object JavaDoc[] getKeys(){
24     return keys.toArray();
25   }
26   void build(Object JavaDoc key, Object JavaDoc val){
27     if(containsKey(key)){
28       throw new IllegalArgumentException JavaDoc("duplicate key: "+key);
29     }
30     keys.add(key);
31     super.put(key, val);
32   }
33   public String JavaDoc toText(){
34     final StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
35     final int sz = keys.size();
36     buf.append('{');
37     for(int i=0; i<sz; i++){
38       final Object JavaDoc key = keys.get(i);
39       if(i>0)
40         buf.append(',');
41       buf.append(key).append('=').append(get(key));
42     }
43     buf.append('}');
44     return buf.toString();
45   }
46 }
47
Popular Tags