From 25cb772bed78fd7d699cd09e4508cdd48f1b5512 Mon Sep 17 00:00:00 2001 From: Mark Noble Date: Mon, 13 May 2024 07:53:46 -0600 Subject: [PATCH 1/2] Check to see if format field has a valid value and that it's in the format map before translating it --- code/reindexer/reindexer.jar | Bin 897358 -> 897370 bytes .../KohaRecordFormatClassifier.java | 14 ++++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/reindexer/reindexer.jar b/code/reindexer/reindexer.jar index 6fbaf463352307e9e1190bad2e1cfe3f960c6ed6..6700961f55e9533e973d98e809bd4771f7e6af74 100644 GIT binary patch delta 6076 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 delta 6188 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 diff --git a/code/reindexer/src/org/aspen_discovery/format_classification/KohaRecordFormatClassifier.java b/code/reindexer/src/org/aspen_discovery/format_classification/KohaRecordFormatClassifier.java index 131060c861..f34c213f47 100644 --- a/code/reindexer/src/org/aspen_discovery/format_classification/KohaRecordFormatClassifier.java +++ b/code/reindexer/src/org/aspen_discovery/format_classification/KohaRecordFormatClassifier.java @@ -92,12 +92,14 @@ public FormatInfo getFormatInfoForItem(DataField itemField, BaseIndexingSettings if (!foundFormatFromShelfLocation && !foundFormatFromSublocation && !foundFormatFromCollection && !foundFormatFromIType) { String format = MarcUtil.getItemSubfieldData(profile.getFormatSubfield(), itemField, logEntry, logger); - String translatedFormat = profile.translateValue("format", format); - if (translatedFormat != null && !translatedFormat.isEmpty()) { - formatInfo.format = translatedFormat; - formatInfo.formatCategory = profile.translateValue("format_category", format); - if (profile.hasTranslation("format_boost", format)) { - formatBoost = profile.translateValue("format_boost", format); + if (format != null && profile.hasTranslation("format", format)) { + String translatedFormat = profile.translateValue("format", format); + if (translatedFormat != null && !translatedFormat.isEmpty()) { + formatInfo.format = translatedFormat; + formatInfo.formatCategory = profile.translateValue("format_category", format); + if (profile.hasTranslation("format_boost", format)) { + formatBoost = profile.translateValue("format_boost", format); + } } } } From 637c8884cea5fe8f21ea44559878eba25977bca0 Mon Sep 17 00:00:00 2001 From: Mark Noble Date: Mon, 13 May 2024 09:20:52 -0600 Subject: [PATCH 2/2] Cloud Library Export fixes --- .../cloud_library_export.jar | Bin 591241 -> 591187 bytes .../cloud_library/CloudLibraryExporter.java | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/code/cloud_library_export/cloud_library_export.jar b/code/cloud_library_export/cloud_library_export.jar index d8df512a8623ce497d3730db6a4cbaaab5c848d8..2b5277707662486253f3cf7a0c1a921881bc61fa 100644 GIT binary patch delta 12754 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≦wcKqMK2*|l+A^hCO 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 0) { try { //Sleep a little bit to allow the server to calm down. @@ -446,7 +446,10 @@ CloudLibraryAvailability loadAvailabilityForRecord(String cloudLibraryId) { } } numTries++; - if (numTries == 3 && !callSucceeded) { + if (callSucceeded) { + break; + } + if (numTries == 3) { logEntry.incErrors("Did not get a successful API response after 3 tries for " + settings.getBaseUrl() + apiPath); break; } @@ -460,11 +463,11 @@ CloudLibraryAvailabilityType loadAvailabilityTypeForRecord(String cloudLibraryId boolean callSucceeded = false; CloudLibraryAvailabilityType availabilityType = new CloudLibraryAvailabilityType(); String apiPath = "/cirrus/library/" + settings.getLibraryId() + "/circulation/item/" + cloudLibraryId; - while (!callSucceeded && numTries < 3) { + while (numTries < 3) { if (numTries > 0) { try { //Sleep a little bit to allow the server to calm down. - Thread.sleep(60000); + Thread.sleep(15000); } catch (InterruptedException e) { //Not a big deal if this gets interrupted } @@ -484,6 +487,8 @@ CloudLibraryAvailabilityType loadAvailabilityTypeForRecord(String cloudLibraryId logger.info("Error getting availability type from " + apiPath + ": " + response.getResponseCode()); } } else { + callSucceeded = true; + availabilityType.setRawResponse(response.getMessage()); CloudLibraryAvailabilityTypeHandler handler = new CloudLibraryAvailabilityTypeHandler(availabilityType); @@ -497,7 +502,10 @@ CloudLibraryAvailabilityType loadAvailabilityTypeForRecord(String cloudLibraryId } } numTries++; - if (numTries == 3 && !callSucceeded) { + if (callSucceeded) { + break; + } + if (numTries == 3) { logEntry.incErrors("Did not get a successful API response after 3 tries for " + settings.getBaseUrl() + apiPath); break; }