All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cz.jalasoft.lifeconfig.converter.StringConverters Maven / Gradle / Ivy

package cz.jalasoft.lifeconfig.converter;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

/**
 * A factory of various converters from string.
 *
 * Created by honzales on 18.4.15.
 */
public final class StringConverters {

    static StringConverter identity() {
        return new StringConverter() {
            @Override
            public String convert(String from) throws ConverterException {
                return from;
            }

            @Override
            public Class targetType() {
                return String.class;
            }
        };
    }

    static StringConverter toByte() {
        return new StringConverter() {
            @Override
            public Class targetType() {
                return Byte.class;
            }

            @Override
            public Byte convert(String from) throws ConverterException {
                try {
                    return Byte.valueOf(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Byte.class);
                }
            }
        };
    }

    static StringConverter toFloat() {
        return new StringConverter() {
            @Override
            public Class targetType() {
                return Float.class;
            }

            @Override
            public Float convert(String from) throws ConverterException {
                try {
                    return Float.valueOf(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Float.class);
                }
            }
        };
    }

    static StringConverter toDouble() {
        return new StringConverter() {
            @Override
            public Double convert(String from) throws ConverterException {
                try {
                    return Double.valueOf(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Double.class);
                }
            }

            @Override
            public Class targetType() {
                return Double.class;
            }
        };
    }

    static StringConverter toShort() {
        return new StringConverter() {
            @Override
            public Class targetType() {
                return Short.class;
            }

            @Override
            public Short convert(String from) throws ConverterException {
                try {
                    return Short.valueOf(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Short.class);
                }
            }
        };
    }

    static StringConverter toInteger() {
        return new StringConverter() {
            @Override
            public Integer convert(String from) throws ConverterException {
                try {
                    return Integer.valueOf(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Integer.class);
                }
            }

            @Override
            public Class targetType() {
                return Integer.class;
            }
        };
    }

    static StringConverter toLong() {
        return new StringConverter() {
            @Override
            public Long convert(String from) throws ConverterException {
                try {
                    return Long.parseLong(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Long.class);
                }
            }

            @Override
            public Class targetType() {
                return Long.class;
            }
        };
    }

    static StringConverter toBoolean() {
        return new StringConverter() {
            @Override
            public Boolean convert(String from) throws ConverterException {
                try {
                    return Boolean.parseBoolean(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Boolean.class);
                }
            }

            @Override
            public Class targetType() {
                return Boolean.class;
            }
        };
    }

    static StringConverter toFloatPrimitive() {
        return new StringConverter() {
            @Override
            public Float convert(String from) throws ConverterException {
                try {
                    return Float.parseFloat(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, float.class);
                }
            }

            @Override
            public Class targetType() {
                return float.class;
            }
        };
    }

    static StringConverter toDoublePrimitive() {
        return new StringConverter() {
            @Override
            public Double convert(String from) throws ConverterException {
                try {
                    return Double.parseDouble(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Double.class);
                }
            }

            @Override
            public Class targetType() {
                return double.class;
            }
        };
    }

    static StringConverter toBooleanPrimitive() {
        return new StringConverter() {
            @Override
            public Boolean convert(String from) throws ConverterException {
                try {
                    return Boolean.parseBoolean(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, boolean.class);
                }
            }

            @Override
            public Class targetType() {
                return boolean.class;
            }
        };
    }

    static StringConverter toBytePrimitive() {
        return new StringConverter() {
            @Override
            public Byte convert(String from) throws ConverterException {
                try {
                    return Byte.parseByte(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, byte.class);
                }
            }

            @Override
            public Class targetType() {
                return byte.class;
            }
        };
    }

    static StringConverter toShortPrimitive() {
        return new StringConverter() {
            @Override
            public Short convert(String from) throws ConverterException {
                try {
                    return Short.parseShort(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Short.class);
                }
            }

            @Override
            public Class targetType() {
                return short.class;
            }
        };
    }

    static StringConverter toIntPrimitive() {
        return new StringConverter() {
            @Override
            public Integer convert(String from) throws ConverterException {
                try {
                    return Integer.parseInt(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Integer.class);
                }
            }

            @Override
            public Class targetType() {
                return int.class;
            }
        };
    }

    static StringConverter toLongPrimitive() {
        return new StringConverter() {
            @Override
            public Long convert(String from) throws ConverterException {
                try {
                    return Long.parseLong(from);
                } catch (NumberFormatException exc) {
                    throw new ConverterException(from, String.class, Long.class);
                }
            }

            @Override
            public Class targetType() {
                return long.class;
            }
        };
    }

    static StringConverter toIntegerOr(final StringConverter alternative) {
        return new StringConverter() {
            @Override
            public Integer convert(String from) throws ConverterException {
                try {
                    return Integer.parseInt(from);
                } catch (NumberFormatException exc) {
                    return alternative.convert(from);
                }
            }

            @Override
            public Class targetType() {
                return Integer.class;
            }
        };
    }

    static StringConverter toLocalDateTime(String pattern) {
        return new StringConverter() {
            @Override
            public LocalDateTime convert(String from) throws ConverterException {
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
                return LocalDateTime.parse(from, formatter);
            }

            @Override
            public Class targetType() {
                return LocalDateTime.class;
            }
        };
    }

    static StringConverter toISOLocalDateTime() {
        return new StringConverter() {
            @Override
            public Class targetType() {
                return LocalDateTime.class;
            }

            @Override
            public LocalDateTime convert(String from) throws ConverterException {
                try {
                    return LocalDateTime.parse(from, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
                } catch (DateTimeParseException exc) {
                    throw new ConverterException(from, String.class, LocalDateTime.class);
                }
            }
        };
    }

    //----------------------------------------------------------------
    //CONSTRUCTOR
    //----------------------------------------------------------------

    private StringConverters() {
        throw new RuntimeException();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy