Skip to content

Commit

Permalink
issue #142: calculating PICA completeness
Browse files Browse the repository at this point in the history
  • Loading branch information
pkiraly committed Jun 20, 2022
1 parent 9c877b7 commit 50d0470
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ private String getPackageName(DataField field) {
if (packageNameCache.containsKey(field.getDefinition()))
packageName = packageNameCache.get(field.getDefinition());
else {
packageName = Utils.extractPackageName(field);
packageName = plugin.getPackageName(field);
if (StringUtils.isBlank(packageName)) {
logger.warning(String.format("%s has no package. /%s", field, field.getDefinition().getClass()));
packageName = TagCategory.other.getPackageName();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package de.gwdg.metadataqa.marc.cli.plugin;

import de.gwdg.metadataqa.marc.dao.DataField;
import de.gwdg.metadataqa.marc.dao.MarcRecord;
import de.gwdg.metadataqa.marc.utils.TagHierarchy;

public interface CompletenessPlugin {
String getDocumentType(MarcRecord marcRecord);
TagHierarchy getTagHierarchy(String path);
String getPackageName(DataField field);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package de.gwdg.metadataqa.marc.cli.plugin;

import de.gwdg.metadataqa.marc.Utils;
import de.gwdg.metadataqa.marc.cli.parameters.CompletenessParameters;
import de.gwdg.metadataqa.marc.dao.DataField;
import de.gwdg.metadataqa.marc.dao.MarcRecord;
import de.gwdg.metadataqa.marc.utils.TagHierarchy;

Expand All @@ -22,4 +24,9 @@ public String getDocumentType(MarcRecord marcRecord) {
public TagHierarchy getTagHierarchy(String path) {
return TagHierarchy.createFromPath(path, parameters.getMarcVersion());
}

@Override
public String getPackageName(DataField field) {
return Utils.extractPackageName(field);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import de.gwdg.metadataqa.marc.Utils;
import de.gwdg.metadataqa.marc.cli.parameters.CompletenessParameters;
import de.gwdg.metadataqa.marc.dao.DataField;
import de.gwdg.metadataqa.marc.dao.MarcRecord;
import de.gwdg.metadataqa.marc.definition.structure.SubfieldDefinition;
import de.gwdg.metadataqa.marc.definition.tags.TagCategory;
Expand Down Expand Up @@ -63,7 +64,7 @@ public TagHierarchy getTagHierarchy(String rawpath) {
PicaFieldDefinition field = picaSchema.get(path.getField());
TagCategory category = TagCategory.other;
if (field != null) {
category = TagCategory.pica;
category = getTagCategory(field);
fieldLabel = field.getLabel();
if (!path.getSubfield().equals("")){
SubfieldDefinition subfield = field.getSubfield(path.getSubfield());
Expand All @@ -74,6 +75,24 @@ public TagHierarchy getTagHierarchy(String rawpath) {
return new TagHierarchy(category, fieldLabel, subfieldLabel);
}

@Override
public String getPackageName(DataField field) {
if (field.getDefinition() != null) {
return getTagCategory((PicaFieldDefinition) field.getDefinition()).getPackageName();
}
return TagCategory.other.getPackageName();
}

private TagCategory getTagCategory(PicaFieldDefinition field) {
switch (field.getTag().substring(0, 1)) {
case "0": return TagCategory.pica0;
case "1": return TagCategory.pica1;
case "2": return TagCategory.pica2;
default:
return TagCategory.other;
}
}

private FieldPath parse(String path) {
String[] parts = path.split(separator);
if (parts.length == 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ public enum TagCategory {
bl(20, "bltags", "BL", "Locally defined tags of the British Library", false),
uva(21, "uvatags", "UvA", "Locally defined tags of University of Amsterdam", false),
b3kat(22, "b3kattags", "B3Kat", "Locally defined tags of a German union cataogue B3Kat", false),
pica(50, "pica", "PICA", "PICA+ tags", false),
pica0(50, "pica0", "0...", "PICA+ bibliograhic description", false),
pica1(51, "pica1", "1...", "PICA+ holding", false),
pica2(52, "pica2", "2...", "PICA+ item", false),
other(99, "unknown", "unknown", "unknown origin", false)
;

Expand Down

0 comments on commit 50d0470

Please sign in to comment.