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

de.gwdg.metadataqa.marc.definition.general.parser.YYYYMMDDDateParser Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc.definition.general.parser;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class YYYYMMDDDateParser implements SubfieldContentParser, Serializable {

  private String dateFormat = "yyyyMMdd";
  private DateTimeFormatter marc;
  DateTimeFormatter iso = DateTimeFormatter.ISO_DATE;

  private static YYYYMMDDDateParser uniqueInstance;

  private YYYYMMDDDateParser() {
    initialize();
  }

  public static YYYYMMDDDateParser getInstance() {
    if (uniqueInstance == null)
      uniqueInstance = new YYYYMMDDDateParser();
    return uniqueInstance;
  }

  public YYYYMMDDDateParser(String dateFormat) {
    this.dateFormat = dateFormat;
    initialize();
  }

  private void initialize() {
    marc = DateTimeFormatter.ofPattern(dateFormat, Locale.getDefault());
  }

  @Override
  public Map parse(String content) throws ParserException {
    Map extra = new HashMap<>();

    try {
      LocalDate date = LocalDate.parse(content, marc);
      extra.put("normalized", date.format(iso));
    } catch(DateTimeParseException e) {
      throw new ParserException(String.format(
        "Invalid content: '%s'. %s", content, e.getMessage()));
    }
    return extra;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy