From c8216caec4fc5ad42fa51f1f0e3098122697db19 Mon Sep 17 00:00:00 2001 From: Roman_Chernetskyi Date: Wed, 9 Oct 2024 17:01:15 +0300 Subject: [PATCH] Add tests --- .../dataimport/util/AdditionalFieldsUtil.java | 17 ++++------- .../util/AdditionalFieldsUtilTest.java | 29 +++++++++++++++++++ 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtil.java b/src/main/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtil.java index a3cea2b37..eb3622362 100644 --- a/src/main/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtil.java +++ b/src/main/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtil.java @@ -275,23 +275,19 @@ public static void move001To035(Record srcRecord) { public static void normalize035(Record srcRecord) { List subfields = get035SubfieldOclcValues(srcRecord, TAG_035); if (!subfields.isEmpty()) { - boolean isFormatted = formatOclc(subfields); - boolean isDeduplicated = deduplicateOclc(srcRecord, subfields, TAG_035); - if (isFormatted || isDeduplicated) { - recalculateLeaderAndParsedRecord(srcRecord); - } + formatOclc(subfields); + deduplicateOclc(srcRecord, subfields, TAG_035); + recalculateLeaderAndParsedRecord(srcRecord); } } - private static boolean formatOclc(List subfields) { + private static void formatOclc(List subfields) { Pattern pattern = Pattern.compile(OCLC_PATTERN); - boolean formatted = false; for (Subfield subfield : subfields) { String data = subfield.getData().replaceAll("[.\\s]", ""); Matcher matcher = pattern.matcher(data); if (matcher.find()) { - formatted = true; String oclcTag = matcher.group(1); // "OCoLC" String numericAndTrailing = matcher.group(5); // Numeric part and any characters that follow String prefix = matcher.group(2); // Entire prefix including letters and potentially leading zeros @@ -310,10 +306,9 @@ private static boolean formatOclc(List subfields) { } } } - return formatted; } - private static boolean deduplicateOclc(Record srcRecord, List subfields, String tag) { + private static void deduplicateOclc(Record srcRecord, List subfields, String tag) { List subfieldsToDelete = new ArrayList<>(); for (Subfield subfield: new ArrayList<>(subfields)) { @@ -328,8 +323,6 @@ private static boolean deduplicateOclc(Record srcRecord, List subfield subfieldsToDelete.forEach(subfieldToDelete -> variableFields.forEach(field -> removeSubfieldIfExist(marcRecord, field, subfieldToDelete))); }); - - return !subfieldsToDelete.isEmpty(); } private static boolean isOclcSubfieldDuplicated(Subfield s1, Subfield s2) { diff --git a/src/test/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtilTest.java b/src/test/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtilTest.java index d37b4e5ad..72376fc48 100644 --- a/src/test/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtilTest.java +++ b/src/test/java/org/folio/inventory/dataimport/util/AdditionalFieldsUtilTest.java @@ -444,6 +444,35 @@ public static Collection data() { "{\"leader\":\"00098nam 22000611a 4500\",\"fields\":[{\"001\":\"in001\"}," + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)607TST001\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + "{\"500\":{\"subfields\":[{\"a\":\"data\"}],\"ind1\":\" \",\"ind2\":\" \"}}]}" + }, + { + "{\"leader\":\"00120nam 22000731a 4500\",\"fields\":[{\"001\":\"in001\"}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC-M)ocn0001234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(ABC)ocn0001234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)ocn0001234\"}, {\"a\":\"(OCoLC)ocn1234\"}, {\"b\":\"(OCoLC)ocn1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)ocm1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)ocn00098765\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)ocn0001234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"500\":{\"subfields\":[{\"a\":\"data\"}],\"ind1\":\" \",\"ind2\":\" \"}}]}", + + "{\"leader\":\"00218nam 22001091a 4500\",\"fields\":[{\"001\":\"in001\"}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC-M)ocn0001234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(ABC)ocn0001234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"b\":\"(OCoLC)1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)98765\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"500\":{\"subfields\":[{\"a\":\"data\"}],\"ind1\":\" \",\"ind2\":\" \"}}]}" + }, + { + "{\"leader\":\"00126nam 22000731a 4500\",\"fields\":[{\"001\":\"in001\"}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC-M)1234456\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"500\":{\"subfields\":[{\"a\":\"data\"}],\"ind1\":\" \",\"ind2\":\" \"}}]}", + + "{\"leader\":\"00126nam 22000731a 4500\",\"fields\":[{\"001\":\"in001\"}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC)1234\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"035\":{\"subfields\":[{\"a\":\"(OCoLC-M)1234456\"}],\"ind1\":\" \",\"ind2\":\" \"}}," + + "{\"500\":{\"subfields\":[{\"a\":\"data\"}],\"ind1\":\" \",\"ind2\":\" \"}}]}" } }); }