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

org.mongodb.morphia.converters.DateConverter Maven / Gradle / Ivy

The newest version!
package org.mongodb.morphia.converters;


import org.mongodb.morphia.logging.Logger;
import org.mongodb.morphia.logging.MorphiaLoggerFactory;
import org.mongodb.morphia.mapping.MappedField;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


/**
 * @author Uwe Schaefer, ([email protected])
 * @author scotthernandez
 */
public class DateConverter extends TypeConverter implements SimpleValueConverter {
    private static final Logger LOG = MorphiaLoggerFactory.get(DateConverter.class);


    /**
     * Creates the Converter.
     */
    public DateConverter() {
        this(Date.class);
    }

    protected DateConverter(final Class clazz) {
        super(clazz);
    }

    @Override
    public Object decode(final Class targetClass, final Object val, final MappedField optionalExtraInfo) {
        if (val == null) {
            return null;
        }

        if (val instanceof Date) {
            return val;
        }

        if (val instanceof Number) {
            return new Date(((Number) val).longValue());
        }

        if (val instanceof String) {
            try {
                return new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.US).parse((String) val);
            } catch (ParseException e) {
                LOG.error("Can't parse Date from: " + val);
            }

        }

        throw new IllegalArgumentException("Can't convert to Date from " + val);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy