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

de.gwdg.metadataqa.marc.utils.keygenerator.PositionalControlFieldKeyGenerator Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc.utils.keygenerator;

import de.gwdg.metadataqa.marc.definition.structure.ControlfieldPositionDefinition;
import de.gwdg.metadataqa.marc.model.SolrFieldType;

public class PositionalControlFieldKeyGenerator {
  private String tag;
  private String mqTag;
  private SolrFieldType type;
  private boolean isLeader = false;

  public PositionalControlFieldKeyGenerator(String tag, String mqTag, SolrFieldType type) {
    this.tag = tag;
    this.mqTag = mqTag;
    this.type = type;
    isLeader = tag.equals(mqTag);
  }

  public String forTag() {
    String key;

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

    return key;
  }

  public String forSubfield(ControlfieldPositionDefinition subfield) {
    String key;
    String code = subfield.getMqTag() != null
      ? subfield.getMqTag()
      : subfield.getId();

    switch (type) {
      case HUMAN:
        key = String.format("%s_%s", forTag(), code);
        break;
      case MIXED:
        if (isLeader) {
          // key = String.format("%s_%s_%s", tag, subfield.formatPositon(), code);
          key = String.format("%s_%s", subfield.getId(), code);
        } else {
          // key = String.format("%s_%s_%s_%s", tag, subfield.formatPositon(), mqTag, code);
          key = String.format("%s_%s_%s", subfield.getId(), mqTag, code);
        }
        break;
      case MARC: default:
        key = String.format("%s_%s", forTag(), subfield.formatPositon());
        break;
    }

    return key;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy