1 package net.sf.tomp.djunit.simple; 2 3 import net.sf.tomp.djunit.RecordMetadata; 4 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 public class RecordMetadataImpl implements RecordMetadata 11 { 12 protected Map name2index = new HashMap(); 13 protected List index2name = new ArrayList(); 14 protected List index2class = new ArrayList(); 15 16 public void addField(String name, Class cls) 17 { 18 name2index.put(name, new Integer(fieldCount())); 19 index2name.add(name); 20 index2class.add(cls); 21 } 22 23 public int fieldCount() 24 { 25 return index2name.size(); 26 } 27 28 public String fieldNameAt(int i) 29 { 30 return (String) index2name.get(i); 31 } 32 33 public Class fieldClassAt(int i) 34 { 35 return (Class) index2class.get(i); 36 } 37 38 public boolean hasField(String name) 39 { 40 return name2index.get(name) != null; 41 } 42 43 public int fieldIndex(String name) 44 { 45 if (hasField(name)) 46 { 47 return ((Integer) (name2index.get(name))).intValue(); 48 } 49 else 50 { 51 throw new IllegalArgumentException("Record of type " + this 52 + " does not have field " + name); 53 } 54 } 55 }