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

de.gwdg.metadataqa.marc.MarcStructureDefinitionReader Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc;

import de.gwdg.metadataqa.api.util.FileUtils;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import de.gwdg.metadataqa.marc.definition.structure.SubfieldDefinition;

/**
 *
 * @author Péter Király 
 */
public class MarcStructureDefinitionReader {

  List fields = new ArrayList<>();
  Map qualifiedSubfields = new HashMap<>();

  public MarcStructureDefinitionReader(String fileName) 
      throws URISyntaxException, IOException {
    List lines = FileUtils.readLinesFromResource(fileName);
    lines2fields(lines);
    extractQualifiedSubfields();
  }

  private void lines2fields(List lines) {
    MarcField field = null;
    for (String line : lines) {
      if (line.equals("")) {
        field = null;
      } else {
        String[] parts = line.split("\\s+", 3);
        if (field == null) {
          field = new MarcField(parts[0], parts[1], parts[2]);
          fields.add(field);
        } else {
          field.addSubfield(parts[0], parts[1], parts[2]);
        }
      }
    }
  }

  public List getFields() {
    return fields;
  }

  public Map getQualifiedSubfields() {
    return qualifiedSubfields;
  }

  private void extractQualifiedSubfields() {
    for (MarcField field : getFields()) {
      String code = field.getCode();
      qualifiedSubfields.put(code + "$ind1", field.getIndicator1());
      qualifiedSubfields.put(code + "$ind2", field.getIndicator2());
      for (SubfieldDefinition subfield : field.getSubfieldList()) {
        qualifiedSubfields.put(code + "$" + subfield.getCode(), subfield);
      }
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy