// // @(#)Tristate.java 1.00 4/1/2002 // // Copyright 2002 Zachary DelProposto. All rights reserved. // Use is subject to license terms. // // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Or from http://www.gnu.org/ // package dip.process; import java.io.Serializable; /** * * Trinary state object. Immutable. * <p> * This class is not serializable; if this is required, * readResolve() must be implemented to preserve the integrity * of referential equality. * */ final public class Tristate implements Serializable { /** * */ private static final long serialVersionUID = -4928015884974719029L; // constants public static final Tristate TRUE = new Tristate("True"); public static final Tristate FALSE = new Tristate("False"); public static final Tristate UNCERTAIN = new Tristate("Uncertain"); // alternate set of constants, fully equivalent and interchangeable with above // constants. public static final Tristate MAYBE = UNCERTAIN; public static final Tristate YES = TRUE; public static final Tristate NO = FALSE; public static final Tristate SUCCESS = TRUE; public static final Tristate FAILURE = FALSE; // instance variables private transient String text = null; /** Create a TriState object */ private Tristate(String value) { this.text = value; }// Tristate() public String toString() { return text; }// toString() @Override public int hashCode() { return text.hashCode(); } public boolean equals(Tristate obj) { return obj.hashCode() == this.hashCode(); } /** Compares a Tristate to a boolean */ public boolean equals(boolean value) { if( (value && (this == TRUE)) || (!value && (this == FALSE)) ) { return true; } return false; }// equals() /** Get a Tristate that is equivalent to the boolean */ public static Tristate getTristate(boolean value) { return ((value) ? TRUE : FALSE); }// getTristate() }// class Tristate