diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/FileAttributesGeneralConfiguration.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/FileAttributesGeneralConfiguration.java index 61641330f..4f8b00fae 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/FileAttributesGeneralConfiguration.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/FileAttributesGeneralConfiguration.java @@ -14,5 +14,6 @@ public class FileAttributesGeneralConfiguration { private String dossierTemplateId; private String filenameMappingColumnHeaderName; private String delimiter; + private String encoding; } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java index 43566d9e6..463a3ef48 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java @@ -30,6 +30,9 @@ public interface FileAttributesConfigResource { String FILE_ATTRIBUTE_ID = "fileAttributeId"; String FILE_ATTRIBUTE_ID_PATH_VARIABLE = "/{" + FILE_ATTRIBUTE_ID + "}"; + String UTF_ENCODING = "UTF-8"; + String ASCII_ENCODING = "ASCII"; + String ISO_ENCODING = "ISO-8601"; @ResponseBody @ResponseStatus(HttpStatus.OK) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java index 40fba428a..325c976da 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/FileAttributesGeneralConfigurationEntity.java @@ -30,6 +30,8 @@ public class FileAttributesGeneralConfigurationEntity { private String filenameMappingColumnHeaderName; @Column private String delimiter; + @Column + private String encoding; @OneToOne @JsonIgnore diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 5b90501ea..1a5afb981 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -184,6 +184,7 @@ public class DossierTemplateCloneService { var fagc = FileAttributesGeneralConfigurationEntity.builder() .dossierTemplateId(clonedDossierTemplateId) .delimiter(fileAttributesGeneralConfig.getDelimiter()) + .encoding(fileAttributesGeneralConfig.getEncoding()) .filenameMappingColumnHeaderName(fileAttributesGeneralConfig.getFilenameMappingColumnHeaderName()) .build(); fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(clonedDossierTemplateId, fagc); 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 c0f9f9181..bbbd9972a 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 @@ -24,6 +24,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import lombok.RequiredArgsConstructor; +import static com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource.*; + @Service @RequiredArgsConstructor public class FileAttributeConfigPersistenceService { @@ -85,6 +87,7 @@ public class FileAttributeConfigPersistenceService { fileAttributesConfig.setDossierTemplateId(dossierTemplateId); fileAttributesConfig.setDossierTemplate(dossierTemplateRepository.getOne(dossierTemplateId)); + fileAttributesConfig.setEncoding(this.getValidatedEncoding(fileAttributesConfig.getEncoding())); return fileAttributesGeneralConfigurationRepository.save(fileAttributesConfig); } @@ -163,7 +166,18 @@ public class FileAttributeConfigPersistenceService { throw new ConflictException("Placeholder already exists."); } }); + } + private String getValidatedEncoding(String encoding) { + if (StringUtils.isBlank(encoding)) + return UTF_ENCODING; + if (UTF_ENCODING.equalsIgnoreCase(encoding.trim())) + return UTF_ENCODING; + if (ASCII_ENCODING.equalsIgnoreCase(encoding.trim())) + return ASCII_ENCODING; + if (ISO_ENCODING.equalsIgnoreCase(encoding.trim())) + return ISO_ENCODING; + return UTF_ENCODING; } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index 2e64391d5..ecc6ebc79 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -103,3 +103,5 @@ databaseChangeLog: file: db/changelog/tenant/40-remove-quartz.changelog.yaml - include: file: db/changelog/tenant/sql/41-update-ocr-file-columns.sql + - include: + file: db/changelog/tenant/sql/42-add-encoding-column-file-attribute-config.sql diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/sql/42-add-encoding-column-file-attribute-config.sql b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/sql/42-add-encoding-column-file-attribute-config.sql new file mode 100644 index 000000000..bb525e4d4 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/tenant/sql/42-add-encoding-column-file-attribute-config.sql @@ -0,0 +1,2 @@ +ALTER TABLE file_attribute_general_configuration ADD COLUMN encoding VARCHAR(255); +update file_attribute_general_configuration set encoding = 'UTF-8'; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 9aefce56d..0521cc103 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -235,6 +235,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { FileAttributesGeneralConfiguration.builder() .dossierTemplateId(dossierTemplate.getId()) .delimiter("") + .encoding("UTF-8") .filenameMappingColumnHeaderName("filenameMappingColumnHeaderName") .build()); fileAttributeConfigClient.setFileAttributesConfig(dossierTemplate.getId(), @@ -328,6 +329,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()) .getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); + assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()) + .getEncoding()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getEncoding()); assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates( clonedDT.getId()).get(0).getFileName()); assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAddColor()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAddColor()); @@ -683,6 +686,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { FileAttributesGeneralConfiguration.builder() .dossierTemplateId(dossierTemplate.getId()) .delimiter("") + .encoding("UTF-8") .filenameMappingColumnHeaderName("filenameMappingColumnHeaderName") .build()); fileAttributeConfigClient.setFileAttributesConfig(dossierTemplate.getId(), 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 450576fa3..42fdb3918 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 @@ -1,5 +1,7 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource.ASCII_ENCODING; +import static com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource.UTF_ENCODING; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; @@ -65,6 +67,12 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest { fileAttributeConfigClient.setFileAttributesGeneralConfig(dossier.getDossierTemplateId(), generalConfig); var loadedConfig = fileAttributeConfigClient.getFileAttributesGeneralConfig(dossier.getDossierTemplateId()); assertThat(loadedConfig.getDelimiter()).isEqualTo(","); + assertThat(loadedConfig.getEncoding()).isEqualTo(UTF_ENCODING); + + generalConfig.setEncoding(" ASCII "); + fileAttributeConfigClient.setFileAttributesGeneralConfig(dossier.getDossierTemplateId(), generalConfig); + loadedConfig = fileAttributeConfigClient.getFileAttributesGeneralConfig(dossier.getDossierTemplateId()); + assertThat(loadedConfig.getEncoding()).isEqualTo(ASCII_ENCODING); List configs = new ArrayList<>(); configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build()); @@ -164,6 +172,7 @@ public class FileAttributeTest extends AbstractPersistenceServerServiceTest { FileAttributesGeneralConfiguration generalConfig = new FileAttributesGeneralConfiguration(); generalConfig.setDelimiter(","); + generalConfig.setEncoding("UTF-8"); generalConfig.setFilenameMappingColumnHeaderName("Name"); generalConfig.setDossierTemplateId(dossier.getDossierTemplateId());