package org.atdl4j.data.converter;
import java.math.BigInteger;
import org.atdl4j.data.ParameterTypeConverter;
import org.atdl4j.fixatdl.core.IntT;
import org.atdl4j.fixatdl.core.LengthT;
import org.atdl4j.fixatdl.core.NumInGroupT;
import org.atdl4j.fixatdl.core.ParameterT;
import org.atdl4j.fixatdl.core.SeqNumT;
import org.atdl4j.fixatdl.core.TagNumT;
/*
* Supports Integer or BigInteger-based Parameter types:
* IntT
* NumInGroupT
* SeqNumT
* TagNumT
* LengthT
*
* @author Scott Atwell
*/
public class IntegerConverter
extends AbstractTypeConverter<BigInteger>
{
public IntegerConverter(ParameterT aParameter)
{
super( aParameter );
}
public IntegerConverter(ParameterTypeConverter<?> aParameterTypeConverter)
{
super( aParameterTypeConverter );
}
/**
* Returns the value of Parameter.getMinValue() for the specific NumericT types for which this is
* applicable, assuming it has been set, otherwise returns null.
*
* @return
*/
public BigInteger getMinValue()
{
if ( getParameter() instanceof IntT )
{
// -- upcast IntT from Integer to BigInteger --
if ( ( (IntT) getParameter() ).getMinValue() != null )
{
return new BigInteger( ( (IntT) getParameter() ).getMinValue().toString() );
}
else
{
return null;
}
}
else
{
return null;
}
}
/**
* Returns the value of Parameter.getMaxValue() for the specific NumericT types for which this is
* applicable, assuming it has been set, otherwise returns null.
*
* @return
*/
public BigInteger getMaxValue()
{
if ( getParameter() instanceof IntT )
{
// -- upcast IntT from Integer to BigInteger --
if ( ( (IntT) getParameter() ).getMaxValue() != null )
{
return new BigInteger( ( (IntT) getParameter() ).getMaxValue().toString() );
}
else
{
return null;
}
}
else
{
return null;
}
}
/**
* Returns the value of Parameter.getConstValue() for the specific NumericT types for which this is
* applicable, assuming it has been set, otherwise returns null.
*
* @return
*/
public BigInteger getConstValue()
{
if ( getParameter() instanceof IntT )
{
// -- upcast IntT from Integer to BigInteger --
if ( ( (IntT) getParameter() ).getConstValue() != null )
{
return new BigInteger( ( (IntT) getParameter() ).getConstValue().toString() );
}
else
{
return null;
}
}
else if ( getParameter() instanceof NumInGroupT )
{
return ( (NumInGroupT) getParameter() ).getConstValue();
}
else if ( getParameter() instanceof SeqNumT )
{
return ( (SeqNumT) getParameter() ).getConstValue();
}
else if ( getParameter() instanceof TagNumT )
{
return ( (TagNumT) getParameter() ).getConstValue();
}
else if ( getParameter() instanceof LengthT )
{
return ( (LengthT) getParameter() ).getConstValue();
}
else
{
return null;
}
}
/* (non-Javadoc)
* @see org.atdl4j.data.ParameterTypeConverter#convertFixWireValueToParameterValue(java.lang.String)
*/
@Override
public Object convertFixWireValueToParameterValue(String aFixWireValue)
{
return convertStringToParameterValue( aFixWireValue );
}
/* (non-Javadoc)
* @see org.atdl4j.data.ParameterTypeConverter#convertParameterStringToParameterValue(java.lang.String)
*/
@Override
public Object convertParameterStringToParameterValue(String aParameterString)
{
return convertStringToParameterValue( aParameterString );
}
/**
* Supports either FixWireValue or ParameterString values
* @param aValue
* @return
*/
protected BigInteger convertStringToParameterValue(String aValue)
{
if ( aValue != null )
{
String str = (String) aValue;
if ( ( str == null ) || ( str.trim().length() == 0 ) )
{
return null;
}
else
{
try
{
// -- Trim leading and/or trailing spaces --
str = str.trim();
return new BigInteger( str );
}
catch (NumberFormatException e)
{
throw new NumberFormatException( "Invalid Integer Number Format: [" + str + "] for Parameter: " + getParameterName() );
}
}
}
else
{
return null;
}
}
/* (non-Javadoc)
* @see org.atdl4j.data.ParameterTypeConverter#convertParameterValueToFixWireValue(java.lang.Object)
*/
@Override
public String convertParameterValueToFixWireValue(Object aParameterValue)
{
BigInteger tempBigInteger = convertParameterValueToParameterComparable( aParameterValue );
if ( tempBigInteger != null )
{
return tempBigInteger.toString();
}
else
{
return null;
}
}
/* (non-Javadoc)
* @see org.atdl4j.data.ParameterTypeConverter#convertParameterValueToParameterComparable(java.lang.Object)
*/
@Override
public BigInteger convertParameterValueToParameterComparable(Object aParameterValue)
{
if ( aParameterValue instanceof BigInteger )
{
return (BigInteger) aParameterValue;
}
else if ( aParameterValue instanceof Integer )
{
return new BigInteger( ((Integer) aParameterValue).toString() );
}
else if ( aParameterValue instanceof String )
{
String str = (String) aParameterValue;
if ( ( str == null ) || ( str.trim().length() == 0 ) )
{
return null;
}
else
{
try
{
// -- Trim leading and/or trailing spaces --
str = str.trim();
return new BigInteger( str );
}
catch (NumberFormatException e)
{
throw new NumberFormatException( "Invalid Integer Number Format: [" + str + "] for Parameter: " + getParameterName() );
}
}
}
else
{
return null;
}
}
/* (non-Javadoc)
* @see org.atdl4j.data.ControlTypeConverter#convertControlValueToControlComparable(java.lang.Object)
*/
@Override
public BigInteger convertControlValueToControlComparable(Object aValue)
{
if ( aValue instanceof BigInteger )
{
return (BigInteger) aValue;
}
else if ( aValue instanceof Integer )
{
return new BigInteger( ((Integer) aValue).toString() );
}
else if ( aValue instanceof String )
{
String str = (String) aValue;
if ( ( str == null ) || ( str.trim().length() == 0 ) )
{
return null;
}
else
{
try
{
// -- Trim leading and/or trailing spaces --
str = str.trim();
return new BigInteger( str );
}
catch (NumberFormatException e)
{
throw new NumberFormatException( "Invalid Integer Number Format: [" + str + "] for Parameter: " + getParameterName() );
}
}
}
else if ( aValue instanceof Boolean )
{
Boolean bool = (Boolean) aValue;
return new BigInteger( bool ? "1" : "0" );
}
else
{
return null;
}
}
/* No conversion applicable for this type. Returns aValue.
* @see org.atdl4j.data.ControlTypeConverter#convertControlValueToParameterValue(java.lang.Object)
*/
@Override
public Object convertControlValueToParameterValue(Object aValue)
{
// -- aDatatypeIfNull=DATATYPE_BIG_INTEGER --
return DatatypeConverter.convertValueToDatatype( aValue, getParameterDatatype( BigInteger.class ) );
}
/* No conversion applicable for this type. Returns aValue.
* @see org.atdl4j.data.ControlTypeConverter#convertParameterValueToControlValue(java.lang.Object)
*/
@Override
public BigInteger convertParameterValueToControlValue(Object aValue)
{
return DatatypeConverter.convertValueToBigIntegerDatatype( aValue );
}
/* (non-Javadoc)
* @see org.atdl4j.data.ControlTypeConverter#convertStringToControlValue(java.lang.String)
*/
@Override
public BigInteger convertStringToControlValue(String aString)
{
return convertControlValueToControlComparable( aString );
}
}