Skip to content

Commit

Permalink
issue #164: PICA: Parsing PICA Plain with $ in field values
Browse files Browse the repository at this point in the history
  • Loading branch information
pkiraly committed Sep 17, 2022
1 parent 4413d62 commit 4d482b8
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/main/java/de/gwdg/metadataqa/marc/utils/pica/PicaLine.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class PicaLine {
private static final String EINGABE = "Eingabe";
private static final String WARNUNG = "Warnung";
private String subfieldSeparator = DEFAULT_SEPARATOR;
private static String DOLLAR_REPLACEMENT = "%26%26";

private String tag;
private String occurrence;
Expand Down Expand Up @@ -107,9 +108,19 @@ private void parse(String raw) {

private void parseSubfields() {
subfields = new ArrayList<>();
String[] parts = content.split(Pattern.quote(subfieldSeparator));
boolean dollarReplacement = false;
String[] parts = null;
if (subfieldSeparator.equals("$") && content.contains("$$")) {
dollarReplacement = true;
parts = content.replace("$$", DOLLAR_REPLACEMENT).split(Pattern.quote(subfieldSeparator));
} else {
parts = content.split(Pattern.quote(subfieldSeparator));
}
for (String part : parts) {
if (StringUtils.isNotBlank(part)) {
if (dollarReplacement) {
part = part.replace(DOLLAR_REPLACEMENT, "$");
}
subfields.add(new PicaSubfield(part.substring(0, 1), part.substring(1)));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,10 @@ public void defaultSeparator() {
assertEquals("$", PicaLine.DEFAULT_SEPARATOR);
}


@Test
public void dollarsign() {
PicaLine line = new PicaLine("005A $00263-9254$f: L 230.00 (jährl., EU), $$ 435.00 (jährl.)");
assertEquals(": L 230.00 (jährl., EU), $ 435.00 (jährl.)", line.getSubfields().get(1).getValue());
}
}

0 comments on commit 4d482b8

Please sign in to comment.