package jadex.xml;
import java.util.HashMap;
import java.util.Map;
/**
* Converter for basic types.
*/
public class BasicTypeConverter //implements ITypeConverter
{
//-------- static part --------
/** String -> String converter. (remove?) */
public static IStringObjectConverter STRING_CONVERTER = new StringTypeConverter();
/** String -> Integer converter. */
public static IStringObjectConverter INTEGER_CONVERTER = new IntegerTypeConverter();
/** String -> Long converter. */
public static IStringObjectConverter LONG_CONVERTER = new LongTypeConverter();
/** String -> Float converter. */
public static IStringObjectConverter FLOAT_CONVERTER = new FloatTypeConverter();
/** String -> Double converter. */
public static IStringObjectConverter DOUBLE_CONVERTER = new DoubleTypeConverter();
/** String -> Boolean converter. */
public static IStringObjectConverter BOOLEAN_CONVERTER = new BooleanTypeConverter();
/** String -> Short converter. */
public static IStringObjectConverter SHORT_CONVERTER = new ShortTypeConverter();
/** String -> Byte converter. */
public static IStringObjectConverter BYTE_CONVERTER = new ByteTypeConverter();
/** String -> Character converter. (remove?) */
public static IStringObjectConverter CHARACTER_CONVERTER = new CharacterTypeConverter();
/** The map of basic converters. */
protected static Map basicconverters;
static
{
basicconverters = new HashMap();
basicconverters.put(String.class, STRING_CONVERTER);
basicconverters.put(int.class, INTEGER_CONVERTER);
basicconverters.put(Integer.class, INTEGER_CONVERTER);
basicconverters.put(long.class, LONG_CONVERTER);
basicconverters.put(Long.class, LONG_CONVERTER);
basicconverters.put(float.class, FLOAT_CONVERTER);
basicconverters.put(Float.class, FLOAT_CONVERTER);
basicconverters.put(double.class, DOUBLE_CONVERTER);
basicconverters.put(Double.class, DOUBLE_CONVERTER);
basicconverters.put(boolean.class, BOOLEAN_CONVERTER);
basicconverters.put(Boolean.class, BOOLEAN_CONVERTER);
basicconverters.put(short.class, SHORT_CONVERTER);
basicconverters.put(Short.class, SHORT_CONVERTER);
basicconverters.put(byte.class, BYTE_CONVERTER);
basicconverters.put(Byte.class, BYTE_CONVERTER);
basicconverters.put(char.class, CHARACTER_CONVERTER);
basicconverters.put(Character.class, CHARACTER_CONVERTER);
}
/**
* Test if a clazz is a built-in type.
* @param clazz The clazz.
* @return True, if built-in type.
*/
public static boolean isBuiltInType(Class clazz)
{
return basicconverters.get(clazz)!=null;
}
/**
* Get a String -> X converter for a target clazz.
* @param clazz The clazz.
* @return converter The converter.
*/
public static IStringObjectConverter getBasicStringConverter(Class clazz)
{
return (IStringObjectConverter)basicconverters.get(clazz);
}
}
/**
* String -> String converter. (remove?)
*/
class StringTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return val;
}
}
/**
* String -> Integer converter.
*/
class IntegerTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Integer(val);
}
}
/**
* String -> Long converter.
*/
class LongTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Long(val);
}
}
/**
* String -> Float converter.
*/
class FloatTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Float(val);
}
}
/**
* String -> Double converter.
*/
class DoubleTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Double(val);
}
}
/**
* String -> Boolean converter.
*/
class BooleanTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Boolean(val);
}
}
/**
* String -> Short converter.
*/
class ShortTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Short(val);
}
}
/**
* String -> Byte converter.
*/
class ByteTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Byte((String)val);
}
}
/**
* String -> Character converter.
*/
class CharacterTypeConverter implements IStringObjectConverter
{
/**
* Convert a string value to another type.
* @param val The string value to convert.
*/
public Object convertString(String val, IContext context)
{
return new Character(((String)val).charAt(0)); //?
}
}