001 package data;
002
003 /**
004 * Values that operate on {@link Number numbers}.
005 *
006 * <p>All the operations are implemented as you would expect, the implementation is given in concrete
007 * subclasses.</p>
008 *
009 * @author Steffen Zschaler
010 * @version 2.0 19/08/1999
011 * @since v2.0
012 */
013 public abstract class NumberValue implements Value {
014
015 /**
016 * The actual value.
017 *
018 * @serial
019 */
020 private Number m_nbValue;
021
022 /**
023 * Create a new NumberValue.
024 *
025 * @param nbValue the actual initial value.
026 */
027 public NumberValue(Number nbValue) {
028 super();
029
030 setValue(nbValue);
031 }
032
033 /**
034 * Set the actual value of the object.
035 *
036 * @override Sometimes Override if you want to impose restrictions on the class of the actual value.
037 *
038 * @param nbValue the new actual value.
039 */
040 public void setValue(Number nbValue) {
041 m_nbValue = nbValue;
042 }
043
044 /**
045 * Get the actual value of the object.
046 *
047 * @override Never
048 */
049 public Number getValue() {
050 return m_nbValue;
051 }
052
053 /**
054 * @override Sometimes The default implementation returns
055 * <pre>
056 * (getValue().longValue() == 0)
057 * </pre>
058 */
059 public boolean isAddZero() {
060 return (getValue().longValue() == 0);
061 }
062
063 /**
064 * @override Sometimes The default implementation returns
065 * <pre>
066 * (getValue().longValue() > 0)
067 * </pre>
068 */
069 public boolean isGreaterZero() {
070 return getValue().longValue() > 0;
071 }
072
073 /**
074 * @override Sometimes The default implementation returns
075 * <pre>
076 * (getValue().longValue() <= 0)
077 * </pre>
078 */
079 public boolean isLessZero() {
080 return getValue().longValue() < 0;
081 }
082
083
084
085 /**
086 * @override Sometimes The default implementation returns
087 * <pre>
088 * isAddZero()
089 * </pre>
090 */
091 public boolean isMulZero() {
092 return isAddZero();
093 }
094
095 /**
096 * @override Sometimes The default implementation returns
097 * <pre>
098 * (getValue().longValue() == 1)
099 * </pre>
100 */
101 public boolean isMulOne() {
102 return (getValue().longValue() == 1);
103 }
104
105 /**
106 * @override Always
107 */
108 public abstract Object clone();
109
110 /**
111 * Return a {@link String} representation of the object.
112 *
113 * @override Sometimes The default implementation returns
114 * <pre>
115 * getValue().toString()
116 * </pre>
117 */
118 public String toString() {
119 return getValue().toString();
120 }
121 }