001package com.hfg.util;
002
003
004//------------------------------------------------------------------------------
005/**
006 Simple implementation of the Value interface.
007 <div>
008 @author J. Alex Taylor, hairyfatguy.com
009 </div>
010 */
011//------------------------------------------------------------------------------
012// com.hfg Library
013//
014// This library is free software; you can redistribute it and/or
015// modify it under the terms of the GNU Lesser General Public
016// License as published by the Free Software Foundation; either
017// version 2.1 of the License, or (at your option) any later version.
018//
019// This library is distributed in the hope that it will be useful,
020// but WITHOUT ANY WARRANTY; without even the implied warranty of
021// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
022// Lesser General Public License for more details.
023//
024// You should have received a copy of the GNU Lesser General Public
025// License along with this library; if not, write to the Free Software
026// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
027//
028// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
029// jataylor@hairyfatguy.com
030//------------------------------------------------------------------------------
031public class ValueImpl implements Value
032{
033   private String  mStringValue;
034   private Number  mNumberValue;
035   private Boolean mBooleanValue;
036
037   //###########################################################################
038   // CONSTRUCTORS
039   //###########################################################################
040
041   //---------------------------------------------------------------------------
042   public ValueImpl(Object inValue)
043   {
044      if (inValue != null)
045      {
046         if (inValue instanceof Number)
047         {
048            mNumberValue = (Number) inValue;
049         }
050         else if (inValue instanceof Boolean)
051         {
052            mBooleanValue = (Boolean) inValue;
053         }
054         else
055         {
056            mStringValue = inValue.toString();
057         }
058      }
059   }
060
061   //---------------------------------------------------------------------------
062   public ValueImpl(String inValue)
063   {
064      mStringValue = inValue;
065   }
066
067   //---------------------------------------------------------------------------
068   public ValueImpl(Number inValue)
069   {
070      mNumberValue = inValue;
071   }
072
073   //---------------------------------------------------------------------------
074   public ValueImpl(boolean inValue)
075   {
076      mBooleanValue = inValue;
077   }
078
079   //---------------------------------------------------------------------------
080   public ValueImpl(int inValue)
081   {
082      mNumberValue = inValue;
083   }
084
085   //---------------------------------------------------------------------------
086   public ValueImpl(long inValue)
087   {
088      mNumberValue = inValue;
089   }
090
091   //---------------------------------------------------------------------------
092   public ValueImpl(float inValue)
093   {
094      mNumberValue = inValue;
095   }
096
097   //---------------------------------------------------------------------------
098   public ValueImpl(double inValue)
099   {
100      mNumberValue = inValue;
101   }
102
103   //###########################################################################
104   // PUBLIC METHODS
105   //###########################################################################
106
107   //---------------------------------------------------------------------------
108   @Override
109   public boolean isNull()
110   {
111      return (null == mStringValue
112              && null == mNumberValue
113              && null == mBooleanValue);
114   }
115
116   //---------------------------------------------------------------------------
117   @Override
118   public String toString()
119   {
120      return stringValue();
121   }
122
123   //---------------------------------------------------------------------------
124   @Override
125   public String stringValue()
126   {
127      return (mStringValue != null ? mStringValue : mNumberValue != null ? mNumberValue.toString() : mBooleanValue != null ? mBooleanValue.toString() : null);
128   }
129
130   //---------------------------------------------------------------------------
131   @Override
132   public Boolean booleanValue()
133   {
134      return (mBooleanValue != null ? mBooleanValue : mNumberValue != null ? BooleanUtil.valueOf(mNumberValue) : mStringValue != null ? BooleanUtil.valueOf(mStringValue) : null);
135   }
136
137   //---------------------------------------------------------------------------
138   @Override
139   public Integer intValue()
140   {
141      return (mNumberValue != null ? mNumberValue.intValue() : mBooleanValue != null ? (mBooleanValue ? 1 : 0) : null);
142   }
143
144   //---------------------------------------------------------------------------
145   @Override
146   public Long longValue()
147   {
148      return (mNumberValue != null ? mNumberValue.longValue() : mBooleanValue != null ? (mBooleanValue ? 1 : 0) : null);
149   }
150
151   //---------------------------------------------------------------------------
152   @Override
153   public Float floatValue()
154   {
155      return (mNumberValue != null ? mNumberValue.floatValue() : mBooleanValue != null ? (mBooleanValue ? 1 : 0) : null);
156   }
157
158   //---------------------------------------------------------------------------
159   @Override
160   public Double doubleValue()
161   {
162      return (mNumberValue != null ? mNumberValue.doubleValue() : mBooleanValue != null ? (mBooleanValue ? 1 : 0) : null);
163   }
164}