Skip to content

Commit

Permalink
MODBULKOPS-334 Fixed test
Browse files Browse the repository at this point in the history
  • Loading branch information
obozhko-folio committed Oct 17, 2024
1 parent 19ca8d2 commit 7fdff0c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@
@Component
public class ElectronicAccessUpdaterFactory {

public Updater<? extends ElectronicAccessEntity> updater(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
public Updater<? extends ElectronicAccessEntity> updater(UpdateOptionType option, Action action) {
return switch (option) {
case ELECTRONIC_ACCESS_URL_RELATIONSHIP -> updateUrlRelationship(option, action, holdingsDataProcessor);
case ELECTRONIC_ACCESS_URI -> updateUri(option, action, holdingsDataProcessor);
case ELECTRONIC_ACCESS_LINK_TEXT -> updateLinkText(option, action, holdingsDataProcessor);
case ELECTRONIC_ACCESS_MATERIALS_SPECIFIED -> updateMaterialsSpecified(option, action, holdingsDataProcessor);
case ELECTRONIC_ACCESS_URL_PUBLIC_NOTE -> updatePublicNote(option, action, holdingsDataProcessor);
case ELECTRONIC_ACCESS_URL_RELATIONSHIP -> updateUrlRelationship(option, action);
case ELECTRONIC_ACCESS_URI -> updateUri(option, action);
case ELECTRONIC_ACCESS_LINK_TEXT -> updateLinkText(option, action);
case ELECTRONIC_ACCESS_MATERIALS_SPECIFIED -> updateMaterialsSpecified(option, action);
case ELECTRONIC_ACCESS_URL_PUBLIC_NOTE -> updatePublicNote(option, action);
default -> notSupported(option, action);
};
}

private Updater<? extends ElectronicAccessEntity> updateUrlRelationship(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
private Updater<? extends ElectronicAccessEntity> updateUrlRelationship(UpdateOptionType option, Action action) {
return switch (action.getType()) {
case CLEAR_FIELD -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setRelationshipId(null)));
Expand All @@ -41,15 +41,12 @@ private Updater<? extends ElectronicAccessEntity> updateUrlRelationship(UpdateOp
.filter(electronicAccess -> equalsIgnoreCase(electronicAccess.getRelationshipId(), action.getInitial()))
.forEach(electronicAccess -> electronicAccess.setRelationshipId(action.getUpdated())));
case REPLACE_WITH -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> {
electronicAccess.setRelationshipId(action.getUpdated());
electronicAccess.setTenantId(holdingsDataProcessor.getTenantFromAction(action));
}));
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setRelationshipId(action.getUpdated())));
default -> notSupported(option, action);
};
}

private Updater<? extends ElectronicAccessEntity> updateUri(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
private Updater<? extends ElectronicAccessEntity> updateUri(UpdateOptionType option, Action action) {
return switch (action.getType()) {
case CLEAR_FIELD -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setUri(EMPTY)));
Expand All @@ -62,15 +59,12 @@ private Updater<? extends ElectronicAccessEntity> updateUri(UpdateOptionType opt
.filter(electronicAccess -> Objects.equals(electronicAccess.getUri(), action.getInitial()))
.forEach(electronicAccess -> electronicAccess.setUri(isNull(action.getUpdated()) ? EMPTY : action.getUpdated())));
case REPLACE_WITH -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> {
electronicAccess.setUri(isNull(action.getUpdated()) ? EMPTY : action.getUpdated());
electronicAccess.setTenantId(holdingsDataProcessor.getTenantFromAction(action));
}));
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setUri(isNull(action.getUpdated()) ? EMPTY : action.getUpdated())));
default -> notSupported(option, action);
};
}

private Updater<? extends ElectronicAccessEntity> updateLinkText(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
private Updater<? extends ElectronicAccessEntity> updateLinkText(UpdateOptionType option, Action action) {
return switch (action.getType()) {
case CLEAR_FIELD -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setLinkText(null)));
Expand All @@ -83,15 +77,12 @@ private Updater<? extends ElectronicAccessEntity> updateLinkText(UpdateOptionTyp
.filter(electronicAccess -> Objects.equals(electronicAccess.getLinkText(), action.getInitial()))
.forEach(electronicAccess -> electronicAccess.setLinkText(action.getUpdated())));
case REPLACE_WITH -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> {
electronicAccess.setLinkText(action.getUpdated());
electronicAccess.setTenantId(holdingsDataProcessor.getTenantFromAction(action));
}));
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setLinkText(action.getUpdated())));
default -> notSupported(option, action);
};
}

