001: /*
002: * <copyright>
003: *
004: * Copyright 2000-2004 BBNT Solutions, LLC
005: * under sponsorship of the Defense Advanced Research Projects
006: * Agency (DARPA).
007: *
008: * You can redistribute this software and/or modify it under the
009: * terms of the Cougaar Open Source License as published on the
010: * Cougaar Open Source Website (www.cougaar.org).
011: *
012: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
013: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
014: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
015: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
016: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
017: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
018: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
019: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
020: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
021: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
022: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
023: *
024: * </copyright>
025: */
026:
027: package org.cougaar.tools.csmart.core.property.range;
028:
029: /**
030: * Implementation of Range for Strings. Note that a StringRange
031: * always has a single String value.
032: */
033:
034: public class StringRange extends RangeBase implements Range {
035: static final long serialVersionUID = -7351616054609766392L;
036:
037: private String value;
038:
039: public StringRange(String value) {
040: this .value = value;
041: }
042:
043: /**
044: * Get the minimum value of the range. Values are allowed to be
045: * equal to the minimum value
046: * @return an object having the minimum value
047: **/
048:
049: public Object getMinimumValue() {
050: return value;
051: }
052:
053: /**
054: * Get the maximum value of the range. Values are allowed to
055: * be equal to the maximum value
056: * @return an object having the maximum value
057: **/
058:
059: public Object getMaximumValue() {
060: return value;
061: }
062:
063: /**
064: * Test if an Object is in this Range
065: * @param o the Object to test
066: **/
067:
068: public boolean isInRange(Object o) {
069: return value.equals(o);
070: }
071:
072: public String toString() {
073: return value;
074: }
075:
076: /**
077: * Two StringRanges are equal if their values are equal.
078: * Also, A StringRange is equal to a String if the value equals the String
079: *
080: * @param o an <code>Object</code> to compare
081: * @return a <code>boolean</code>, true if the value is equal
082: */
083: public boolean equals(Object o) {
084: if (o instanceof StringRange) {
085: StringRange other = (StringRange) o;
086: if (value != null && value.equals(other.getMinimumValue()))
087: return true;
088: if (value == null && other.getMinimumValue() == null)
089: return true;
090: } else if (o instanceof String) {
091: String so = (String) o;
092: if (value != null && value.equals(so))
093: return true;
094: if (value == null && so == null)
095: return true;
096: }
097: return false;
098: }
099:
100: }
|