1 package org.apache.turbine.services.intake.model; 2 3 18 19 import java.util.HashMap ; 20 import java.util.Map ; 21 22 import org.apache.turbine.services.intake.IntakeException; 23 import org.apache.turbine.services.intake.xmlmodel.XmlField; 24 25 33 public abstract class FieldFactory 34 { 35 private static Map fieldCtors = initFieldCtors(); 36 37 private static Map initFieldCtors() 38 { 39 fieldCtors = new HashMap (); 40 41 fieldCtors.put("int", new FieldFactory.FieldCtor() 42 { 43 public Field getInstance(XmlField f, Group g) 44 throws IntakeException 45 { 46 return new IntegerField(f, g); 47 } 48 } 49 ); 50 fieldCtors.put("boolean", new FieldFactory.FieldCtor() 51 { 52 public Field getInstance(XmlField f, Group g) 53 throws IntakeException 54 { 55 return new BooleanField(f, g); 56 } 57 } 58 ); 59 fieldCtors.put("String", new FieldFactory.FieldCtor() 60 { 61 public Field getInstance(XmlField f, Group g) 62 throws IntakeException 63 { 64 return new StringField(f, g); 65 } 66 } 67 ); 68 fieldCtors.put("BigDecimal", new FieldFactory.FieldCtor() 69 { 70 public Field getInstance(XmlField f, Group g) 71 throws IntakeException 72 { 73 return new BigDecimalField(f, g); 74 } 75 } 76 ); 77 fieldCtors.put("NumberKey", new FieldFactory.FieldCtor() 78 { 79 public Field getInstance(XmlField f, Group g) 80 throws IntakeException 81 { 82 return new NumberKeyField(f, g); 83 } 84 } 85 ); 86 fieldCtors.put("ComboKey", new FieldFactory.FieldCtor() 87 { 88 public Field getInstance(XmlField f, Group g) 89 throws IntakeException 90 { 91 return new ComboKeyField(f, g); 92 } 93 } 94 ); 95 fieldCtors.put("StringKey", new FieldFactory.FieldCtor() 96 { 97 public Field getInstance(XmlField f, Group g) 98 throws IntakeException 99 { 100 return new StringKeyField(f, g); 101 } 102 } 103 ); 104 fieldCtors.put("FileItem", new FieldFactory.FieldCtor() 105 { 106 public Field getInstance(XmlField f, Group g) 107 throws IntakeException 108 { 109 return new FileItemField(f, g); 110 } 111 } 112 ); 113 fieldCtors.put("DateString", new FieldFactory.FieldCtor() 114 { 115 public Field getInstance(XmlField f, Group g) 116 throws IntakeException 117 { 118 return new DateStringField(f, g); 119 } 120 } 121 ); 122 fieldCtors.put("float", new FieldFactory.FieldCtor() 123 { 124 public Field getInstance(XmlField f, Group g) 125 throws IntakeException 126 { 127 return new FloatField(f, g); 128 } 129 } 130 ); 131 fieldCtors.put("double", new FieldFactory.FieldCtor() 132 { 133 public Field getInstance(XmlField f, Group g) 134 throws IntakeException 135 { 136 return new DoubleField(f, g); 137 } 138 } 139 ); 140 fieldCtors.put("short", new FieldFactory.FieldCtor() 141 { 142 public Field getInstance(XmlField f, Group g) 143 throws IntakeException 144 { 145 return new ShortField(f, g); 146 } 147 } 148 ); 149 fieldCtors.put("long", new FieldFactory.FieldCtor() 150 { 151 public Field getInstance(XmlField f, Group g) 152 throws IntakeException 153 { 154 return new LongField(f, g); 155 } 156 } 157 ); 158 return fieldCtors; 159 } 160 161 private static abstract class FieldCtor 162 { 163 public Field getInstance(XmlField f, Group g) throws IntakeException 164 { 165 return null; 166 } 167 } 168 169 177 public static final Field getInstance(XmlField xmlField, Group xmlGroup) 178 throws IntakeException 179 { 180 FieldCtor fieldCtor = null; 181 Field field = null; 182 String type = xmlField.getType(); 183 184 fieldCtor = (FieldCtor) fieldCtors.get(type); 185 if (fieldCtor == null) 186 { 187 throw new IntakeException("An Unsupported type has been specified for " + 188 xmlField.getName() + " in group " + xmlGroup.getIntakeGroupName() + " type = " + type); 189 } 190 else 191 { 192 field = fieldCtor.getInstance(xmlField, xmlGroup); 193 } 194 195 return field; 196 } 197 } 198 | Popular Tags |