Search in sources :

Example 6 with ConvertingTypes

use of org.simpleflatmapper.converter.ConvertingTypes in project SimpleFlatMapper by arnaudroger.

the class JodaTimeConverterFactoryProducer method produce.

@Override
public void produce(Consumer<? super ConverterFactory<?, ?>> consumer) {
    // Date to joda time
    factoryConverter(consumer, new AbstractConverterFactory<Date, DateTime>(Date.class, DateTime.class) {

        @Override
        public Converter<Date, DateTime> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new DateToJodaDateTimeConverter(JodaTimeHelper.getDateTimeZoneOrDefault(params));
        }
    });
    constantConverter(consumer, Date.class, Instant.class, new DateToJodaInstantConverter());
    constantConverter(consumer, Date.class, LocalDate.class, new DateToJodaLocalDateConverter());
    constantConverter(consumer, Date.class, LocalDateTime.class, new DateToJodaLocalDateTimeConverter());
    constantConverter(consumer, Date.class, LocalTime.class, new DateToJodaLocalTimeConverter());
    // joda time to date
    constantConverter(consumer, DateTime.class, Date.class, new JodaDateTimeTojuDateConverter());
    constantConverter(consumer, Instant.class, Date.class, new JodaInstantTojuDateConverter());
    constantConverter(consumer, LocalDate.class, Date.class, new JodaLocalDateTojuDateConverter());
    factoryConverter(consumer, new AbstractConverterFactory<LocalDateTime, Date>(LocalDateTime.class, Date.class) {

        @Override
        public Converter<LocalDateTime, Date> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new JodaLocalDateTimeTojuDateConverter(JodaTimeHelper.getDateTimeZoneOrDefault(params));
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<LocalTime, Date>(LocalTime.class, Date.class) {

        @Override
        public Converter<LocalTime, Date> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new JodaLocalTimeTojuDateConverter(JodaTimeHelper.getDateTimeZoneOrDefault(params));
        }
    });
    // char sequence to joda time
    factoryConverter(consumer, new AbstractMultiFormatConverterFactory<CharSequence, DateTime>(CharSequence.class, DateTime.class) {

        @Override
        protected Converter<CharSequence, DateTime> newConverter(DateTimeFormatter formatter) {
            return new CharSequenceToJodaDateTimeConverter(formatter);
        }
    });
    factoryConverter(consumer, new AbstractMultiFormatConverterFactory<CharSequence, Instant>(CharSequence.class, Instant.class) {

        @Override
        protected Converter<CharSequence, Instant> newConverter(DateTimeFormatter formatter) {
            return new CharSequenceToJodaInstantConverter(formatter);
        }
    });
    factoryConverter(consumer, new AbstractMultiFormatConverterFactory<CharSequence, LocalDate>(CharSequence.class, LocalDate.class) {

        @Override
        protected Converter<CharSequence, LocalDate> newConverter(DateTimeFormatter formatter) {
            return new CharSequenceToJodaLocalDateConverter(formatter);
        }
    });
    factoryConverter(consumer, new AbstractMultiFormatConverterFactory<CharSequence, LocalDateTime>(CharSequence.class, LocalDateTime.class) {

        @Override
        protected Converter<CharSequence, LocalDateTime> newConverter(DateTimeFormatter formatter) {
            return new CharSequenceToJodaLocalDateTimeConverter(formatter);
        }
    });
    factoryConverter(consumer, new AbstractMultiFormatConverterFactory<CharSequence, LocalTime>(CharSequence.class, LocalTime.class) {

        @Override
        protected Converter<CharSequence, LocalTime> newConverter(DateTimeFormatter formatter) {
            return new CharSequenceToJodaLocalTimeConverter(formatter);
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<ReadableInstant, String>(ReadableInstant.class, String.class) {

        @Override
        public Converter<? super ReadableInstant, String> newConverter(ConvertingTypes targetedTypes, Object... params) {
            DateTimeFormatter dateTimeFormatter = JodaTimeHelper.getDateTimeFormatter(params);
            if (dateTimeFormatter != null) {
                return new JodaReadableInstantToStringConverter(dateTimeFormatter);
            } else {
                return ToStringConverter.INSTANCE;
            }
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<ReadablePartial, String>(ReadablePartial.class, String.class) {

        @Override
        public Converter<? super ReadablePartial, String> newConverter(ConvertingTypes targetedTypes, Object... params) {
            DateTimeFormatter dateTimeFormatter = JodaTimeHelper.getDateTimeFormatter(params);
            if (dateTimeFormatter != null) {
                return new JodaReadablePartialToStringConverter(dateTimeFormatter);
            } else {
                return ToStringConverter.INSTANCE;
            }
        }
    });
}
Also used : DateToJodaDateTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaDateTimeConverter) LocalDateTime(org.joda.time.LocalDateTime) DateToJodaLocalDateTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalDateTimeConverter) JodaInstantTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaInstantTojuDateConverter) ReadableInstant(org.joda.time.ReadableInstant) JodaReadablePartialToStringConverter(org.simpleflatmapper.converter.joda.impl.JodaReadablePartialToStringConverter) LocalDate(org.joda.time.LocalDate) DateTime(org.joda.time.DateTime) LocalDateTime(org.joda.time.LocalDateTime) JodaReadableInstantToStringConverter(org.simpleflatmapper.converter.joda.impl.JodaReadableInstantToStringConverter) ConvertingTypes(org.simpleflatmapper.converter.ConvertingTypes) CharSequenceToJodaDateTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaDateTimeConverter) ReadablePartial(org.joda.time.ReadablePartial) JodaLocalTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalTimeTojuDateConverter) CharSequenceToJodaInstantConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaInstantConverter) CharSequenceToJodaDateTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaDateTimeConverter) JodaReadableInstantToStringConverter(org.simpleflatmapper.converter.joda.impl.JodaReadableInstantToStringConverter) DateToJodaDateTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaDateTimeConverter) JodaReadablePartialToStringConverter(org.simpleflatmapper.converter.joda.impl.JodaReadablePartialToStringConverter) CharSequenceToJodaLocalTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalTimeConverter) DateToJodaLocalDateConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalDateConverter) CharSequenceToJodaLocalDateTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalDateTimeConverter) DateToJodaInstantConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaInstantConverter) JodaLocalDateTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalDateTojuDateConverter) ToStringConverter(org.simpleflatmapper.converter.ToStringConverter) CharSequenceToJodaLocalDateConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalDateConverter) DateToJodaLocalTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalTimeConverter) JodaLocalTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalTimeTojuDateConverter) JodaLocalDateTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalDateTimeTojuDateConverter) Converter(org.simpleflatmapper.converter.Converter) JodaInstantTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaInstantTojuDateConverter) JodaDateTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaDateTimeTojuDateConverter) DateToJodaLocalDateTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalDateTimeConverter) JodaLocalDateTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalDateTojuDateConverter) JodaDateTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaDateTimeTojuDateConverter) CharSequenceToJodaInstantConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaInstantConverter) DateToJodaLocalDateConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalDateConverter) LocalTime(org.joda.time.LocalTime) CharSequenceToJodaLocalTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalTimeConverter) ReadableInstant(org.joda.time.ReadableInstant) Instant(org.joda.time.Instant) CharSequenceToJodaLocalDateConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalDateConverter) JodaLocalDateTimeTojuDateConverter(org.simpleflatmapper.converter.joda.impl.JodaLocalDateTimeTojuDateConverter) Date(java.util.Date) LocalDate(org.joda.time.LocalDate) DateToJodaInstantConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaInstantConverter) CharSequenceToJodaLocalDateTimeConverter(org.simpleflatmapper.converter.joda.impl.CharSequenceToJodaLocalDateTimeConverter) DateTimeFormatter(org.joda.time.format.DateTimeFormatter) DateToJodaLocalTimeConverter(org.simpleflatmapper.converter.joda.impl.DateToJodaLocalTimeConverter)

Example 7 with ConvertingTypes

use of org.simpleflatmapper.converter.ConvertingTypes in project SimpleFlatMapper by arnaudroger.

the class JavaBaseConverterFactoryProducer method produce.

@Override
public void produce(Consumer<? super ConverterFactory<?, ?>> consumer) {
    constantConverter(consumer, Number.class, Byte.class, new NumberByteConverter());
    constantConverter(consumer, Number.class, Short.class, new NumberShortConverter());
    constantConverter(consumer, Number.class, Integer.class, new NumberIntegerConverter());
    constantConverter(consumer, Number.class, Long.class, new NumberLongConverter());
    constantConverter(consumer, Number.class, Float.class, new NumberFloatConverter());
    constantConverter(consumer, Number.class, Double.class, new NumberDoubleConverter());
    constantConverter(consumer, Number.class, BigDecimal.class, new NumberBigDecimalConverter());
    constantConverter(consumer, Number.class, BigInteger.class, new NumberBigIntegerConverter());
    constantConverter(consumer, CharSequence.class, Byte.class, new CharSequenceByteConverter());
    constantConverter(consumer, CharSequence.class, BigInteger.class, new CharSequenceBigInteger());
    constantConverter(consumer, CharSequence.class, BigDecimal.class, new CharSequenceBigDecimal());
    constantConverter(consumer, CharSequence.class, Character.class, new CharSequenceCharacterConverter());
    constantConverter(consumer, CharSequence.class, Short.class, new CharSequenceShortConverter());
    constantConverter(consumer, CharSequence.class, Integer.class, new CharSequenceIntegerConverter());
    constantConverter(consumer, CharSequence.class, Long.class, new CharSequenceLongConverter());
    constantConverter(consumer, CharSequence.class, Float.class, new CharSequenceFloatConverter());
    constantConverter(consumer, CharSequence.class, Double.class, new CharSequenceDoubleConverter());
    constantConverter(consumer, CharSequence.class, UUID.class, new CharSequenceUUIDConverter());
    constantConverter(consumer, CharSequence.class, Boolean.class, new CharSequenceBooleanConverter());
    factoryConverter(consumer, new AbstractConverterFactory<CharSequence, Date>(CharSequence.class, Date.class) {

        @Override
        public Converter<? super CharSequence, ? extends Date> newConverter(ConvertingTypes targetedTypes, Object... params) {
            String format = getFormat(params);
            if (format != null) {
                return new CharSequenceToDateConverter(format);
            } else
                return null;
        }

        private String getFormat(Object[] params) {
            String defaultValue = null;
            if (params != null) {
                for (Object o : params) {
                    if (o instanceof DefaultDateFormatSupplier) {
                        defaultValue = ((DefaultDateFormatSupplier) o).get();
                    } else if (o instanceof DateFormatSupplier) {
                        return ((DateFormatSupplier) o).get();
                    }
                }
            }
            return defaultValue;
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<CharSequence, Enum>(CharSequence.class, Enum.class) {

        @SuppressWarnings("unchecked")
        public Converter<? super CharSequence, ? extends Enum> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new CharSequenceToEnumConverter(TypeHelper.toClass(targetedTypes.getTo()));
        }

        @Override
        public ConvertingScore score(ConvertingTypes targetedTypes) {
            if (TypeHelper.isAssignable(Enum.class, targetedTypes.getTo())) {
                return new ConvertingScore(ConvertingTypes.getSourceScore(convertingTypes.getFrom(), targetedTypes.getFrom()), ConvertingScore.MAX_SCORE);
            }
            return ConvertingScore.NO_MATCH;
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<Number, Enum>(Number.class, Enum.class) {

        @SuppressWarnings("unchecked")
        public Converter<? super Number, ? extends Enum> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new NumberToEnumConverter(TypeHelper.toClass(targetedTypes.getTo()));
        }

        @Override
        public ConvertingScore score(ConvertingTypes targetedTypes) {
            if (TypeHelper.isAssignable(Enum.class, targetedTypes.getTo())) {
                return new ConvertingScore(ConvertingTypes.getSourceScore(convertingTypes.getFrom(), targetedTypes.getFrom()), ConvertingScore.MAX_SCORE);
            }
            return ConvertingScore.NO_MATCH;
        }
    });
    factoryConverter(consumer, new AbstractConverterFactory<Object, Enum>(Object.class, Enum.class) {

        @SuppressWarnings("unchecked")
        public Converter<? super Object, ? extends Enum> newConverter(ConvertingTypes targetedTypes, Object... params) {
            return new ObjectToEnumConverter(TypeHelper.toClass(targetedTypes.getTo()));
        }

        @Override
        public ConvertingScore score(ConvertingTypes targetedTypes) {
            if (TypeHelper.isAssignable(Enum.class, targetedTypes.getTo())) {
                return new ConvertingScore(ConvertingTypes.getSourceScore(convertingTypes.getFrom(), targetedTypes.getFrom()), ConvertingScore.MAX_SCORE);
            }
            return ConvertingScore.NO_MATCH;
        }
    });
    constantConverter(consumer, Object.class, String.class, ToStringConverter.INSTANCE);
    constantConverter(consumer, Object.class, URL.class, new ToStringToURLConverter());
}
Also used : ConvertingTypes(org.simpleflatmapper.converter.ConvertingTypes) DefaultDateFormatSupplier(org.simpleflatmapper.util.date.DefaultDateFormatSupplier) DateFormatSupplier(org.simpleflatmapper.util.date.DateFormatSupplier) Converter(org.simpleflatmapper.converter.Converter) ToStringConverter(org.simpleflatmapper.converter.ToStringConverter) ConvertingScore(org.simpleflatmapper.converter.ConvertingScore) Date(java.util.Date) DefaultDateFormatSupplier(org.simpleflatmapper.util.date.DefaultDateFormatSupplier)

Aggregations

ConvertingTypes (org.simpleflatmapper.converter.ConvertingTypes)7 Test (org.junit.Test)4 Converter (org.simpleflatmapper.converter.Converter)3 Date (java.util.Date)2 ConvertingScore (org.simpleflatmapper.converter.ConvertingScore)2 ToStringConverter (org.simpleflatmapper.converter.ToStringConverter)2 Type (java.lang.reflect.Type)1 Array (java.sql.Array)1 ResultSet (java.sql.ResultSet)1 Time (java.sql.Time)1 LocalTime (java.time.LocalTime)1 OffsetTime (java.time.OffsetTime)1 ZoneOffset (java.time.ZoneOffset)1 List (java.util.List)1 DateTime (org.joda.time.DateTime)1 Instant (org.joda.time.Instant)1 LocalDate (org.joda.time.LocalDate)1 LocalDateTime (org.joda.time.LocalDateTime)1 LocalTime (org.joda.time.LocalTime)1 ReadableInstant (org.joda.time.ReadableInstant)1