/*******************************************************************************
* Copyright (c) 2013 Rene Schneider, GEBIT Solutions GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package de.gebit.integrity.parameter.conversion;
import com.google.inject.Singleton;
import de.gebit.integrity.parameter.conversion.conversions.integrity.booleans.BooleanValueToBoolean;
import de.gebit.integrity.parameter.conversion.conversions.integrity.booleans.BooleanValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.booleans.BooleanValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToCalendar;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToSQLDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToSQLTime;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateAndTimeValueToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToCalendar;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToSQLDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToSQLTime;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.DateValueToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToCalendar;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToSQLDate;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToSQLTime;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.dates.TimeValueToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.integrity.javaconstants.JavaConstantToAnything;
import de.gebit.integrity.parameter.conversion.conversions.integrity.javaconstants.JavaConstantToMap;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.NestedObjectToBean;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.NestedObjectToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.NestedObjectToMap;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.NestedObjectToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.TypedNestedObjectToBean;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.TypedNestedObjectToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.TypedNestedObjectToMap;
import de.gebit.integrity.parameter.conversion.conversions.integrity.nestedobjects.TypedNestedObjectToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.DecimalValueToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.DecimalValueToDouble;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.DecimalValueToFloat;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.DecimalValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.DecimalValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToByte;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToCharacter;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToDouble;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToFloat;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToInteger;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToLong;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToShort;
import de.gebit.integrity.parameter.conversion.conversions.integrity.numbers.IntegerValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.other.EnumValueToEnumConstant;
import de.gebit.integrity.parameter.conversion.conversions.integrity.other.EnumValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.other.EnumValueToString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.other.NullValueToNull;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToBoolean;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToByte;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToCharacter;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToDouble;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToEnumConstant;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToFloat;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToInteger;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToLong;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToNumber;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToShort;
import de.gebit.integrity.parameter.conversion.conversions.integrity.strings.StringValueToString;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.BigDecimalToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.BigIntegerToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.BooleanToBoolean;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.ByteToByte;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.CharacterToCharacter;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.DoubleToDouble;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.FloatToFloat;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.FormattedStringToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.FormattedStringToString;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.IntegerToInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.LongToLong;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.ShortToShort;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.StringToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.identity.StringToString;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.BigIntegerToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.ByteToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.DoubleToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.FloatToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.IntegerToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.LongToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToByte;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToCharacter;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToDouble;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToFloat;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToLong;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToShort;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.NumberToString;
import de.gebit.integrity.parameter.conversion.conversions.java.numbers.ShortToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.other.BooleanToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.BooleanToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.CalendarToDate;
import de.gebit.integrity.parameter.conversion.conversions.java.other.CalendarToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.CalendarToSQLDate;
import de.gebit.integrity.parameter.conversion.conversions.java.other.CalendarToSQLTime;
import de.gebit.integrity.parameter.conversion.conversions.java.other.CalendarToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.DateToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.DateToSQLDate;
import de.gebit.integrity.parameter.conversion.conversions.java.other.DateToSQLTime;
import de.gebit.integrity.parameter.conversion.conversions.java.other.DateToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.DateToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.java.other.EnumToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.EnumToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.MapToBean;
import de.gebit.integrity.parameter.conversion.conversions.java.other.MapToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.MapToMap;
import de.gebit.integrity.parameter.conversion.conversions.java.other.MapToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.ObjectToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.ObjectToMap;
import de.gebit.integrity.parameter.conversion.conversions.java.other.ObjectToString;
import de.gebit.integrity.parameter.conversion.conversions.java.other.SQLDateToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.java.other.SQLTimeToTimestamp;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.CharacterToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.CharacterToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.CharacterToFormattedString;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.CharacterToString;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToBigDecimal;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToBigInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToByte;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToCharacter;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToDouble;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToEnumConstant;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToFloat;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToInteger;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToLong;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToNumber;
import de.gebit.integrity.parameter.conversion.conversions.java.strings.StringToShort;
/**
* Default implementation of a modular value converter. This adds all the standard Integrity-supplied conversions. You
* may extend this class to add your own conversions, if you desire!
*
* @author Rene Schneider - initial API and implementation
*
*/
@Singleton
public class DefaultModularValueConverter extends AbstractModularValueConverter {
@Override
protected void initializeConversions() {
// numeric conversions, Java -> Java
addConversion(NumberToInteger.class);
addConversion(NumberToLong.class);
addConversion(NumberToShort.class);
addConversion(NumberToByte.class);
addConversion(NumberToBigInteger.class);
addConversion(NumberToFloat.class);
addConversion(NumberToDouble.class);
addConversion(NumberToString.class);
addConversion(NumberToFormattedString.class);
addConversion(NumberToCharacter.class);
addConversion(IntegerToBigDecimal.class);
addConversion(LongToBigDecimal.class);
addConversion(ShortToBigDecimal.class);
addConversion(ByteToBigDecimal.class);
addConversion(FloatToBigDecimal.class);
addConversion(DoubleToBigDecimal.class);
addConversion(BigIntegerToBigDecimal.class);
// string conversions, Java -> Java
addConversion(StringToInteger.class);
addConversion(StringToBigInteger.class);
addConversion(StringToBigDecimal.class);
addConversion(StringToFloat.class);
addConversion(StringToDouble.class);
addConversion(StringToLong.class);
addConversion(StringToShort.class);
addConversion(StringToByte.class);
addConversion(StringToCharacter.class);
addConversion(StringToNumber.class);
addConversion(StringToEnumConstant.class);
addConversion(CharacterToString.class);
addConversion(CharacterToFormattedString.class);
addConversion(CharacterToBigInteger.class);
addConversion(CharacterToBigDecimal.class);
// other conversions, Java -> Java
addConversion(BooleanToString.class);
addConversion(BooleanToFormattedString.class);
addConversion(DateToString.class);
addConversion(DateToFormattedString.class);
addConversion(CalendarToDate.class);
addConversion(CalendarToSQLDate.class);
addConversion(CalendarToSQLTime.class);
addConversion(CalendarToString.class);
addConversion(CalendarToFormattedString.class);
addConversion(ObjectToString.class);
addConversion(ObjectToFormattedString.class);
addConversion(MapToBean.class);
addConversion(MapToString.class);
addConversion(MapToFormattedString.class);
addConversion(MapToMap.class);
addConversion(ObjectToMap.class);
addConversion(EnumToString.class);
addConversion(EnumToFormattedString.class);
addConversion(DateToSQLDate.class);
addConversion(DateToSQLTime.class);
addConversion(DateToTimestamp.class);
addConversion(SQLDateToTimestamp.class);
addConversion(SQLTimeToTimestamp.class);
// identity conversions, Java -> Java
addConversion(StringToString.class);
addConversion(StringToFormattedString.class);
addConversion(FormattedStringToFormattedString.class);
addConversion(FormattedStringToString.class);
addConversion(BooleanToBoolean.class);
addConversion(BigDecimalToBigDecimal.class);
addConversion(BigIntegerToBigInteger.class);
addConversion(ByteToByte.class);
addConversion(CharacterToCharacter.class);
addConversion(DoubleToDouble.class);
addConversion(FloatToFloat.class);
addConversion(IntegerToInteger.class);
addConversion(LongToLong.class);
addConversion(ShortToShort.class);
// numeric conversions, Integrity -> Java
addConversion(DecimalValueToBigDecimal.class);
addConversion(DecimalValueToDouble.class);
addConversion(DecimalValueToFloat.class);
addConversion(DecimalValueToString.class);
addConversion(DecimalValueToFormattedString.class);
addConversion(IntegerValueToBigDecimal.class);
addConversion(IntegerValueToBigInteger.class);
addConversion(IntegerValueToByte.class);
addConversion(IntegerValueToDouble.class);
addConversion(IntegerValueToFloat.class);
addConversion(IntegerValueToInteger.class);
addConversion(IntegerValueToLong.class);
addConversion(IntegerValueToShort.class);
addConversion(IntegerValueToString.class);
addConversion(IntegerValueToFormattedString.class);
addConversion(IntegerValueToCharacter.class);
// string conversions, Integrity -> Java
addConversion(StringValueToBigDecimal.class);
addConversion(StringValueToBigInteger.class);
addConversion(StringValueToBoolean.class);
addConversion(StringValueToByte.class);
addConversion(StringValueToDouble.class);
addConversion(StringValueToFloat.class);
addConversion(StringValueToInteger.class);
addConversion(StringValueToLong.class);
addConversion(StringValueToShort.class);
addConversion(StringValueToString.class);
addConversion(StringValueToFormattedString.class);
addConversion(StringValueToCharacter.class);
addConversion(StringValueToNumber.class);
addConversion(StringValueToEnumConstant.class);
// boolean conversions, Integrity -> Java
addConversion(BooleanValueToBoolean.class);
addConversion(BooleanValueToString.class);
addConversion(BooleanValueToFormattedString.class);
// date/time conversions, Integrity -> Java
addConversion(DateAndTimeValueToCalendar.class);
addConversion(DateAndTimeValueToDate.class);
addConversion(DateAndTimeValueToString.class);
addConversion(DateAndTimeValueToFormattedString.class);
addConversion(DateAndTimeValueToSQLDate.class);
addConversion(DateAndTimeValueToSQLTime.class);
addConversion(DateAndTimeValueToTimestamp.class);
addConversion(DateValueToCalendar.class);
addConversion(DateValueToDate.class);
addConversion(DateValueToString.class);
addConversion(DateValueToFormattedString.class);
addConversion(DateValueToSQLDate.class);
addConversion(DateValueToSQLTime.class);
addConversion(DateValueToTimestamp.class);
addConversion(TimeValueToCalendar.class);
addConversion(TimeValueToDate.class);
addConversion(TimeValueToString.class);
addConversion(TimeValueToFormattedString.class);
addConversion(TimeValueToSQLDate.class);
addConversion(TimeValueToSQLTime.class);
addConversion(TimeValueToTimestamp.class);
// nested objects, Integrity -> Java
addConversion(NestedObjectToMap.class);
addConversion(NestedObjectToString.class);
addConversion(NestedObjectToFormattedString.class);
addConversion(NestedObjectToBean.class);
addConversion(TypedNestedObjectToMap.class);
addConversion(TypedNestedObjectToString.class);
addConversion(TypedNestedObjectToFormattedString.class);
addConversion(TypedNestedObjectToBean.class);
// other conversions, Integrity -> Java
addConversion(NullValueToNull.class);
addConversion(EnumValueToEnumConstant.class);
addConversion(EnumValueToString.class);
addConversion(EnumValueToFormattedString.class);
// java constants, Integrity -> Java
addConversion(JavaConstantToAnything.class);
addConversion(JavaConstantToMap.class);
}
}