package org.jabref.logic.formatter.bibtexfields; import java.util.Optional; import org.jabref.logic.l10n.Localization; import org.jabref.model.cleanup.Formatter; import org.jabref.model.entry.Date; /** * This class transforms date to the format yyyy-mm-dd or yyyy-mm.. */ public class NormalizeDateFormatter implements Formatter { @Override public String getName() { return Localization.lang("Normalize date"); } @Override public String getKey() { return "normalize_date"; } /** * Format date string to yyyy-mm-dd or yyyy-mm. Keeps the existing String if it does not match one of the following * formats: * "M/y" (covers 9/15, 9/2015, and 09/2015) * "MMMM (dd), yyyy" (covers September 1, 2015 and September, 2015) * "yyyy-MM-dd" (covers 2009-1-15) * "d.M.uuuu" (covers 15.1.2015) */ @Override public String format(String value) { Optional<Date> parsedDate = Date.parse(value); return parsedDate.map(Date::getNormalized).orElse(value); } @Override public String getDescription() { return Localization.lang("Normalizes the date to ISO date format."); } @Override public String getExampleInput() { return "29.11.2003"; } @Override public int hashCode() { return defaultHashCode(); } @Override public boolean equals(Object obj) { return defaultEquals(obj); } }