| 1 16 package org.apache.commons.collections; 17 18 import java.io.PrintStream ; 19 import java.text.NumberFormat ; 20 import java.text.ParseException ; 21 import java.util.Collections ; 22 import java.util.Enumeration ; 23 import java.util.HashMap ; 24 import java.util.Iterator ; 25 import java.util.Map ; 26 import java.util.Properties ; 27 import java.util.ResourceBundle ; 28 import java.util.SortedMap ; 29 import java.util.TreeMap ; 30 31 import org.apache.commons.collections.map.FixedSizeMap; 32 import org.apache.commons.collections.map.FixedSizeSortedMap; 33 import org.apache.commons.collections.map.LazyMap; 34 import org.apache.commons.collections.map.LazySortedMap; 35 import org.apache.commons.collections.map.ListOrderedMap; 36 import org.apache.commons.collections.map.PredicatedMap; 37 import org.apache.commons.collections.map.PredicatedSortedMap; 38 import org.apache.commons.collections.map.TransformedMap; 39 import org.apache.commons.collections.map.TransformedSortedMap; 40 import org.apache.commons.collections.map.TypedMap; 41 import org.apache.commons.collections.map.TypedSortedMap; 42 import org.apache.commons.collections.map.UnmodifiableMap; 43 import org.apache.commons.collections.map.UnmodifiableSortedMap; 44 45 83 public class MapUtils { 84 85 89 public static final Map EMPTY_MAP = UnmodifiableMap.decorate(new HashMap (1)); 90 94 public static final SortedMap EMPTY_SORTED_MAP = UnmodifiableSortedMap.decorate(new TreeMap ()); 95 98 private static final String INDENT_STRING = " "; 99 100 103 public MapUtils() { 104 } 105 106 115 public static Object getObject(final Map map, final Object key) { 116 if (map != null) { 117 return map.get(key); 118 } 119 return null; 120 } 121 122 131 public static String getString(final Map map, final Object key) { 132 if (map != null) { 133 Object answer = map.get(key); 134 if (answer != null) { 135 return answer.toString(); 136 } 137 } 138 return null; 139 } 140 141 155 public static Boolean getBoolean(final Map map, final Object key) { 156 if (map != null) { 157 Object answer = map.get(key); 158 if (answer != null) { 159 if (answer instanceof Boolean ) { 160 return (Boolean ) answer; 161 162 } else if (answer instanceof String ) { 163 return new Boolean ((String ) answer); 164 165 } else if (answer instanceof Number ) { 166 Number n = (Number ) answer; 167 return (n.intValue() != 0) ? Boolean.TRUE : Boolean.FALSE; 168 } 169 } 170 } 171 return null; 172 } 173 174 187 public static Number getNumber(final Map map, final Object key) { 188 if (map != null) { 189 Object answer = map.get(key); 190 if (answer != null) { 191 if (answer instanceof Number ) { 192 return (Number ) answer; 193 194 } else if (answer instanceof String ) { 195 try { 196 String text = (String ) answer; 197 return NumberFormat.getInstance().parse(text); 198 199 } catch (ParseException e) { 200 logInfo(e); 201 } 202 } 203 } 204 } 205 return null; 206 } 207 208 217 public static Byte getByte(final Map map, final Object key) { 218 Number answer = getNumber(map, key); 219 if (answer == null) { 220 return null; 221 } else if (answer instanceof Byte ) { 222 return (Byte ) answer; 223 } 224 return new Byte (answer.byteValue()); 225 } 226 227 236 public static Short getShort(final Map map, final Object key) { 237 Number answer = getNumber(map, key); 238 if (answer == null) { 239 return null; 240 } else if (answer instanceof Short ) { 241 return (Short ) answer; 242 } 243 return new Short (answer.shortValue()); 244 } 245 246 255 public static Integer getInteger(final Map map, final Object key) { 256 Number answer = getNumber(map, key); 257 if (answer == null) { 258 return null; 259 } else if (answer instanceof Integer ) { 260 return (Integer ) answer; 261 } 262 return new Integer (answer.intValue()); 263 } 264 265 274 public static Long getLong(final Map map, final Object key) { 275 Number answer = getNumber(map, key); 276 if (answer == null) { 277 return null; 278 } else if (answer instanceof Long ) { 279 return (Long ) answer; 280 } 281 return new Long (answer.longValue()); 282 } 283 284 293 public static Float getFloat(final Map map, final Object key) { 294 Number answer = getNumber(map, key); 295 if (answer == null) { 296 return null; 297 } else if (answer instanceof Float ) { 298 return (Float ) answer; 299 } 300 return new Float (answer.floatValue()); 301 } 302 303 312 public static Double getDouble(final Map map, final Object key) { 313 Number answer = getNumber(map, key); 314 if (answer == null) { 315 return null; 316 } else if (answer instanceof Double ) { 317 return (Double ) answer; 318 } 319 return new Double (answer.doubleValue()); 320 } 321 322 332 public static Map getMap(final Map map, final Object key) { 333 if (map != null) { 334 Object answer = map.get(key); 335 if (answer != null && answer instanceof Map ) { 336 return (Map ) answer; 337 } 338 } 339 return null; 340 } 341 342 354 public static Object getObject( Map map, Object key, Object defaultValue ) { 355 if ( map != null ) { 356 Object answer = map.get( key ); 357 if ( answer != null ) { 358 return answer; 359 } 360 } 361 return defaultValue; 362 } 363 364 376 public static String getString( Map map, Object key, String defaultValue ) { 377 String answer = getString( map, key ); 378 if ( answer == null ) { 379 answer = defaultValue; 380 } 381 return answer; 382 } 383 384 396 public static Boolean getBoolean( Map map, Object key, Boolean defaultValue ) { 397 Boolean answer = getBoolean( map, key ); 398 if ( answer == null ) { 399 answer = defaultValue; 400 } 401 return answer; 402 } 403 404 416 public static Number getNumber( Map map, Object key, Number defaultValue ) { 417 Number answer = getNumber( map, key ); 418 if ( answer == null ) { 419 answer = defaultValue; 420 } 421 return answer; 422 } 423 424 436 public static Byte getByte( Map map, Object key, Byte defaultValue ) { 437 Byte answer = getByte( map, key ); 438 if ( answer == null ) { 439 answer = defaultValue; 440 } 441 return answer; 442 } 443 444 456 public static Short getShort( Map map, Object key, Short defaultValue ) { 457 Short answer = getShort( map, key ); 458 if ( answer == null ) { 459 answer = defaultValue; 460 } 461 return answer; 462 } 463 464 476 public static Integer getInteger( Map map, Object key, Integer defaultValue ) { 477 Integer answer = getInteger( map, key ); 478 if ( answer == null ) { 479 answer = defaultValue; 480 } 481 return answer; 482 } 483 484 496 public static Long getLong( Map map, Object key, Long defaultValue ) { 497 Long answer = getLong( map, key ); 498 if ( answer == null ) { 499 answer = defaultValue; 500 } 501 return answer; 502 } 503 504 516 public static Float getFloat( Map map, Object key, Float defaultValue ) { 517 Float answer = getFloat( map, key ); 518 if ( answer == null ) { 519 answer = defaultValue; 520 } 521 return answer; 522 } 523 524 536 public static Double getDouble( Map map, Object key, Double defaultValue ) { 537 Double answer = getDouble( map, key ); 538 if ( answer == null ) { 539 answer = defaultValue; 540 } 541 return answer; 542 } 543 544 556 public static Map getMap( Map map, Object key, Map defaultValue ) { 557 Map answer = getMap( map, key ); 558 if ( answer == null ) { 559 answer = defaultValue; 560 } 561 return answer; 562 } 563 564 565 581 public static boolean getBooleanValue(final Map map, final Object key) { 582 Boolean booleanObject = getBoolean(map, key); 583 if (booleanObject == null) { 584 return false; 585 } 586 return booleanObject.booleanValue(); 587 } 588 589 598 public static byte getByteValue(final Map map, final Object key) { 599 Byte byteObject = getByte(map, key); 600 if (byteObject == null) { 601 return 0; 602 } 603 return byteObject.byteValue(); 604 } 605 606 615 public static short getShortValue(final Map map, final Object key) { 616 Short shortObject = getShort(map, key); 617 if (shortObject == null) { 618 return 0; 619 } 620 return shortObject.shortValue(); 621 } 622 623 632 public static int getIntValue(final Map map, final Object key) { 633 Integer integerObject = getInteger(map, key); 634 if (integerObject == null) { 635 return 0; 636 } 637 return integerObject.intValue(); 638 } 639 640 649 public static long getLongValue(final Map map, final Object key) { 650 Long longObject = getLong(map, key); 651 if (longObject == null) { 652 return 0L; 653 } 654 return longObject.longValue(); 655 } 656 657 666 public static float getFloatValue(final Map map, final Object key) { 667 Float floatObject = getFloat(map, key); 668 if (floatObject == null) { 669 return 0f; 670 } 671 return floatObject.floatValue(); 672 } 673 674 683 public static double getDoubleValue(final Map map, final Object key) { 684 Double doubleObject = getDouble(map, key); 685 if (doubleObject == null) { 686 return 0d; 687 } 688 return doubleObject.doubleValue(); 689 } 690 691 710 public static boolean getBooleanValue(final Map map, final Object key, boolean defaultValue) { 711 Boolean booleanObject = getBoolean(map, key); 712 if (booleanObject == null) { 713 return defaultValue; 714 } 715 return booleanObject.booleanValue(); 716 } 717 718 730 public static byte getByteValue(final Map map, final Object key, byte defaultValue) { 731 Byte byteObject = getByte(map, key); 732 if (byteObject == null) { 733 return defaultValue; 734 } 735 return byteObject.byteValue(); 736 } 737 738 750 public static short getShortValue(final Map map, final Object key, short defaultValue) { 751 Short shortObject = getShort(map, key); 752 if (shortObject == null) { 753 return defaultValue; 754 } 755 return shortObject.shortValue(); 756 } 757 758 770 public static int getIntValue(final Map map, final Object key, int defaultValue) { 771 Integer integerObject = getInteger(map, key); 772 if (integerObject == null) { 773 return defaultValue; 774 } 775 return integerObject.intValue(); 776 } 777 778 790 public static long getLongValue(final Map  |