package fr.openwide.core.commons.util.functional.converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.apache.commons.lang3.time.DateUtils; import com.google.common.base.Converter; public class StringDateTimeConverter extends Converter<String, Date> { private static final StringDateTimeConverter INSTANCE = new StringDateTimeConverter(); private static final String PATTERN = "yyyy-MM-dd HH:mm"; private static final String PATTERN_FULL = "yyyy-MM-dd HH:mm:ss"; public static StringDateTimeConverter get() { return INSTANCE; } protected StringDateTimeConverter() { } @Override protected Date doForward(String a) { try { return DateUtils.parseDate(a, Locale.ROOT, PATTERN, PATTERN_FULL); } catch (ParseException e) { throw new IllegalArgumentException("Invalid date value '" + a + "'", e); } } @Override protected String doBackward(Date b) { return new SimpleDateFormat(PATTERN_FULL, Locale.ROOT).format(b); } /** * Workaround sonar/findbugs - https://github.com/google/guava/issues/1858 * Guava Converter overrides only equals to add javadoc, but findbugs warns about non coherent equals/hashcode * possible issue. */ @Override public boolean equals(Object object) { return super.equals(object); } /** * Workaround sonar/findbugs - see #equals(Object) */ @Override public int hashCode() { return super.hashCode(); } }