private Converter<?, String> createToStringConverter(Class<?> sourceType) throws ConversionException { if (sourceType.isArray()) { Class<?> componentType = sourceType.getComponentType(); if (componentType == byte.class) return new ByteArrayToBase64Converter(); else if (componentType == char.class) return new CharArray2StringConverter(); else return new FormatFormatConverter(sourceType, new ArrayFormat(), true); } else if (sourceType == Time.class) { return new FormatFormatConverter<Time>(Time.class, new SimpleDateFormat(Patterns.DEFAULT_TIME_PATTERN), false); } else if (sourceType == Timestamp.class) { return new TimestampFormatter(); } else if (sourceType == Date.class) { return new FormatFormatConverter<Time>(Time.class, new SimpleDateFormat(Patterns.DEFAULT_DATETIME_PATTERN), false); } else if (sourceType == Class.class) { return new Class2StringConverter(); } else if (Enum.class.isAssignableFrom(sourceType)) { return new Enum2StringConverter(sourceType); } else { Converter<?, String> result = tryToCreateFactoryConverter(sourceType, String.class); if (result != null) return result; else return new ToStringMethodInvoker(sourceType); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) public ArrayFixedWidthScript(FixedWidthColumnDescriptor[] descriptors) { this.converters = new Converter[descriptors.length]; for (int i = 0; i < descriptors.length; i++) { FixedWidthColumnDescriptor descriptor = descriptors[i]; this.converters[i] = new ConverterChain( new ToStringConverter(), new FormatFormatConverter(String.class, new PadFormat(descriptor.getWidth(), descriptor.getAlignment(), ' '), true ) ); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) public BeanFixedWidthScript(FixedWidthColumnDescriptor[] descriptors) { int length = descriptors.length; String[] propertyNames = new String[length]; Converter[] propertyConverters = new Converter[length]; for (int i = 0; i < length; i++) { FixedWidthColumnDescriptor descriptor = descriptors[i]; propertyNames[i] = descriptor.getName(); propertyConverters[i] = new ConverterChain( new ToStringConverter(), new FormatFormatConverter(String.class, descriptor.getFormat(), true ) ); } this.converter = new ConverterChain( new BeanToPropertyArrayConverter(propertyNames), new ArrayConverter(Object.class, String.class, propertyConverters) ); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public BeanFixedWidthScript(FixedWidthColumnDescriptor[] descriptors) { int length = descriptors.length; String[] propertyNames = new String[length]; Converter[] propertyConverters = new Converter[length]; for (int i = 0; i < length; i++) { FixedWidthColumnDescriptor descriptor = descriptors[i]; propertyNames[i] = descriptor.getName(); propertyConverters[i] = new ConverterChain( new ToStringConverter(), new FormatFormatConverter(String.class, new PadFormat(descriptor.getWidth(), descriptor.getAlignment(), ' '), true ) ); } this.converter = new ConverterChain( new BeanToPropertyArrayConverter(propertyNames), new ArrayConverter(Object.class, String.class, propertyConverters) ); }