diff --git a/src/main/java/org/folio/bulkops/domain/bean/ContributorName.java b/src/main/java/org/folio/bulkops/domain/bean/ContributorName.java index e69730c86..55db96a59 100644 --- a/src/main/java/org/folio/bulkops/domain/bean/ContributorName.java +++ b/src/main/java/org/folio/bulkops/domain/bean/ContributorName.java @@ -17,5 +17,20 @@ public class ContributorName { @JsonProperty("name") private String name; + + @JsonProperty("contributorTypeId") + private String contributorTypeId; + + @JsonProperty("contributorTypeText") + private String contributorTypeText; + + @JsonProperty("contributorNameTypeId") + private String contributorNameTypeId; + + @JsonProperty("authorityId") + private String authorityId; + + @JsonProperty("primary") + private Boolean primary; } diff --git a/src/main/java/org/folio/bulkops/processor/InstanceDataProcessor.java b/src/main/java/org/folio/bulkops/processor/InstanceDataProcessor.java index d5428fb9f..48e767ec9 100644 --- a/src/main/java/org/folio/bulkops/processor/InstanceDataProcessor.java +++ b/src/main/java/org/folio/bulkops/processor/InstanceDataProcessor.java @@ -4,7 +4,7 @@ import static org.folio.bulkops.domain.dto.UpdateActionType.CLEAR_FIELD; import static org.folio.bulkops.domain.dto.UpdateActionType.SET_TO_FALSE; import static org.folio.bulkops.domain.dto.UpdateActionType.SET_TO_TRUE; -import static org.folio.bulkops.domain.dto.UpdateOptionType.SUPPRESS_FROM_DISCOVERY; +import static org.folio.bulkops.domain.dto.UpdateOptionType.STAFF_SUPPRESS; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -24,19 +24,19 @@ public class InstanceDataProcessor extends AbstractDataProcessor { @Override public Validator validator(Instance instance) { return (option, action) -> { - if (CLEAR_FIELD.equals(action.getType()) && SUPPRESS_FROM_DISCOVERY.equals(option)) { - throw new RuleValidationException("Suppress from discovery flag cannot be cleared"); + if (CLEAR_FIELD.equals(action.getType()) && STAFF_SUPPRESS.equals(option)) { + throw new RuleValidationException("Staff suppress flag cannot be cleared"); } }; } @Override public Updater updater(UpdateOptionType option, Action action) { - if (SUPPRESS_FROM_DISCOVERY.equals(option)) { + if (STAFF_SUPPRESS.equals(option)) { if (SET_TO_TRUE.equals(action.getType())) { - return instance -> instance.setDiscoverySuppress(true); + return instance -> instance.setStaffSuppress(true); } else if (SET_TO_FALSE.equals(action.getType())) { - return instance -> instance.setDiscoverySuppress(false); + return instance -> instance.setStaffSuppress(false); } } return item -> { diff --git a/src/main/java/org/folio/bulkops/service/InstanceReferenceService.java b/src/main/java/org/folio/bulkops/service/InstanceReferenceService.java index 4bfb6fd2f..0888429ed 100644 --- a/src/main/java/org/folio/bulkops/service/InstanceReferenceService.java +++ b/src/main/java/org/folio/bulkops/service/InstanceReferenceService.java @@ -104,7 +104,7 @@ public String getInstanceFormatNameById(String id) { try { return isEmpty(id) ? EMPTY : instanceFormatsClient.getById(id).getName(); } catch (Exception e) { - throw new NotFoundException(format("Nature of content term was not found by id=%s", id)); + throw new NotFoundException(format("Instance format was not found by id=%s", id)); } } @@ -112,7 +112,7 @@ public String getInstanceFormatNameById(String id) { public String getInstanceFormatIdByName(String name) { var response = instanceFormatsClient.getByQuery(String.format(QUERY_PATTERN_NAME, encode(name)), 1); if (response.getFormats().isEmpty()) { - throw new NotFoundException(format("Nature of content term was not found by name=%s", name)); + throw new NotFoundException(format("Instance format was not found by name=%s", name)); } return response.getFormats().get(0).getId(); } diff --git a/src/main/resources/db/changelog/changelog-master.xml b/src/main/resources/db/changelog/changelog-master.xml index 118e79618..6cb284384 100644 --- a/src/main/resources/db/changelog/changelog-master.xml +++ b/src/main/resources/db/changelog/changelog-master.xml @@ -21,4 +21,5 @@ + diff --git a/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.sql b/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.sql new file mode 100644 index 000000000..20ece4359 --- /dev/null +++ b/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.sql @@ -0,0 +1 @@ +ALTER TYPE UpdateOptionType ADD VALUE IF NOT EXISTS 'STAFF_SUPPRESS'; diff --git a/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.xml b/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.xml new file mode 100644 index 000000000..5cec62228 --- /dev/null +++ b/src/main/resources/db/changelog/changes/05-01-2024_add_staff_suppress.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/main/resources/swagger.api/schemas/update_option_type.json b/src/main/resources/swagger.api/schemas/update_option_type.json index ee2f8f96f..9d2eb6f31 100644 --- a/src/main/resources/swagger.api/schemas/update_option_type.json +++ b/src/main/resources/swagger.api/schemas/update_option_type.json @@ -22,7 +22,8 @@ "ELECTRONIC_ACCESS_URI", "ELECTRONIC_ACCESS_LINK_TEXT", "ELECTRONIC_ACCESS_MATERIALS_SPECIFIED", - "ELECTRONIC_ACCESS_URL_PUBLIC_NOTE" + "ELECTRONIC_ACCESS_URL_PUBLIC_NOTE", + "STAFF_SUPPRESS" ] } } diff --git a/src/test/java/org/folio/bulkops/processor/InstanceDataProcessorTest.java b/src/test/java/org/folio/bulkops/processor/InstanceDataProcessorTest.java index 63d188641..7c5ef4ffb 100644 --- a/src/test/java/org/folio/bulkops/processor/InstanceDataProcessorTest.java +++ b/src/test/java/org/folio/bulkops/processor/InstanceDataProcessorTest.java @@ -4,7 +4,7 @@ import static org.folio.bulkops.domain.dto.UpdateActionType.CLEAR_FIELD; import static org.folio.bulkops.domain.dto.UpdateActionType.SET_TO_FALSE; import static org.folio.bulkops.domain.dto.UpdateActionType.SET_TO_TRUE; -import static org.folio.bulkops.domain.dto.UpdateOptionType.SUPPRESS_FROM_DISCOVERY; +import static org.folio.bulkops.domain.dto.UpdateOptionType.STAFF_SUPPRESS; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -43,22 +43,22 @@ void setUp() { } @Test - void testSetDiscoverySuppressToTrue() { - var actual = processor.process(IDENTIFIER, new Instance(), rules(rule(SUPPRESS_FROM_DISCOVERY, SET_TO_TRUE, null))); + void testSetStaffSuppressToTrue() { + var actual = processor.process(IDENTIFIER, new Instance(), rules(rule(STAFF_SUPPRESS, SET_TO_TRUE, null))); assertNotNull(actual.getUpdated()); - assertTrue(actual.getUpdated().getDiscoverySuppress()); + assertTrue(actual.getUpdated().getStaffSuppress()); } @Test - void testSetDiscoverySuppressToFalse() { - var actual = processor.process(IDENTIFIER, new Instance(), rules(rule(SUPPRESS_FROM_DISCOVERY, SET_TO_FALSE, null))); + void testSetStaffSuppressToFalse() { + var actual = processor.process(IDENTIFIER, new Instance(), rules(rule(STAFF_SUPPRESS, SET_TO_FALSE, null))); assertNotNull(actual.getUpdated()); - assertFalse(actual.getUpdated().getDiscoverySuppress()); + assertFalse(actual.getUpdated().getStaffSuppress()); } @Test void shouldNotUpdateInstanceWhenActionIsInvalid() { - var actual = processor.process(IDENTIFIER, new Instance().withDiscoverySuppress(true), rules(rule(SUPPRESS_FROM_DISCOVERY, CLEAR_FIELD, null))); + var actual = processor.process(IDENTIFIER, new Instance().withDiscoverySuppress(true), rules(rule(STAFF_SUPPRESS, CLEAR_FIELD, null))); assertTrue(actual.getUpdated().getDiscoverySuppress()); verify(errorService).saveError(any(UUID.class), eq(IDENTIFIER), anyString()); } diff --git a/src/test/java/org/folio/bulkops/service/OpenCSVConverterTest.java b/src/test/java/org/folio/bulkops/service/OpenCSVConverterTest.java index 8b8886f09..65ff921d6 100644 --- a/src/test/java/org/folio/bulkops/service/OpenCSVConverterTest.java +++ b/src/test/java/org/folio/bulkops/service/OpenCSVConverterTest.java @@ -160,6 +160,11 @@ void shouldConvertEntity(Class clazz) throws IOException { .usingRecursiveComparison() .ignoringFields("circulationNotes", "effectiveCallNumberComponents", "metadata", "status.date") .isEqualTo(bean); + } else if (result instanceof Instance instance) { + assertThat(instance) + .usingRecursiveComparison() + .ignoringFields("version", "contributors.contributorTypeId", "contributors.contributorTypeText", "contributors.contributorNameTypeId", "contributors.authorityId", "contributors.primary") + .isEqualTo(bean); } else { assertEquals(bean, result); }