1 28 29 package com.idaremedia.antx.helpers; 30 31 import java.util.Collection ; 32 import java.util.Iterator ; 33 import java.util.Map ; 34 import java.util.Properties ; 35 import java.util.StringTokenizer ; 36 37 import org.apache.tools.ant.Project; 38 import org.apache.tools.ant.ProjectComponent; 39 40 import com.idaremedia.apis.FixtureStarter; 41 42 66 67 public class GenericParameters extends ProjectComponent implements Cloneable 68 { 69 72 public GenericParameters() 73 { 74 } 75 76 77 78 83 public GenericParameters(Project project) 84 { 85 setProject(project); 86 } 87 88 89 90 95 public Object clone() 96 { 97 try { 98 GenericParameters copy= (GenericParameters)super.clone(); 99 copy.m_items = FixtureStarter.newMapCopy(m_items); 100 if (size()>0) { 101 Iterator itr= copy.m_items.entrySet().iterator(); 102 while (itr.hasNext()) { 103 Map.Entry e = (Map.Entry )itr.next(); 104 e.setValue(((InnerNameValuePair)e.getValue()).clone()); 105 } 106 } 107 return copy; 108 } catch(CloneNotSupportedException clnx) { 109 throw new Error (); 110 } 111 } 112 113 114 115 123 public void addConfiguredParameter(InnerNameValuePair item) 124 { 125 item.verifyNamed(); 126 item.setName(Tk.lowercaseFrom(item.getName())); 127 m_items.put(item.getName(),item); 128 } 129 130 131 132 137 public final void addConfiguredArg(InnerNameValuePair item) 138 { 139 addConfiguredParameter(item); 140 } 141 142 143 144 149 public final void addConfiguredProperty(InnerNameValuePair item) 150 { 151 addConfiguredParameter(item); 152 } 153 154 155 156 168 public void setList(String paramlist) 169 { 170 if (paramlist!=null) { 171 StringTokenizer st= new StringTokenizer (paramlist,";"); 172 while (st.hasMoreTokens()) { 173 174 String kv = st.nextToken(); 175 InnerNameValuePair nvp = newNVPair(); 176 int i= kv.indexOf("="); 177 178 if (i>0) { 179 String key = kv.substring(0,i); 180 String value = ""; 181 if (i<kv.length()-1) { 182 value = kv.substring(i+1); 183 } 184 nvp.setName(key); 185 nvp.setValue(value); 186 } else { 187 nvp.setName(kv); 188 nvp.setValue(Strings.TRUE); 189 } 190 191 addConfiguredParameter(nvp); 192 } 193 } else { 194 m_items.clear(); 195 } 196 } 197 198 199 200 203 public final boolean isEmpty() 204 { 205 return m_items.isEmpty(); 206 } 207 208 209 210 213 public final int size() 214 { 215 return m_items.size(); 216 } 217 218 219 220 226 public final Collection values() 227 { 228 return m_items.values(); 229 } 230 231 232 233 238 public Map copyOfParameterObjects() 239 { 240 return FixtureStarter.newMapCopy(m_items); 241 } 242 243 244 245 253 public Properties copyOfSimpleKeyValues(final Project P, boolean altForm) 254 { 255 Properties copy = new Properties (); 256 if (!m_items.isEmpty()) { 257 Iterator itr= m_items.entrySet().iterator(); 258 while (itr.hasNext()) { 259 Map.Entry e = (Map.Entry )itr.next(); 260 copy.put(e.getKey(), 261 ((InnerNameValuePair)e.getValue()).getValue(P,altForm)); 262 } 263 } 264 return copy; 265 } 266 267 268 269 276 public final Properties copyOfSimpleKeyValues(final Project P) 277 { 278 return copyOfSimpleKeyValues(P,false); 279 } 280 281 282 283 290 public void mergeOther(GenericParameters other) 291 { 292 Iterator itr = other.copyOfParameterObjects().values().iterator(); 293 while (itr.hasNext()) { 294 addConfiguredParameter((InnerNameValuePair)itr.next()); 295 } 296 } 297 298 299 300 306 public void mergeOther(Properties other) 307 { 308 Iterator itr = other.entrySet().iterator(); 309 while (itr.hasNext()) { 310 Map.Entry e = (Map.Entry )itr.next(); 311 put(e.getKey().toString(),(String )e.getValue()); 312 } 313 } 314 315 316 317 322 public InnerNameValuePair get(String name) 323 { 324 name = Tk.lowercaseFrom(name); 325 return (InnerNameValuePair)m_items.get(name); 326 } 327 328 329 330 335 public final String getv(String name) 336 { 337 InnerNameValuePair e = get(name); 338 if (e!=null) { 339 return e.getValue(); 340 } 341 return null; 342 } 343 344 345 346 352 protected InnerNameValuePair newNVPair() 353 { 354 return new InnerNameValuePair(); 355 } 356 357 358 359 365 protected void put(String name, String value) 366 { 367 InnerNameValuePair item = newNVPair(); 368 item.setName(Tk.lowercaseFrom(name.toString())); 369 item.setValue(value); 370 m_items.put(item.getName(),item); 371 } 372 373 private Map m_items = FixtureStarter.newMap(11,0.8f); 374 } 375 376 | Popular Tags |