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}