diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java index d17d21a7e..695c77bd7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java @@ -27,9 +27,13 @@ public class FileAttributeConfigPersistenceService { private final DossierTemplateRepository dossierTemplateRepository; private final FileAttributesRepository fileAttributesRepository; + @Transactional public FileAttributeConfigEntity addOrUpdateFileAttribute(String dossierTemplateId, FileAttributeConfigEntity fileAttributeConfig) { var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); fileAttributeConfig.setDossierTemplate(dossierTemplate); + if (fileAttributeConfig.isPrimaryAttribute()) { + fileAttributeConfigRepository.updateAllPrimaryAttributeValuesToFalse(dossierTemplateId); + } if (fileAttributeConfig.getId() == null) { fileAttributeConfig.setId(UUID.randomUUID().toString()); setPlaceholder(fileAttributeConfig); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java index 2a6b48407..a532620bc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java @@ -2,6 +2,8 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -9,4 +11,7 @@ public interface FileAttributeConfigRepository extends JpaRepository findByDossierTemplateId(String dossierTemplateId); + @Modifying + @Query("update FileAttributeConfigEntity e set e.primaryAttribute = false where e.dossierTemplate.id = :dossierTemplateId") + void updateAllPrimaryAttributeValuesToFalse(String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java index d57a99b37..78d8defc5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java @@ -69,14 +69,15 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest { configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build()); configs.add(FileAttributeConfig.builder() .csvColumnHeader("Attribute A") - .primaryAttribute(false) + .primaryAttribute(true) .label("Attribute A") .build()); - configs.add(FileAttributeConfig.builder() + FileAttributeConfig attributeB = FileAttributeConfig.builder() .csvColumnHeader("Attribute B") - .primaryAttribute(false) + .primaryAttribute(true) .label("Attribute B") - .build()); + .build(); + configs.add(attributeB); configs.add(FileAttributeConfig.builder() .csvColumnHeader("Attribute C") .primaryAttribute(false) @@ -92,6 +93,8 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest { List loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); assertThat(loadedConfigs.size()).isEqualTo(5); + FileAttributeConfig primaryAttribute = loadedConfigs.stream().filter(FileAttributeConfig::isPrimaryAttribute).findAny().get(); + assertThat(primaryAttribute.getLabel()).isEqualTo(attributeB.getLabel()); fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream() .filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute C"))