diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java index c660f1202..f5fa090cf 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ComponentOverrideTest.java @@ -53,6 +53,7 @@ public class ComponentOverrideTest extends AbstractPersistenceServerServiceTest .name("Study_Title") .componentValues(List.of(ComponentValue.builder() .value("AAAA Strange Chemical Name And the rest of a title – With a dash and some more text") + .originalValue("Strange Chemical Name And the rest of a title – With a dash and some more text") .valueDescription("First found value of type title or else ''") .componentRuleId("StudyTitle.0.0") .entityReferences(List.of(EntityReference.builder() 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 1e48abcaf..7b6b3324f 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,4 +19,10 @@ public interface ComponentDocumentRepository extends MongoRepository findComponentDocumentByName(String componentLogId, String componentName); + @Query(value = "{ 'componentLogId': ?0 }") + List findByDossierIdAndFileId(String componentLogId); + + @Query(value = "{ 'componentLogId': ?0 }", fields = "{ 'overrideValues': 0 }") + List findWithoutEntriesByDossierIdAndFileId(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/repository/ComponentLogDocumentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentLogDocumentRepository.java index 262e23842..e18006a0d 100644 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentLogDocumentRepository.java +++ b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/ComponentLogDocumentRepository.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; +import java.util.List; import java.util.Optional; import org.springframework.core.convert.TypeDescriptor; @@ -7,10 +8,11 @@ import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query; import org.springframework.stereotype.Repository; +import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentDocument; import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentLogDocument; @Repository -public interface ComponentLogDocumentRepository extends MongoRepository, CustomComponentRepository { +public interface ComponentLogDocumentRepository extends MongoRepository { @Query(value = "{ 'id' : ?0 }", fields = "{ 'analysisNumber' : 1 }") Optional findAnalysisNumberById(String id); 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/CustomComponentRepository.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/CustomComponentRepository.java deleted file mode 100644 index 32199d5f8..000000000 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/CustomComponentRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; - -import java.util.List; - -import org.springframework.stereotype.Repository; - -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentDocument; - -@Repository -public interface CustomComponentRepository { - - List findOverrides(String fileId, String dossierId); - -} 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/CustomComponentRepositoryImpl.java b/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/CustomComponentRepositoryImpl.java deleted file mode 100644 index 72a23adef..000000000 --- a/persistence-service-v1/persistence-service-shared-mongo-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/mongo/repository/CustomComponentRepositoryImpl.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.shared.mongo.repository; - -import static org.springframework.data.mongodb.core.aggregation.Aggregation.match; -import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation; -import static org.springframework.data.mongodb.core.aggregation.Aggregation.replaceRoot; -import static org.springframework.data.mongodb.core.aggregation.Aggregation.unwind; - -import java.util.List; - -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.aggregation.Aggregation; -import org.springframework.data.mongodb.core.aggregation.AggregationOperation; -import org.springframework.data.mongodb.core.aggregation.AggregationResults; -import org.springframework.data.mongodb.core.aggregation.LookupOperation; -import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.stereotype.Repository; - -import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentDocument; - -import lombok.RequiredArgsConstructor; - -@Repository -@RequiredArgsConstructor -public class CustomComponentRepositoryImpl implements CustomComponentRepository { - - private final MongoTemplate mongoTemplate; - - - @Override - public List findOverrides(String fileId, String dossierId) { - - LookupOperation lookupOperation = LookupOperation.newLookup().from("components").localField("overrideValues").foreignField("_id").as("componentDocs"); - - AggregationOperation matchOperation = match(Criteria.where("componentLogId").is(dossierId + "/" + fileId)); -// AggregationOperation matchOperation = match(Criteria.where("fileId").is(fileId).and("dossierId").is(dossierId)); - - AggregationOperation unwindOperation = unwind("componentDocs"); - - AggregationOperation matchNonEmptyOverrides = match(Criteria.where("componentDocs.overrideValues").ne(null)); - - AggregationOperation replaceRootOperation = replaceRoot("componentDocs"); - - Aggregation aggregation = newAggregation(matchOperation, lookupOperation, unwindOperation, matchNonEmptyOverrides, replaceRootOperation); - - AggregationResults results = mongoTemplate.aggregate(aggregation, "component-logs", ComponentDocument.class); - - return results.getMappedResults(); - } - -} 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 ff6acde63..5dbbae463 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 @@ -181,10 +181,26 @@ public class ComponentLogMongoService { public List findOverrides(String dossierId, String fileId) { - return componentLogDocumentRepository.findOverrides(dossierId, fileId) + String componentLogId = mapper.getComponentLogId(dossierId, fileId); + + List overrides = componentDocumentRepository.findByDossierIdAndFileId(componentLogId) .stream() .map(mapper::fromComponentDocument) .toList(); + overrides.forEach(componentLogEntry -> { + var componentValues = componentLogEntry.getComponentValues() + .stream() + .filter(componentLogEntryValue -> !componentLogEntryValue.getValue().equals(componentLogEntryValue.getOriginalValue())) + .toList(); + componentLogEntry.setComponentValues(componentValues); + }); + + return overrides; + +// return componentLogDocumentRepository.findOverrides(dossierId, fileId) +// .stream() +// .map(mapper::fromComponentDocument) +// .toList(); }