001: /*
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */
015:
016: package org.griphyn.common.util;
017:
018: /**
019: * This class converts a boolean property specification (string) in various
020: * representations into a booelan value. It is liberal in the representation
021: * it accepts, but strict in what it produces.<p>
022: *
023: * @author Gaurang Mehta
024: * @author Karan Vahi
025: * @author Jens-S. Vöckler
026: * @version $Revision: 50 $
027: */
028: public class Boolean {
029: /**
030: * The character representation of a <code>true</code> value.
031: */
032: public static final String TRUE = "true";
033:
034: /**
035: * The character representation of a <code>false</code> value.
036: */
037: public static final String FALSE = "false";
038:
039: /**
040: * Converts a boolean value into a strict representation of it.
041: *
042: * @param val is the boolean input value
043: * @return a string representing the boolean value.
044: */
045: public static String print(boolean val) {
046: return (val ? TRUE : FALSE);
047: }
048:
049: /**
050: * Converts a boolean string representation into a boolean value.
051: * Representations may include non-negative integers, where only
052: * 0 means <code>false</code>. Other valid string representations
053: * of <code>true</code> include:
054: *
055: * <pre>
056: * true
057: * yes
058: * on
059: * </pre>
060: *
061: * Any other string representation is taken to mean <code>false</code>
062: *
063: * @param rep is the input string representing a boolean value.
064: * @return a boolean value from the representation.
065: */
066: public static boolean parse(String rep) {
067: return parse(rep, false);
068: }
069:
070: /**
071: * Converts a boolean string representation into a boolean value.
072: * Representations may include non-negative integers, where only
073: * 0 means <code>false</code>. Other valid string representations
074: * of <code>true</code> include:
075: *
076: * <pre>
077: * true
078: * yes
079: * on
080: * </pre>
081: *
082: * Other valid string representations of <code>false</code> include,
083: * besides the numerical zero:
084: *
085: * <pre>
086: * false
087: * no
088: * off
089: * </pre>
090: *
091: * Any other string representation is taken to mean the boolean value
092: * indicated by the paramater deflt.
093: *
094: * @param rep is the input string representing a boolean value.
095: * @param deflt is the deflt value to use in case rep does not
096: * represent a valid boolean value.
097: *
098: * @return a boolean value from the representation.
099: */
100: public static boolean parse(String rep, boolean deflt) {
101: if (rep == null)
102: return deflt;
103: String s = rep.trim().toLowerCase();
104: if (s.length() == 0)
105: return deflt;
106:
107: if (Character.isDigit(s.charAt(0))) {
108: // check for number
109: long value;
110: try {
111: value = Long.parseLong(s);
112: } catch (NumberFormatException nfe) {
113: value = deflt ? 1 : 0;
114: }
115: return (value != 0);
116: } else {
117: // check for key words
118: return ((s.equals("true") || s.equals("yes") || s
119: .equals("on")) ? true : ((s.equals("false")
120: || s.equals("no") || s.equals("off")) ? false
121: : deflt));
122: }
123: }
124: }
|