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

de.gwdg.metadataqa.marc.dao.MarcControlField Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc.dao;

import de.gwdg.metadataqa.marc.Extractable;
import de.gwdg.metadataqa.marc.Validatable;
import de.gwdg.metadataqa.marc.dao.record.BibliographicRecord;
import de.gwdg.metadataqa.marc.definition.structure.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.MarcVersion;
import de.gwdg.metadataqa.marc.model.SolrFieldType;
import de.gwdg.metadataqa.marc.model.validation.ValidationError;

import java.io.Serializable;
import java.util.*;

public class MarcControlField implements Validatable, Extractable, Serializable {

  protected BibliographicRecord marcRecord;
  protected DataFieldDefinition definition;
  protected String content;
  protected List initializationErrors = new ArrayList<>();
  protected List validationErrors;

  public MarcControlField() {
  }

  public MarcControlField(DataFieldDefinition definition, String content) {
    this.definition = definition;
    this.content = content;
  }

  public DataFieldDefinition getDefinition() {
    return definition;
  }

  public String getContent() {
    return content;
  }

  public String getSolrKey(SolrFieldType type, String tag, String mqTag) {
    String key;
    switch (type) {
      case HUMAN: key = mqTag; break;
      case MIXED: key = String.format("%s_%s", tag, mqTag); break;
      case MARC:
      default:  key = tag; break;
    }
    return key;
  }

  @Override
  public Map> getKeyValuePairs() {
    return getKeyValuePairs(SolrFieldType.MARC);
  }

  @Override
  public Map> getKeyValuePairs(SolrFieldType type) {
    return getKeyValuePairs(type, MarcVersion.MARC21);
  }

  @Override
  public Map> getKeyValuePairs(SolrFieldType type, MarcVersion marcVersion) {
    Map> map = new LinkedHashMap<>();

    map.put(
      getSolrKey(type, definition.getTag(), definition.getMqTag()),
      Arrays.asList(content));
    return map;
  }

  @Override
  public boolean validate(MarcVersion marcVersion) {
    return true;
  }

  @Override
  public List getValidationErrors() {
    return validationErrors;
  }

  public void setMarcRecord(BibliographicRecord marcRecord) {
    this.marcRecord = marcRecord;
  }

  public List getInitializationErrors() {
    return initializationErrors;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy