Skip to content

Commit

Permalink
MODBULKOPS-428 - Apply changes - MARC Bib records with administrative…
Browse files Browse the repository at this point in the history
… data (#343)
  • Loading branch information
siarhei-charniak authored Jan 13, 2025
1 parent 9c5e822 commit 9a2a943
Show file tree
Hide file tree
Showing 23 changed files with 414 additions and 151 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static org.folio.bulkops.domain.dto.FileContentType.COMMITTING_CHANGES_ERROR_FILE;
import static org.folio.bulkops.domain.dto.FileContentType.MATCHED_RECORDS_FILE;
import static org.folio.bulkops.domain.dto.FileContentType.PROPOSED_CHANGES_FILE;
import static org.folio.bulkops.domain.dto.FileContentType.PROPOSED_CHANGES_MARC_FILE;
import static org.folio.bulkops.domain.dto.FileContentType.RECORD_MATCHING_ERROR_FILE;
import static org.folio.bulkops.domain.dto.FileContentType.TRIGGERING_FILE;
import static org.folio.bulkops.util.Constants.CSV_EXTENSION;
Expand Down Expand Up @@ -104,7 +105,7 @@ public ResponseEntity<UnifiedTable> getPreviewByOperationId(UUID operationId, Bu
@Override
public ResponseEntity<BulkOperationRuleCollection> postContentUpdates(UUID operationId, BulkOperationRuleCollection bulkOperationRuleCollection) {
var operation = bulkOperationService.getBulkOperationOrThrow(operationId);
var rules = ruleService.saveRules(bulkOperationRuleCollection);
var rules = ruleService.saveRules(operation, bulkOperationRuleCollection);

if (INSTANCE_MARC.equals(operation.getEntityType())) {
operation.setEntityType(INSTANCE);
Expand All @@ -119,9 +120,10 @@ public ResponseEntity<BulkOperationRuleCollection> postContentUpdates(UUID opera
@Override
public ResponseEntity<BulkOperationMarcRuleCollection> postMarcContentUpdates(UUID operationId, BulkOperationMarcRuleCollection bulkOperationMarcRuleCollection) {
var operation = bulkOperationService.getBulkOperationOrThrow(operationId);
var rules = ruleService.saveMarcRules(operation, bulkOperationMarcRuleCollection);

operation.setEntityType(INSTANCE_MARC);
bulkOperationRepository.save(operation);
var rules = ruleService.saveMarcRules(bulkOperationMarcRuleCollection);

bulkOperationService.clearOperationProcessing(operation);

Expand Down Expand Up @@ -157,9 +159,9 @@ public ResponseEntity<Resource> downloadFileByOperationId(
} else if (fileContentType == RECORD_MATCHING_ERROR_FILE) {
path = bulkOperation.getLinkToMatchedRecordsErrorsCsvFile();
} else if (fileContentType == PROPOSED_CHANGES_FILE) {
path = INSTANCE_MARC.equals(bulkOperation.getEntityType()) ?
bulkOperation.getLinkToModifiedRecordsMarcFile() :
bulkOperation.getLinkToModifiedRecordsCsvFile();
path = bulkOperation.getLinkToModifiedRecordsCsvFile();
} else if (fileContentType == PROPOSED_CHANGES_MARC_FILE) {
path = bulkOperation.getLinkToModifiedRecordsMarcFile();
} else if (fileContentType == COMMITTED_RECORDS_FILE) {
path = INSTANCE_MARC.equals(bulkOperation.getEntityType()) ?
bulkOperation.getLinkToCommittedRecordsMarcFile() :
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
Expand All @@ -23,6 +25,9 @@
@Table(name = "bulk_operation_data_processing")
public class BulkOperationDataProcessing {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;

private UUID bulkOperationId;

@Enumerated(EnumType.STRING)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@
import org.folio.bulkops.exception.RuleValidationException;
import org.springframework.stereotype.Component;

import java.util.regex.Pattern;

@Component
public class MarcRulesValidator {

private static final String VALID_TAG_REGEXP = "5\\d{2}|9\\d{2}";
private static final Pattern TAG_PATTERN = Pattern.compile("\\d{3}");
private static final Pattern UNSUPPORTED_TAG_PATTERN = Pattern.compile("00\\d");
private static final String NOT_SUPPORTED_BULK_EDIT_FIELD_MESSAGE = "Bulk edit of %s field is not supported";

public void validate(BulkOperationMarcRule bulkOperationMarcRule) throws RuleValidationException {
var tag = bulkOperationMarcRule.getTag();
if (StringUtils.isEmpty(tag) || StringUtils.isNotEmpty(tag) && !tag.matches(VALID_TAG_REGEXP)) {
if (StringUtils.isEmpty(tag) || !TAG_PATTERN.matcher(tag).matches()
|| UNSUPPORTED_TAG_PATTERN.matcher(tag).matches()) {
throw new RuleValidationException(String.format(NOT_SUPPORTED_BULK_EDIT_FIELD_MESSAGE, tag));
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.folio.bulkops.repository;

import java.util.List;
import java.util.UUID;
import org.folio.bulkops.domain.entity.BulkOperationDataProcessing;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BulkOperationDataProcessingRepository extends JpaRepository<BulkOperationDataProcessing, UUID> {

List<BulkOperationDataProcessing> findAllByBulkOperationId(UUID bulkOperationId);
void deleteAllByBulkOperationId(UUID bulkOperationId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@

@Repository
public interface BulkOperationRuleDetailsRepository extends JpaRepository<BulkOperationRuleDetails, UUID> {
void deleteAllByRuleId(UUID ruleId);
}
Loading

0 comments on commit 9a2a943

Please sign in to comment.