diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java index 813b2633a..c4e01f056 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java @@ -7,7 +7,6 @@ import java.util.Map; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLog; @@ -91,12 +90,11 @@ public class ComponentLogService { private void replaceOverriddenComponentLogEntries(ComponentLog componentLog, List componentOverrides) { - // remove override entries from componentLog + componentLog.getComponentLogEntries() .removeIf(entry -> componentOverrides.stream() .anyMatch(override -> entry.getName().equals(override.getName()))); - // insert overrides to Component log componentLog.getComponentLogEntries().addAll(componentOverrides); } @@ -129,28 +127,14 @@ public class ComponentLogService { componentToUpdate = optionalComponentLogEntry.get(); updateComponentLogEntry(dossierId, fileId, componentOverride, componentToUpdate); } else { - optionalComponentLogEntry = fileManagementStorageService.getComponentLog(dossierId, fileId).getComponentLogEntries() - .stream() - .filter(componentLogEntry -> componentOverride.getName().equals(componentLogEntry.getName())) - .findFirst(); - if (optionalComponentLogEntry.isPresent()) { - componentToUpdate = optionalComponentLogEntry.get(); - updateComponentLogEntry(dossierId, fileId, componentOverride, componentToUpdate); - } else { - componentOverride.setOverridden(true); - System.out.println("AAAA2: " + componentOverride); - insertOverride(dossierId, fileId, componentOverride); - auditOverride(dossierId, fileId, componentOverride); - } + insertOverride(dossierId, fileId, componentOverride); + auditOverride(dossierId, fileId, componentOverride); } - } private void updateComponentLogEntry(String dossierId, String fileId, ComponentLogEntry componentOverride, ComponentLogEntry componentToUpdate) { - componentToUpdate.setOverridden(true); - System.out.println("AAAA: " + componentToUpdate); componentToUpdate.setComponentValues(componentOverride.getComponentValues()); saveOverride(dossierId, fileId, componentToUpdate); auditOverride(dossierId, fileId, componentToUpdate); @@ -180,10 +164,9 @@ public class ComponentLogService { revertOverrideRequest.getComponents() .forEach(componentName -> { - var componentLogEntry = componentLogMongoService.findComponentLogEntryById(dossierId, fileId, componentName) - .orElseThrow(() -> new NotFoundException(String.format("Component %s was not found.", componentName))); + componentLogMongoService.deleteOverrides(dossierId, fileId, componentName); - auditOverrideRevert(dossierId, fileId, componentLogEntry); + auditOverrideRevert(dossierId, fileId, componentName); }); } @@ -209,23 +192,14 @@ public class ComponentLogService { } - private void auditOverrideRevert(String dossierId, String fileId, ComponentLogEntry entry) { + private void auditOverrideRevert(String dossierId, String fileId, String componentName) { auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(fileId) .category(AuditCategory.DOCUMENT.name()) .message("The component override for was reverted") - .details(Map.of("dossierId", - dossierId, - "fileId", - fileId, - "ComponentName", - entry.getName(), - "Action", - "REVERT", - "Values", - entry.getComponentValues())) + .details(Map.of("dossierId", dossierId, "fileId", fileId, "ComponentName", componentName, "Action", "REVERT")) .build()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/4-create-component-entities.xml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/4-create-component-entities.xml index eca068400..fe20dabdc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/4-create-component-entities.xml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/mongo/changelog/tenant/4-create-component-entities.xml @@ -7,11 +7,100 @@ - + + + { + "collMod": "component-logs", + "validator": { + "$jsonSchema": { + "bsonType": "object", + "required": ["id", "dossierId", "fileId", "analysisNumber", "componentRulesVersion", "components"], + "properties": { + "id": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "dossierId": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "fileId": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "analysisNumber": { + "bsonType": "int", + "description": "must be an integer and is required" + }, + "componentRulesVersion": { + "bsonType": "long", + "description": "must be a long and is required" + }, + "components": { + "bsonType": "array", + "items": { + "bsonType": "objectId", + "description": "must be an array of objectIds" + }, + "description": "must be an array and is required" + } + } + } + }, + "validationLevel": "strict", + "validationAction": "error" + } + + - + + + { + "collMod": "component-log-entries", + "validator": { + "$jsonSchema": { + "bsonType": "object", + "required": ["id", "componentLogId", "name", "overrideValues", "values", "overridden"], + "properties": { + "id": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "componentLogId": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "name": { + "bsonType": "string", + "description": "must be a string and is required" + }, + "overrideValues": { + "bsonType": "array", + "items": { + "bsonType": "object" + }, + "description": "must be an array of objects and is required" + }, + "values": { + "bsonType": "array", + "items": { + "bsonType": "object" + }, + "description": "must be an array of objects and is required" + }, + "overridden": { + "bsonType": "bool", + "description": "must be a boolean and is required" + } + } + } + }, + "validationLevel": "strict", + "validationAction": "warn" + } + + - \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntryValue.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntryValue.java index 04812f9a3..c2280392d 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntryValue.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/analysislog/componentlog/ComponentLogEntryValue.java @@ -17,7 +17,6 @@ import lombok.experimental.FieldDefaults; public class ComponentLogEntryValue { String value; - String originalValue; String valueDescription; String componentRuleId; diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java index c36db5f82..01e6adb43 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentDocumentRepository.java @@ -19,7 +19,7 @@ public interface ComponentDocumentRepository extends MongoRepository findComponentDocumentByName(String componentLogId, String componentName); @Query(value = "{ 'componentLogId': ?0 }") - List findByDossierIdAndFileId(String componentLogId); + List findByComponentLogId(String componentLogId); @Query(value = "{ 'componentLogId': ?0 }", fields = "{ 'overrideValues': 0 }") List findWithoutOverrideValuesByDossierIdAndFileId(String componentLogId); diff --git a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/ComponentLogMongoService.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/ComponentLogMongoService.java index 1c2d1134f..1879cf307 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/ComponentLogMongoService.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/service/ComponentLogMongoService.java @@ -174,19 +174,12 @@ public class ComponentLogMongoService { String componentLogId = mapper.getComponentLogId(dossierId, fileId); - List overrides = componentDocumentRepository.findByDossierIdAndFileId(componentLogId) + return componentDocumentRepository.findByComponentLogId(componentLogId) .stream() .map(mapper::fromComponentDocument) + .peek(componentLogEntry -> componentLogEntry.setOverridden(true)) .toList(); - overrides.forEach(componentLogEntry -> { - var componentValues = componentLogEntry.getComponentValues() - .stream() - .filter(componentLogEntryValue -> !componentLogEntryValue.getValue().equals(componentLogEntryValue.getOriginalValue())) - .toList(); - componentLogEntry.setComponentValues(componentValues); - }); - return overrides; } @@ -223,4 +216,12 @@ public class ComponentLogMongoService { .map(mapper::fromComponentLogDocument); } + + public void deleteOverrides(String dossierId, String fileId, String componentName) { + + String componentId = mapper.getComponentId(dossierId, fileId, componentName); + + componentDocumentRepository.deleteById(componentId); + } + }