diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java index 879d295e0..65513a13d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportService.java @@ -25,6 +25,8 @@ import java.util.stream.Collectors; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; +import org.apache.commons.compress.compressors.FileNameUtil; +import org.apache.commons.compress.utils.FileNameUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -215,10 +217,17 @@ public class DossierTemplateImportService { FileAttributesGeneralConfiguration fileAttributesGeneralConfiguration = objectMapper.readValue(bytes, FileAttributesGeneralConfiguration.class); importTemplateResult.setFileAttributesGeneralConfiguration(fileAttributesGeneralConfiguration); } else if (ze.getName().contains(ExportFilename.RULES.getFilename())) { - String rules = objectMapper.readValue(bytes, String.class); - importTemplateResult.setRuleSet(rules); + if(ze.getName().endsWith(".txt")) { + String rules = objectMapper.readValue(new String(bytes), String.class); + importTemplateResult.setRuleSet(rules); + }else if(ze.getName().endsWith(".drl")) { + String rules = new String(bytes); + importTemplateResult.setRuleSet(rules); + } else { + throw new BadRequestException("File is not in TXT or DRL format. "+ FileNameUtils.getExtension(ze.getName()) +" format is not supported."); + } } else if (ze.getName().contains(ExportFilename.COMPONENT_RULES.getFilename())) { - String rules = objectMapper.readValue(bytes, String.class); + String rules = objectMapper.readValue(new String(bytes), String.class); importTemplateResult.setComponentRuleSet(rules); } else if (ze.getName().contains(ExportFilename.DOSSIER_TYPE.getFilename())) { Type type = objectMapper.readValue(bytes, Type.class); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java index 8d446586e..7e732520e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java @@ -6,9 +6,12 @@ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; +import org.apache.commons.text.StringEscapeUtils; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -55,6 +58,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue; import jakarta.transaction.Transactional; +import liquibase.util.StringUtil; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -66,6 +70,7 @@ public class DossierTemplateExportService { private static final String JSON_EXT = ".json"; private static final String TXT_EXT = ".txt"; + private static final String RULE_EXT = ".drl"; private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DownloadStatusPersistenceService downloadStatusPersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; @@ -173,8 +178,8 @@ public class DossierTemplateExportService { // add rule set var ruleSet = rulesPersistenceService.getRules(dossierTemplateId, RuleFileType.ENTITY); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, - getFilename(ExportFilename.RULES, TXT_EXT), - objectMapper.writeValueAsBytes(ruleSet.getValue()))); + getFilename(ExportFilename.RULES, RULE_EXT), + ruleSet.getValue().getBytes(StandardCharsets.UTF_8))); // add component rule set try { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java b/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java new file mode 100644 index 000000000..9ae8b6758 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java @@ -0,0 +1,5 @@ +package com.iqser.red.service.persistence.management.v1.processor.service; + +public class DossierTemplateImportServiceTest { + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java index d35a78cff..3bf948eb5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java @@ -47,7 +47,7 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT @Disabled public void testLocalDossierTemplateImport() { - var importDir = new File("/Users/timobejan/work/dossier-templates-v2/dev"); + var importDir = new File("C:\\Users\\YannikHampe\\Downloads\\testing\\"); assertThat(importDir).isNotNull(); assertThat(importDir.exists()).isTrue();