private Updater<? extends ElectronicAccessEntity> updateMaterialsSpecified(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
private Updater<? extends ElectronicAccessEntity> updateMaterialsSpecified(UpdateOptionType option, Action action) {
return switch (action.getType()) {
case CLEAR_FIELD -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setMaterialsSpecification(null)));
Expand All @@ -104,15 +95,12 @@ private Updater<? extends ElectronicAccessEntity> updateMaterialsSpecified(Updat
.filter(electronicAccess -> Objects.equals(electronicAccess.getMaterialsSpecification(), action.getInitial()))
.forEach(electronicAccess -> electronicAccess.setMaterialsSpecification(action.getUpdated())));
case REPLACE_WITH -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> {
electronicAccess.setMaterialsSpecification(action.getUpdated());
electronicAccess.setTenantId(holdingsDataProcessor.getTenantFromAction(action));
}));
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setMaterialsSpecification(action.getUpdated())));
default -> notSupported(option, action);
};
}

private Updater<? extends ElectronicAccessEntity> updatePublicNote(UpdateOptionType option, Action action, HoldingsDataProcessor holdingsDataProcessor) {
private Updater<? extends ElectronicAccessEntity> updatePublicNote(UpdateOptionType option, Action action) {
return switch (action.getType()) {
case CLEAR_FIELD -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setPublicNote(null)));
Expand All @@ -125,10 +113,7 @@ private Updater<? extends ElectronicAccessEntity> updatePublicNote(UpdateOptionT
.filter(electronicAccess -> Objects.equals(electronicAccess.getPublicNote(), action.getInitial()))
.forEach(electronicAccess -> electronicAccess.setPublicNote(action.getUpdated())));
case REPLACE_WITH -> electronicAccessEntity -> ofNullable(electronicAccessEntity.getElectronicAccess())
.ifPresent(list -> list.forEach(electronicAccess -> {
electronicAccess.setPublicNote(action.getUpdated());
electronicAccess.setTenantId(holdingsDataProcessor.getTenantFromAction(action));
}));
.ifPresent(list -> list.forEach(electronicAccess -> electronicAccess.setPublicNote(action.getUpdated())));
default -> notSupported(option, action);
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ public Validator<UpdateOptionType, Action, BulkOperationRule> validator(Extended
public Updater<ExtendedHoldingsRecord> updater(UpdateOptionType option, Action action, ExtendedHoldingsRecord entity,
boolean forPreview) throws RuleValidationTenantsException {
if (isElectronicAccessUpdate(option)) {
return (Updater<ExtendedHoldingsRecord>) electronicAccessUpdaterFactory.updater(option, action, this);
entity.getEntity().getElectronicAccess().forEach(el -> el.setTenantId(getTenantFromAction(action)));
return (Updater<ExtendedHoldingsRecord>) electronicAccessUpdaterFactory.updater(option, action);
} else if (REPLACE_WITH == action.getType()) {
return extendedHoldingsRecord -> {
var locationId = action.getUpdated();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,7 @@ void shouldReplaceElectronicAccessFields(UpdateOptionType option, String newValu
var holdingsRecord = buildHoldingsWithElectronicAccess();
var extendedHoldingsRecord = ExtendedHoldingsRecord.builder().entity(holdingsRecord).tenantId("tenant").build();
var processor = new HoldingsDataProcessor(null, null, null, new ElectronicAccessUpdaterFactory(), null);
processor.folioExecutionContext = folioExecutionContext;
var action = new Action().type(REPLACE_WITH).updated(newValue);

processor.updater(option, action, extendedHoldingsRecord, false).apply(extendedHoldingsRecord);
Expand Down

0 comments on commit 7fdff0c

Please sign in to comment.