From 1a92b3db26837eed49cfd98f2ea6b53bd5e1bb2b Mon Sep 17 00:00:00 2001 From: yhampe Date: Mon, 9 Oct 2023 09:28:13 +0200 Subject: [PATCH 1/2] RED-7653: added cases for importing escaped and unescaped rule files --- .../service/DossierTemplateImportService.java | 15 ++++++++++++--- .../export/DossierTemplateExportService.java | 9 +++++++-- .../service/DossierTemplateImportServiceTest.java | 5 +++++ .../tests/DossierTemplateImportTest.java | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java 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(); -- 2.47.2 From e9833ae71ac862b6fee3a3664d087365318049b2 Mon Sep 17 00:00:00 2001 From: yhampe Date: Mon, 9 Oct 2023 14:26:57 +0200 Subject: [PATCH 2/2] RED-7653: removed unnecessary test file, updated database-tenants-commons version, fixed publish-custom-docker image script for windows --- .../persistence-service-processor-v1/pom.xml | 2 +- .../processor/service/DossierTemplateImportServiceTest.java | 5 ----- publish-custom-docker-img.sh | 2 +- 3 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java diff --git a/persistence-service-v1/persistence-service-processor-v1/pom.xml b/persistence-service-v1/persistence-service-processor-v1/pom.xml index c0bda2515..95c095dc3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/pom.xml +++ b/persistence-service-v1/persistence-service-processor-v1/pom.xml @@ -19,7 +19,7 @@ 0.5.0 0.18.0 0.6.0 - 0.4.0 + 0.12.0 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 deleted file mode 100644 index 9ae8b6758..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateImportServiceTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.service; - -public class DossierTemplateImportServiceTest { - -} diff --git a/publish-custom-docker-img.sh b/publish-custom-docker-img.sh index d5ff0a524..4f282415d 100755 --- a/publish-custom-docker-img.sh +++ b/publish-custom-docker-img.sh @@ -17,7 +17,7 @@ GIT_BRANCH=$(git symbolic-ref --short HEAD) # Get the first 5 characters of the commit hash GIT_COMMIT_HASH=$(git rev-parse --short=5 HEAD) # Create the image tag by combining branch and commit hash -IMAGE_TAG="${USER}-${GIT_BRANCH}-${GIT_COMMIT_HASH}" +IMAGE_TAG="${GIT_BRANCH}-${GIT_COMMIT_HASH}" IMAGE_NAME="$NEXUS_REPO/$IMAGE_NAME:$IMAGE_TAG" echo "Building docker image: {$IMAGE_NAME}" -- 2.47.2