1 16 17 package org.apache.velocity.tools.view.tools; 18 19 import javax.servlet.ServletRequest ; 20 21 import org.apache.velocity.tools.view.context.ViewContext; 22 import org.apache.velocity.tools.view.tools.ViewTool; 23 24 48 public class ParameterParser implements ViewTool 49 { 50 51 private ServletRequest request; 52 53 54 57 public ParameterParser() 58 {} 59 60 61 66 public ParameterParser(ServletRequest request) 67 { 68 setRequest(request); 69 } 70 71 72 79 public void init(Object obj) 80 { 81 if (obj instanceof ViewContext) 82 { 83 setRequest(((ViewContext)obj).getRequest()); 84 } 85 else if (obj instanceof ServletRequest ) 86 { 87 setRequest((ServletRequest )obj); 88 } 89 else 90 { 91 throw new IllegalArgumentException ("Was expecting " + ViewContext.class + 92 " or " + ServletRequest .class); 93 } 94 } 95 96 97 102 protected void setRequest(ServletRequest request) 103 { 104 this.request = request; 105 } 106 107 108 114 protected ServletRequest getRequest() 115 { 116 if (request == null) 117 { 118 throw new UnsupportedOperationException ("Request is null. ParameterParser must be initialized first!"); 119 } 120 return request; 121 } 122 123 124 126 133 public boolean exists(String key) 134 { 135 return (getString(key) != null); 136 } 137 138 139 150 public String get(String key) 151 { 152 return getString(key); 153 } 154 155 156 162 public String getString(String key) 163 { 164 return getRequest().getParameter(key); 165 } 166 167 168 175 public String getString(String key, String alternate) 176 { 177 String s = getString(key); 178 return (s != null) ? s : alternate; 179 } 180 181 182 187 public Boolean getBoolean(String key) 188 { 189 String s = getString(key); 190 return (s != null) ? Boolean.valueOf(s) : null; 191 } 192 193 194 200 public boolean getBoolean(String key, boolean alternate) 201 { 202 Boolean bool = getBoolean(key); 203 return (bool != null) ? bool.booleanValue() : alternate; 204 } 205 206 207 213 public Boolean getBoolean(String key, Boolean alternate) 214 { 215 Boolean bool = getBoolean(key); 216 return (bool != null) ? bool : alternate; 217 } 218 219 220 225 public Number getNumber(String key) 226 { 227 String s = getString(key); 228 if (s == null || s.length() == 0) 229 { 230 return null; 231 } 232 try 233 { 234 return parseNumber(s); 235 } 236 catch (Exception e) 237 { 238 return null; 240 } 241 } 242 243 244 250 public Number getNumber(String key, Number alternate) 251 { 252 Number n = getNumber(key); 253 return (n != null) ? n : alternate; 254 } 255 256 257 263 public int getInt(String key, int alternate) 264 { 265 Number n = getNumber(key); 266 return (n != null) ? n.intValue() : alternate; 267 } 268 269 270 276 public double getDouble(String key, double alternate) 277 { 278 Number n = getNumber(key); 279 return (n != null) ? n.doubleValue() : alternate; 280 } 281 282 283 289 public String [] getStrings(String key) 290 { 291 return getRequest().getParameterValues(key); 292 } 293 294 295 301 public Number [] getNumbers(String key) 302 { 303 String [] strings = getStrings(key); 304 if (strings == null) 305 { 306 return null; 307 } 308 309 Number [] nums = new Number [strings.length]; 310 try 311 { 312 for(int i=0; i<nums.length; i++) 313 { 314 if (strings[i] != null && strings[i].length() > 0) 315 { 316 nums[i] = parseNumber(strings[i]); 317 } 318 } 319 } 320 catch (NumberFormatException nfe) 321 { 322 return null; 323 } 324 return nums; 325 } 326 327 328 334 public int[] getInts(String key) 335 { 336 String [] strings = getStrings(key); 337 if (strings == null) 338 { 339 return null; 340 } 341 342 int[] ints = new int[strings.length]; 343 try 344 { 345 for(int i=0; i<ints.length; i++) 346 { 347 if (strings[i] != null && strings[i].length() > 0) 348 { 349 ints[i] = parseNumber(strings[i]).intValue(); 350 } 351 } 352 } 353 catch (NumberFormatException nfe) 354 { 355 return null; 356 } 357 return ints; 358 } 359 360 361 367 public double[] getDoubles(String key) 368 { 369 String [] strings = getStrings(key); 370 if (strings == null) 371 { 372 return null; 373 } 374 375 double[] doubles = new double[strings.length]; 376 try 377 { 378 for(int i=0; i<doubles.length; i++) 379 { 380 if (strings[i] != null && strings[i].length() > 0) 381 { 382 doubles[i] = parseNumber(strings[i]).doubleValue(); 383 } 384 } 385 } 386 catch (NumberFormatException nfe) 387 { 388 return null; 389 } 390 return doubles; 391 } 392 393 394 396 405 protected Number parseNumber(String value) throws NumberFormatException 406 { 407 if (value.indexOf('.') >= 0) 408 { 409 return new Double (value); 410 } 411 return new Long (value); 412 } 413 414 } 415 | Popular Tags |