
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