From 6aaa7e524775e7c410c3033fc9adc16d715308ee Mon Sep 17 00:00:00 2001 From: Andrei Isvoran Date: Fri, 3 Nov 2023 08:38:06 +0100 Subject: [PATCH] RED-7405 - Migrate redaction-report-service to gradle --- .gitignore | 8 + .gitlab-ci.yml | 19 ++- buildSrc/build.gradle.kts | 7 + ...er.red.service.java-conventions.gradle.kts | 57 +++++++ config/checkstyle/checkstyle.xml | 39 +++++ config/pmd/pmd.xml | 21 +++ config/pmd/test_pmd.xml | 24 +++ pom.xml | 18 --- redaction-report-service-image-v1/pom.xml | 97 ----------- .../src/main/docker/Dockerfile | 9 -- redaction-report-service-v1/pom.xml | 102 ------------ .../build.gradle.kts | 31 ++++ .../redaction-report-service-api-v1/pom.xml | 49 ------ .../build.gradle.kts | 73 +++++++++ .../pom.xml | 153 ------------------ .../service/EntityLogConverterService.java | 3 +- .../v1/server/service/PlaceholderService.java | 11 +- .../v1/server/service/RSSPoc2Service.java | 2 +- .../service/ReportGenerationService.java | 2 +- .../StatusReportGenerationService.java | 101 ++++++------ .../service/WordReportGenerationService.java | 2 +- .../server/storage/ReportStorageService.java | 19 +-- .../RedactionReportIntegrationTest.java | 1 + settings.gradle.kts | 5 + 24 files changed, 354 insertions(+), 499 deletions(-) create mode 100644 buildSrc/build.gradle.kts create mode 100644 buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/pmd/pmd.xml create mode 100644 config/pmd/test_pmd.xml delete mode 100644 pom.xml delete mode 100644 redaction-report-service-image-v1/pom.xml delete mode 100644 redaction-report-service-image-v1/src/main/docker/Dockerfile delete mode 100644 redaction-report-service-v1/pom.xml create mode 100644 redaction-report-service-v1/redaction-report-service-api-v1/build.gradle.kts delete mode 100644 redaction-report-service-v1/redaction-report-service-api-v1/pom.xml create mode 100644 redaction-report-service-v1/redaction-report-service-server-v1/build.gradle.kts delete mode 100644 redaction-report-service-v1/redaction-report-service-server-v1/pom.xml create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore index 6bb4bad..57b168b 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,11 @@ **/.DS_Store **/classpath-data.json **/dependencies-and-licenses-overview.txt + +gradle.properties +gradlew +gradlew.bat +gradle/ + +**/.gradle +**/build \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d354f03..997b62e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,4 +3,21 @@ variables: include: - project: 'gitlab/gitlab' ref: 'main' - file: 'ci-templates/maven_java.yml' + file: 'ci-templates/gradle_java.yml' + +deploy: + stage: deploy + tags: + - dind + script: + - echo "Building with gradle version ${BUILDVERSION}" + - gradle -Pversion=${BUILDVERSION} publish + - gradle bootBuildImage --cleanCache --publishImage -PbuildbootDockerHostNetwork=true -Pversion=${BUILDVERSION} + - echo "BUILDVERSION=$BUILDVERSION" >> version.env + artifacts: + reports: + dotenv: version.env + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH =~ /^release/ + - if: $CI_COMMIT_TAG \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000..cc02e63 --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + `kotlin-dsl` +} + +repositories { + gradlePluginPortal() +} diff --git a/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts new file mode 100644 index 0000000..c224419 --- /dev/null +++ b/buildSrc/src/main/kotlin/com.iqser.red.service.java-conventions.gradle.kts @@ -0,0 +1,57 @@ +plugins { + `java-library` + `maven-publish` + pmd + checkstyle + jacoco +} + +repositories { + mavenLocal() + mavenCentral() + maven { + url = uri("https://nexus.knecon.com/repository/gindev/"); + credentials { + username = providers.gradleProperty("mavenUser").getOrNull(); + password = providers.gradleProperty("mavenPassword").getOrNull(); + } + } +} + +group = "com.iqser.red.service" +version = "4.0-SNAPSHOT" + +java.sourceCompatibility = JavaVersion.VERSION_17 +java.targetCompatibility = JavaVersion.VERSION_17 + +tasks.pmdMain { + pmd.ruleSetFiles = files("${rootDir}/config/pmd/pmd.xml") +} + +tasks.pmdTest { + pmd.ruleSetFiles = files("${rootDir}/config/pmd/test_pmd.xml") +} + +tasks.named("test") { + useJUnitPlatform() + reports { + junitXml.outputLocation.set(layout.buildDirectory.dir("reports/junit")) + } +} + +tasks.test { + finalizedBy(tasks.jacocoTestReport) // report is always generated after tests run +} + +tasks.jacocoTestReport { + dependsOn(tasks.test) // tests are required to run before generating the report + reports { + xml.required.set(true) + csv.required.set(false) + html.outputLocation.set(layout.buildDirectory.dir("jacocoHtml")) + } +} + +java { + withJavadocJar() +} \ No newline at end of file diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..8faaf13 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/pmd/pmd.xml b/config/pmd/pmd.xml new file mode 100644 index 0000000..22d6d4c --- /dev/null +++ b/config/pmd/pmd.xml @@ -0,0 +1,21 @@ + + + + + Knecon ruleset checks the code for bad stuff + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/pmd/test_pmd.xml b/config/pmd/test_pmd.xml new file mode 100644 index 0000000..56d37d9 --- /dev/null +++ b/config/pmd/test_pmd.xml @@ -0,0 +1,24 @@ + + + + + Knecon test ruleset checks the code for bad stuff + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 9c03cd4..0000000 --- a/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - - com.iqser.red.service - redaction-report-service - 4.0-SNAPSHOT - - pom - - - redaction-report-service-v1 - redaction-report-service-image-v1 - - - diff --git a/redaction-report-service-image-v1/pom.xml b/redaction-report-service-image-v1/pom.xml deleted file mode 100644 index d980b08..0000000 --- a/redaction-report-service-image-v1/pom.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - com.knecon.fforesight - platform-docker-dependency - 0.1.0 - - - 4.0.0 - - redaction-report-service-image-v1 - com.iqser.red.service - 4.0-SNAPSHOT - pom - - - redaction-report-service-server-v1 - ${service.server}.jar - false - ${docker.image.prefix}/${service.server} - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - org.apache.maven.plugins - maven-resources-plugin - - - org.codehaus.mojo - exec-maven-plugin - - - io.fabric8 - docker-maven-plugin - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - download-platform-jar - prepare-package - - copy - - - - - ${project.groupId} - ${service.server} - ${project.version} - jar - true - ${platform.jar} - - - ${docker.build.directory} - - - - - - io.fabric8 - docker-maven-plugin - - - - ${docker.image.name} - - ${docker.build.directory} - - ${platform.jar} - - - ${docker.image.version} - latest - - - - - - - - - - diff --git a/redaction-report-service-image-v1/src/main/docker/Dockerfile b/redaction-report-service-image-v1/src/main/docker/Dockerfile deleted file mode 100644 index ca4a906..0000000 --- a/redaction-report-service-image-v1/src/main/docker/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM red/base-image:2.0.2 - -ARG PLATFORM_JAR - -ENV PLATFORM_JAR ${PLATFORM_JAR} - -ENV USES_ELASTICSEARCH false - -COPY ["${PLATFORM_JAR}", "/"] diff --git a/redaction-report-service-v1/pom.xml b/redaction-report-service-v1/pom.xml deleted file mode 100644 index 0abc0d6..0000000 --- a/redaction-report-service-v1/pom.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - 4.0.0 - - - com.iqser.red - platform-dependency - 2.2.0 - - - - com.iqser.red.service - redaction-report-service-v1 - 4.0-SNAPSHOT - - pom - - - redaction-report-service-api-v1 - redaction-report-service-server-v1 - - - - - 2.229.0 - 5.2.3 - - - - - - com.iqser.red - platform-commons-dependency - 2.7.0 - import - pom - - - - - - - - - org.sonarsource.scanner.maven - sonar-maven-plugin - 3.9.1.2184 - - - org.owasp - dependency-check-maven - 8.1.2 - - ALL - - - - org.jacoco - jacoco-maven-plugin - - - prepare-agent - - prepare-agent - - - - report - - report - - - - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.8 - - - prepare-agent - - prepare-agent - - - - report - - report-aggregate - - verify - - - - - - diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/build.gradle.kts b/redaction-report-service-v1/redaction-report-service-api-v1/build.gradle.kts new file mode 100644 index 0000000..d955574 --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-api-v1/build.gradle.kts @@ -0,0 +1,31 @@ +plugins { + id("com.iqser.red.service.java-conventions") + id("io.freefair.lombok") version "8.4" +} + +description = "redaction-report-service-api-v1" + +val persistenceServiceVersion = "2.236.0" + +dependencies { + implementation("io.github.openfeign:feign-core:12.2") + implementation("org.springframework:spring-web:6.0.6") + implementation("com.iqser.red.service:persistence-service-internal-api-v1:${persistenceServiceVersion}") +} + +publishing { + publications { + create(name) { + from(components["java"]) + } + } + repositories { + maven { + url = uri("https://nexus.knecon.com/repository/red-platform-releases/") + credentials { + username = providers.gradleProperty("mavenUser").getOrNull(); + password = providers.gradleProperty("mavenPassword").getOrNull(); + } + } + } +} diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml b/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml deleted file mode 100644 index f206373..0000000 --- a/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - 4.0.0 - - - com.iqser.red.service - redaction-report-service-v1 - 4.0-SNAPSHOT - - - redaction-report-service-api-v1 - - - - - - io.github.openfeign - feign-core - true - - - - org.springframework - spring-web - - - com.iqser.red.service - persistence-service-internal-api-v1 - ${persistence-service.version} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - lombok.launch.AnnotationProcessorHider$AnnotationProcessor - - - - - - - diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/build.gradle.kts b/redaction-report-service-v1/redaction-report-service-server-v1/build.gradle.kts new file mode 100644 index 0000000..975a6d0 --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-server-v1/build.gradle.kts @@ -0,0 +1,73 @@ +import org.springframework.boot.gradle.tasks.bundling.BootBuildImage + +plugins { + application + id("com.iqser.red.service.java-conventions") + id("org.springframework.boot") version "3.0.4" + id("io.spring.dependency-management") version "1.1.0" + id("org.sonarqube") version "4.2.1.3168" + id("io.freefair.lombok") version "8.1.0" +} + +description = "redaction-service-server-v1" + +val tenantCommonVersion = "0.10.0" +val springCommonsVersion = "2.1.0" +val storageCommonsVersion = "2.27.0" +val poiVersion = "5.2.3" +val metricCommonsVersion = "2.1.0" +val persistenceServiceVersion = "2.236.0" + +configurations { + all { + exclude(group = "org.springframework.boot", module = "spring-boot-starter-logging") + } +} + +description = "redaction-report-service-server-v1" + +dependencies { + implementation(project(":redaction-report-service-api-v1")) + implementation("com.knecon.fforesight:tenant-commons:${tenantCommonVersion}") + implementation("com.iqser.red:platform-commons-dependency:2.7.0") + + implementation("com.iqser.red.commons:storage-commons:${storageCommonsVersion}") + implementation("com.iqser.red.commons:spring-commons:${springCommonsVersion}") + implementation("com.iqser.red.commons:metric-commons:${metricCommonsVersion}") + implementation("com.iqser.red.service:persistence-service-internal-api-v1:${persistenceServiceVersion}") + + implementation("org.apache.poi:poi:${poiVersion}") + implementation("org.apache.poi:poi-ooxml:${poiVersion}") + implementation("org.apache.poi:poi-scratchpad:${poiVersion}") + + implementation("org.springframework.boot:spring-boot-starter-amqp:3.0.4") + implementation("org.springframework.boot:spring-boot-starter-test:3.0.4") { + exclude("org.springframework.boot:spring-boot-starter-tomcat:3.0.4") + } + implementation("org.springframework.cloud:spring-cloud-starter-openfeign:4.0.1") + + implementation("org.apache.commons:commons-lang3:3.12.0") + + testImplementation("com.iqser.red.commons:test-commons:2.1.0") + testImplementation("org.springframework.amqp:spring-rabbit-test:3.0.6") +} + +tasks.named("bootBuildImage") { + imageName.set("nexus.knecon.com:5001/red/${project.name}:${project.version}") + if (project.hasProperty("buildbootDockerHostNetwork")) { + network.set("host") + } + docker { + if (project.hasProperty("buildbootDockerHostNetwork")) { + bindHostToBuilder.set(true) + } + verboseLogging.set(true) + + publishRegistry { + username.set(providers.gradleProperty("mavenUser").getOrNull()) + password.set(providers.gradleProperty("mavenPassword").getOrNull()) + email.set(providers.gradleProperty("mavenEmail").getOrNull()) + url.set("https://nexus.knecon.com:5001/") + } + } +} diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml b/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml deleted file mode 100644 index 5b0ccf0..0000000 --- a/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - - com.iqser.red.service - redaction-report-service-v1 - 4.0-SNAPSHOT - - - redaction-report-service-server-v1 - - - 0.10.0 - - - - - com.knecon.fforesight - tenant-commons - ${tennat-commons.version} - - - com.iqser.red.service - redaction-report-service-api-v1 - ${project.version} - - - - org.apache.poi - poi - ${apache-poi.version} - - - org.apache.poi - poi-ooxml - ${apache-poi.version} - - - org.apache.poi - poi-scratchpad - ${apache-poi.version} - - - - org.springframework.boot - spring-boot-starter-amqp - - - - - com.iqser.red.commons - storage-commons - - - com.iqser.red.commons - spring-commons - - - org.springframework.cloud - spring-cloud-starter-openfeign - - - com.iqser.red.commons - metric-commons - - - org.apache.commons - commons-lang3 - - - - - - org.springframework.boot - spring-boot-starter-test - - - org.springframework.boot - spring-boot-starter-tomcat - - - - - - com.iqser.red.service - persistence-service-internal-api-v1 - ${persistence-service.version} - - - com.iqser.red.commons - test-commons - test - - - - org.springframework.amqp - spring-rabbit-test - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - lombok.launch.AnnotationProcessorHider$AnnotationProcessor - - - - - - - pl.project13.maven - git-commit-id-plugin - - - - revision - - - true - - true - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - true - - - - - - - diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/EntityLogConverterService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/EntityLogConverterService.java index d3eed1f..7d5ff88 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/EntityLogConverterService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/EntityLogConverterService.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -189,7 +190,7 @@ public class EntityLogConverterService { StringBuilder stringBuilder = new StringBuilder(); Matcher match = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(str); while (match.find()) { - match.appendReplacement(stringBuilder, match.group(1).toUpperCase() + match.group(2)); + match.appendReplacement(stringBuilder, match.group(1).toUpperCase(Locale.getDefault()) + match.group(2)); } return match.appendTail(stringBuilder).toString(); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java index eeae7c6..f8584b3 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java @@ -139,9 +139,9 @@ public class PlaceholderService { private Set findExcelPlaceholders(byte[] template, Set allPlaceholders) { - try (ByteArrayInputStream is = new ByteArrayInputStream(template)) { - Set resultPlaceholders = new HashSet<>(); - XSSFWorkbook workbook = new XSSFWorkbook(is); + Set resultPlaceholders = new HashSet<>(); + try (ByteArrayInputStream is = new ByteArrayInputStream(template); + XSSFWorkbook workbook = new XSSFWorkbook(is)) { loop: for (Sheet sheet : workbook) { @@ -162,7 +162,6 @@ public class PlaceholderService { } return resultPlaceholders; - } catch (IOException e) { throw new RuntimeException("An error occurred while parsing excel sheet", e); } @@ -174,8 +173,8 @@ public class PlaceholderService { Set resultPlaceholders = new HashSet<>(); - try (ByteArrayInputStream is = new ByteArrayInputStream(template)) { - XWPFDocument doc = new XWPFDocument(is); + try (ByteArrayInputStream is = new ByteArrayInputStream(template); + XWPFDocument doc = new XWPFDocument(is)) { for (XWPFParagraph p : doc.getParagraphs()) { contains(allPlaceholders, resultPlaceholders, p.getText()); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RSSPoc2Service.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RSSPoc2Service.java index 045385f..5b26bc7 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RSSPoc2Service.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RSSPoc2Service.java @@ -90,7 +90,7 @@ public class RSSPoc2Service { private final Map guidelineMapping = new HashMap<>(); private final FileAttributesConfigClient fileAttributesClient; private final List formats = new ArrayList<>(); - private final DateFormat resultDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + private final DateFormat resultDateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()); @PostConstruct diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java index 562dd7d..1dd1d40 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java @@ -36,7 +36,7 @@ import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; -@SuppressWarnings("ALL") +@SuppressWarnings("PMD") @Slf4j @Service @RequiredArgsConstructor diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java index 1422168..dcc38b5 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java @@ -3,6 +3,7 @@ package com.iqser.red.service.redaction.report.v1.server.service; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.time.OffsetDateTime; import java.util.HashMap; import java.util.List; @@ -38,68 +39,72 @@ public class StatusReportGenerationService { List fileAttributeConfigs = fileAttributesClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); - XSSFWorkbook workbook = new XSSFWorkbook(); - XSSFSheet sheet = workbook.createSheet(dossier.getDossierName()); + try (XSSFWorkbook workbook = new XSSFWorkbook()){ + XSSFSheet sheet = workbook.createSheet(dossier.getDossierName()); - XSSFFont font = workbook.createFont(); - font.setBold(true); - XSSFCellStyle style = workbook.createCellStyle(); - style.setFont(font); - addHeader(sheet, style); + XSSFFont font = workbook.createFont(); + font.setBold(true); + XSSFCellStyle style = workbook.createCellStyle(); + style.setFont(font); + addHeader(sheet, style); - XSSFRow headerRow = sheet.getRow(0); - int headerCounter = 5; - Map attributesAssignment = new HashMap<>(); - for (FileAttributeConfig fileAttributeConfig : fileAttributeConfigs) { - sheet.autoSizeColumn(headerCounter); - attributesAssignment.put(fileAttributeConfig.getId(), headerCounter); - XSSFCell cell = headerRow.createCell(headerCounter++); - cell.setCellValue(fileAttributeConfig.getLabel()); - cell.setCellStyle(style); - } + XSSFRow headerRow = sheet.getRow(0); + int headerCounter = 5; + Map attributesAssignment = new HashMap<>(); + for (FileAttributeConfig fileAttributeConfig : fileAttributeConfigs) { + sheet.autoSizeColumn(headerCounter); + attributesAssignment.put(fileAttributeConfig.getId(), headerCounter); + XSSFCell cell = headerRow.createCell(headerCounter++); + cell.setCellValue(fileAttributeConfig.getLabel()); + cell.setCellStyle(style); + } - for (int i = 0; i < fileStatuses.size(); i++) { + for (int i = 0; i < fileStatuses.size(); i++) { - var fileStatus = fileStatuses.get(i); + var fileStatus = fileStatuses.get(i); - String name = fileStatus.getFilename(); - OffsetDateTime uploadDate = fileStatus.getLastUploaded(); - String assignedTo = fileStatus.getAssignee(); - var status = fileStatus.getWorkflowStatus(); - int pages = fileStatus.getNumberOfPages(); - var fileAttributes = fileStatus.getFileAttributes(); + String name = fileStatus.getFilename(); + OffsetDateTime uploadDate = fileStatus.getLastUploaded(); + String assignedTo = fileStatus.getAssignee(); + var status = fileStatus.getWorkflowStatus(); + int pages = fileStatus.getNumberOfPages(); + var fileAttributes = fileStatus.getFileAttributes(); - XSSFRow row = sheet.createRow(i + 1); + XSSFRow row = sheet.createRow(i + 1); - XSSFCell cellName = row.createCell(0); - cellName.setCellValue(name); - XSSFCell cellUploadDate = row.createCell(1); - cellUploadDate.setCellValue(uploadDate.format(FORMAT_DATE_ISO)); - XSSFCell cellAssignedTo = row.createCell(2); - cellAssignedTo.setCellValue(assignedTo); - XSSFCell cellStatus = row.createCell(3); - cellStatus.setCellValue(status.name()); - XSSFCell cellPages = row.createCell(4); - cellPages.setCellValue(pages); + XSSFCell cellName = row.createCell(0); + cellName.setCellValue(name); + XSSFCell cellUploadDate = row.createCell(1); + cellUploadDate.setCellValue(uploadDate.format(FORMAT_DATE_ISO)); + XSSFCell cellAssignedTo = row.createCell(2); + cellAssignedTo.setCellValue(assignedTo); + XSSFCell cellStatus = row.createCell(3); + cellStatus.setCellValue(status.name()); + XSSFCell cellPages = row.createCell(4); + cellPages.setCellValue(pages); - sheet.autoSizeColumn(0); - sheet.autoSizeColumn(1); - sheet.autoSizeColumn(2); - sheet.autoSizeColumn(3); - sheet.autoSizeColumn(4); + sheet.autoSizeColumn(0); + sheet.autoSizeColumn(1); + sheet.autoSizeColumn(2); + sheet.autoSizeColumn(3); + sheet.autoSizeColumn(4); + + for (Map.Entry nextElement : fileAttributes.entrySet()) { + if (attributesAssignment.get(nextElement.getKey()) != null) { + XSSFCell cell = row.createCell(attributesAssignment.get(nextElement.getKey())); + cell.setCellValue(nextElement.getValue()); + sheet.autoSizeColumn(attributesAssignment.get(nextElement.getKey())); + } - for (Map.Entry nextElement : fileAttributes.entrySet()) { - if (attributesAssignment.get(nextElement.getKey()) != null) { - XSSFCell cell = row.createCell(attributesAssignment.get(nextElement.getKey())); - cell.setCellValue(nextElement.getValue()); - sheet.autoSizeColumn(attributesAssignment.get(nextElement.getKey())); } } + byte[] bytes = toByteArray(workbook); + return bytes; + } catch (IOException e) { + throw new RuntimeException(); } - - return toByteArray(workbook); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java index 188d322..e364d2b 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java @@ -242,7 +242,7 @@ public class WordReportGenerationService { replacePlaceholderInParagraphAndSplit(doc.getParagraphs(), placeHolderValueMap, doc); for (XWPFTable tbl : doc.getTables()) { - if (tableToSkip == tbl) { + if (tableToSkip.equals(tbl)) { // already processed for entityLog Entries continue; } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/storage/ReportStorageService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/storage/ReportStorageService.java index 803146e..9ff672a 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/storage/ReportStorageService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/storage/ReportStorageService.java @@ -2,13 +2,11 @@ package com.iqser.red.service.redaction.report.v1.server.storage; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; -import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -50,24 +48,21 @@ public class ReportStorageService { public byte[] getReportTemplate(String storageId) { - try { - InputStream inputStream = getObject(TenantContext.getTenantId(), storageId); - byte[] storedObjectBytes = IOUtils.toByteArray(inputStream); - inputStream.close(); - return storedObjectBytes; + try (InputStream inputStream = getObject(TenantContext.getTenantId(), storageId)){ + return IOUtils.toByteArray(inputStream); } catch (IOException e) { throw new RuntimeException("Could not get report template."); } } - @SneakyThrows public byte[] getStoredObjectBytes(String dossierId, String fileId, FileType fileType) { - InputStream inputStream = getObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType)); - byte[] storedObjectBytes = IOUtils.toByteArray(inputStream); - inputStream.close(); - return storedObjectBytes; + try (InputStream inputStream = getObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(dossierId, fileId, fileType))) { + return IOUtils.toByteArray(inputStream); + } catch (IOException e) { + throw new RuntimeException(String.format("Could not get stored object for dossierId: %s, fileId: %s, fileType: %s.", dossierId, fileId, fileType)); + } } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java index 0dc825a..b8cda2d 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java @@ -78,6 +78,7 @@ import lombok.SneakyThrows; @EnableAutoConfiguration(exclude = {/*StorageAutoConfiguration.class,*/RabbitAutoConfiguration.class}) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = StorageAutoConfiguration.class)}) +@SuppressWarnings("PMD") public class RedactionReportIntegrationTest { @MockBean diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..58da694 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,5 @@ +rootProject.name = "redaction-report-service" +include(":redaction-report-service-server-v1") +include(":redaction-report-service-api-v1") +project(":redaction-report-service-server-v1").projectDir = file("redaction-report-service-v1/redaction-report-service-server-v1") +project(":redaction-report-service-api-v1").projectDir = file("redaction-report-service-v1/redaction-report-service-api-v1")