diff --git a/bamboo-specs/pom.xml b/bamboo-specs/pom.xml
index 40b250d51..d35f6765d 100644
--- a/bamboo-specs/pom.xml
+++ b/bamboo-specs/pom.xml
@@ -5,7 +5,7 @@
com.atlassian.bamboo
bamboo-specs-parent
- 8.0.3
+ 8.1.3
diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java
index e30a99623..f0213143b 100644
--- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java
+++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java
@@ -1,10 +1,12 @@
package buildjob;
-import java.time.DayOfWeek;
+import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask;
+
import java.time.LocalTime;
import com.atlassian.bamboo.specs.api.BambooSpec;
import com.atlassian.bamboo.specs.api.builders.BambooKey;
+import com.atlassian.bamboo.specs.api.builders.Variable;
import com.atlassian.bamboo.specs.api.builders.docker.DockerConfiguration;
import com.atlassian.bamboo.specs.api.builders.permission.PermissionType;
import com.atlassian.bamboo.specs.api.builders.permission.Permissions;
@@ -15,18 +17,18 @@ import com.atlassian.bamboo.specs.api.builders.plan.PlanIdentifier;
import com.atlassian.bamboo.specs.api.builders.plan.Stage;
import com.atlassian.bamboo.specs.api.builders.plan.branches.BranchCleanup;
import com.atlassian.bamboo.specs.api.builders.plan.branches.PlanBranchManagement;
-import com.atlassian.bamboo.specs.api.builders.plan.configuration.ConcurrentBuilds;
import com.atlassian.bamboo.specs.api.builders.project.Project;
-import com.atlassian.bamboo.specs.builders.task.*;
+import com.atlassian.bamboo.specs.builders.task.CheckoutItem;
+import com.atlassian.bamboo.specs.builders.task.InjectVariablesTask;
+import com.atlassian.bamboo.specs.builders.task.ScriptTask;
+import com.atlassian.bamboo.specs.builders.task.VcsCheckoutTask;
+import com.atlassian.bamboo.specs.builders.task.VcsTagTask;
import com.atlassian.bamboo.specs.builders.trigger.BitbucketServerTrigger;
-import com.atlassian.bamboo.specs.builders.trigger.RepositoryPollingTrigger;
import com.atlassian.bamboo.specs.builders.trigger.ScheduledTrigger;
import com.atlassian.bamboo.specs.model.task.InjectVariablesScope;
import com.atlassian.bamboo.specs.model.task.ScriptTaskProperties.Location;
import com.atlassian.bamboo.specs.util.BambooServer;
-import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask;
-
/**
* Plan configuration for Bamboo.
* Learn more on: https://confluence.atlassian.com/display/BAMBOO/Bamboo+Specs
@@ -75,10 +77,7 @@ public class PlanSpec {
}
public Plan createPlanBuild() {
- return new Plan(
- project(),
- SERVICE_NAME, new BambooKey(SERVICE_KEY))
- .description("Build Plan for Persitence Service")
+ return new Plan(project(), SERVICE_NAME, new BambooKey(SERVICE_KEY)).description("Build Plan for Persitence Service").variables(new Variable("maven_add_param", ""))
.stages(new Stage("Default Stage")
.jobs(new Job("Default Job",
new BambooKey("JOB1"))
@@ -87,9 +86,7 @@ public class PlanSpec {
.description("Clean")
.inlineBody("#!/bin/bash\n" +
"set -e\n" +
- "rm -rf ./*"),
- new VcsCheckoutTask()
- .description("Checkout Default Repository")
+ "rm -rf ./*"), new VcsCheckoutTask().description("Checkout Default Repository").cleanCheckout(true)
.checkoutItems(new CheckoutItem().defaultRepository()),
new ScriptTask()
.description("Build")
@@ -109,9 +106,7 @@ public class PlanSpec {
.description("${bamboo.g.gitTag}")
.tagName("${bamboo.g.gitTag}")
.defaultRepository())
- .dockerConfiguration(
- new DockerConfiguration()
- .image("nexus.iqser.com:5001/infra/maven:3.6.2-jdk-13-3.0.0")
+ .dockerConfiguration(new DockerConfiguration().image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim")
.dockerRunArguments("--net=host")
.volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml")
.volume("/var/run/docker.sock", "/var/run/docker.sock")
@@ -140,29 +135,22 @@ public class PlanSpec {
.description("Clean")
.inlineBody("#!/bin/bash\n" +
"set -e\n" +
- "rm -rf ./*"),
- new VcsCheckoutTask()
- .description("Checkout Default Repository")
+ "rm -rf ./*"), new VcsCheckoutTask().description("Checkout Default Repository").cleanCheckout(true)
.checkoutItems(new CheckoutItem().defaultRepository()),
new ScriptTask()
.description("Sonar")
.location(Location.FILE)
.fileFromPath("bamboo-specs/src/main/resources/scripts/sonar-java.sh")
.argument(SERVICE_NAME))
- .dockerConfiguration(
- new DockerConfiguration()
- .image("nexus.iqser.com:5001/infra/maven:3.6.2-jdk-13-3.0.0")
- .dockerRunArguments("--net=host")
- .volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml")
+ .dockerConfiguration(new DockerConfiguration().image("nexus.iqser.com:5001/infra/maven:3.8.4-openjdk-17-slim")
+ .dockerRunArguments("--net=host")
+ .volume("/etc/maven/settings.xml", "/usr/share/maven/conf/settings.xml")
.volume("/var/run/docker.sock", "/var/run/docker.sock")
)
)
)
.linkedRepositories("RED / " + SERVICE_NAME)
- .triggers(
- new ScheduledTrigger()
- .scheduleOnceDaily(LocalTime.of(12, 00)),
- new BitbucketServerTrigger())
+ .triggers(new ScheduledTrigger().scheduleOnceDaily(LocalTime.of(23, 00)))
.planBranchManagement(new PlanBranchManagement()
.createForVcsBranchMatching("release.*")
.notificationForCommitters());
diff --git a/bamboo-specs/src/main/resources/scripts/build-java.sh b/bamboo-specs/src/main/resources/scripts/build-java.sh
index 60dfe783c..0e83e1d4a 100755
--- a/bamboo-specs/src/main/resources/scripts/build-java.sh
+++ b/bamboo-specs/src/main/resources/scripts/build-java.sh
@@ -3,49 +3,58 @@ set -e
SERVICE_NAME=$1
-if [[ "${bamboo_version_tag}" = "dev" ]]
-then
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+if [[ "$bamboo_planRepository_branchName" == "master" ]]
+then
+ branchVersion=$(cat pom.xml | grep -Eo ".*" | sed -s 's|\(.*\)\..*\(-*.*\)|\1|')
+ latestVersion=$( semver $(git tag -l $branchVersion.*) | tail -n1)
+ newVersion="$(semver $latestVersion -p -i minor)"
+elif [[ "$bamboo_planRepository_branchName" == release* ]]
+then
+ branchVersion=$(echo $bamboo_planRepository_branchName | sed -s 's|release\/\([0-9]\+\.[0-9]\+\)\.x|\1|')
+ latestVersion=$( semver $(git tag -l $branchVersion.*) | tail -n1)
+ newVersion="$(semver $latestVersion -p -i patch)"
+elif [[ "${bamboo_version_tag}" != "dev" ]]
+then
+ newVersion="${bamboo_version_tag}"
+else
+ mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
--no-transfer-progress \
+ ${bamboo_maven_add_param} \
clean install \
-Djava.security.egd=file:/dev/./urandomelse
-else
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
- versions:set \
- -DnewVersion=${bamboo_version_tag}
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
- versions:set \
- -DnewVersion=${bamboo_version_tag}
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
- --no-transfer-progress \
- clean deploy \
- -e \
- -DdeployAtEnd=true \
- -Dmaven.wagon.http.ssl.insecure=true \
- -Dmaven.wagon.http.ssl.allowall=true \
- -Dmaven.wagon.http.ssl.ignore.validity.dates=true \
- -DaltDeploymentRepository=iqser_release::default::https://nexus.iqser.com/repository/red-platform-releases
+ echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag
+ exit 0
fi
-${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+echo "gitTag=${newVersion}" > git.tag
+
+mvn --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ versions:set \
+ -DnewVersion=${newVersion}
+
+mvn --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
+ versions:set \
+ -DnewVersion=${newVersion}
+
+mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
--no-transfer-progress \
+ clean deploy \
+ ${bamboo_maven_add_param} \
+ -e \
+ -DdeployAtEnd=true \
+ -Dmaven.wagon.http.ssl.insecure=true \
+ -Dmaven.wagon.http.ssl.allowall=true \
+ -Dmaven.wagon.http.ssl.ignore.validity.dates=true \
+ -DaltDeploymentRepository=iqser_release::default::https://nexus.iqser.com/repository/red-platform-releases
+
+mvn --no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
package
-${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
+mvn --no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
docker:push
-if [[ "${bamboo_version_tag}" = "dev" ]]
-then
- echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag
-else
- echo "gitTag=${bamboo_version_tag}" > git.tag
-fi
+
diff --git a/bamboo-specs/src/main/resources/scripts/sonar-java.sh b/bamboo-specs/src/main/resources/scripts/sonar-java.sh
index f1d90a5ef..e141df861 100755
--- a/bamboo-specs/src/main/resources/scripts/sonar-java.sh
+++ b/bamboo-specs/src/main/resources/scripts/sonar-java.sh
@@ -4,46 +4,41 @@ set -e
SERVICE_NAME=$1
echo "build jar binaries"
-${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+mvn -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
--no-transfer-progress \
clean install \
-Djava.security.egd=file:/dev/./urandomelse
echo "dependency-check:aggregate"
-${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
+mvn --no-transfer-progress \
-f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
org.owasp:dependency-check-maven:aggregate
if [[ -z "${bamboo_repository_pr_key}" ]]
then
echo "Sonar Scan for branch: ${bamboo_planRepository_1_branch}"
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
- sonar:sonar \
- -Dsonar.projectKey=RED_$SERVICE_NAME \
- -Dsonar.host.url=https://sonarqube.iqser.com \
- -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
- -Dsonar.branch.name=${bamboo_planRepository_1_branch} \
- -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
- -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
- -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
-
+ mvn --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ sonar:sonar \
+ -Dsonar.projectKey=RED_$SERVICE_NAME \
+ -Dsonar.host.url=https://sonarqube.iqser.com \
+ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
+ -Dsonar.branch.name=${bamboo_planRepository_1_branch} \
+ -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
+ -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
+ -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
else
echo "Sonar Scan for PR with key1: ${bamboo_repository_pr_key}"
- ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
- --no-transfer-progress \
- -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
- sonar:sonar \
- -Dsonar.projectKey=RED_$SERVICE_NAME \
- -Dsonar.host.url=https://sonarqube.iqser.com \
- -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
- -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \
- -Dsonar.pullrequest.branch=${bamboo_repository_pr_sourceBranch} \
- -Dsonar.pullrequest.base=${bamboo_repository_pr_targetBranch} \
- -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
- -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
- -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
+ mvn --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ sonar:sonar \
+ -Dsonar.projectKey=RED_$SERVICE_NAME \
+ -Dsonar.host.url=https://sonarqube.iqser.com \
+ -Dsonar.login=${bamboo_sonarqube_api_token_secret} \
+ -Dsonar.pullrequest.key=${bamboo_repository_pr_key} \
+ -Dsonar.pullrequest.branch=${bamboo_repository_pr_sourceBranch} \
+ -Dsonar.pullrequest.base=${bamboo_repository_pr_targetBranch} \
+ -Dsonar.dependencyCheck.jsonReportPath=target/dependency-check-report.json \
+ -Dsonar.dependencyCheck.xmlReportPath=target/dependency-check-report.xml \
+ -Dsonar.dependencyCheck.htmlReportPath=target/dependency-check-report.html
fi
diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java
index 9413fb765..35ab36007 100644
--- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java
+++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java
@@ -1,17 +1,18 @@
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
import java.time.OffsetDateTime;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
@Data
@Builder
@AllArgsConstructor
@@ -61,6 +62,7 @@ public class FileModel {
private String dossierId;
private OffsetDateTime redactionModificationDate;
private OffsetDateTime fileManipulationDate;
+ private boolean hasHighlights;
public boolean isAnalysisRequired(){
return this.fullAnalysisRequired || this.reanalysisRequired;
diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileType.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileType.java
index a9e224926..def75e2ca 100644
--- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileType.java
+++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileType.java
@@ -3,7 +3,7 @@ package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.d
import lombok.Getter;
public enum FileType {
- UNTOUCHED(".pdf"), ORIGIN(".pdf"), REDACTION_LOG(".json"), SECTION_GRID(".json"), TEXT(".json"), NER_ENTITIES(".json"), IMAGE_INFO(".json"), IMPORTED_REDACTIONS(".json");
+ UNTOUCHED(".pdf"), ORIGIN(".pdf"), REDACTION_LOG(".json"), SECTION_GRID(".json"), TEXT(".json"), NER_ENTITIES(".json"), IMAGE_INFO(".json"), IMPORTED_REDACTIONS(".json"), TEXT_HIGHLIGHTS(".json");
@Getter
private final String extension;
diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java
index 010ca780b..18ff855a2 100644
--- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java
+++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java
@@ -1,17 +1,25 @@
package com.iqser.red.service.persistence.service.v1.api.resources;
+import java.time.OffsetDateTime;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierInformation;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
-import java.time.OffsetDateTime;
-import java.util.List;
-import java.util.Set;
@ResponseStatus(value = HttpStatus.OK)
public interface DossierResource {
@@ -52,8 +60,9 @@ public interface DossierResource {
List getAllDossiers(@RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived,
@RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted);
+
@GetMapping(value = REST_PATH + INFO_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
- DossierInformation getDossierInformation();
+ DossierInformation getDossierInformation(@RequestBody List filteredDossierIds);
@GetMapping(value = REST_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE)
Dossier getDossierById(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java
index 1d0bf3c8a..5b07d70c4 100644
--- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java
+++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.iqser.red.service.pdftron.redaction.v1.api.model.DocumentRequest;
+import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightConversionRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightResponse;
@@ -20,6 +21,7 @@ public interface ReanalysisResource {
String REANALYZE_PATH = "/reanalyze";
String IMPORT_REDACTIONS_PATH = "/import-redactions";
String TEXT_HIGHLIGHT_CONVERSION_PATH = "/texthighlights-conversion";
+ String CONVERT_TEXT_HIGHLIGHTS_PATH = "/convert-texthighlights";
String OCR_REANALYZE_PATH = "/ocr/reanalyze";
String REINDEX_PATH = "/reindex";
String DOSSIER_ID_PARAM = "dossierId";
@@ -65,4 +67,8 @@ public interface ReanalysisResource {
@PostMapping(value = TEXT_HIGHLIGHT_CONVERSION_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
TextHighlightResponse processTextHighlights(@RequestBody TextHighlightRequest textHighlightRequest);
+
+ @PostMapping(value = CONVERT_TEXT_HIGHLIGHTS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
+ void convertTextHighlights(@RequestBody TextHighlightConversionRequest textHighlightRequest);
+
}
diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java
index 3b375f1cd..3bd1ee7be 100644
--- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java
+++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java
@@ -1,22 +1,35 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.dossier;
-import com.iqser.red.service.persistence.management.v1.processor.utils.JSONIntegerSetConverter;
-import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
-import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.hibernate.annotations.Fetch;
-import org.hibernate.annotations.FetchMode;
-
-import javax.persistence.*;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Convert;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Fetch;
+import org.hibernate.annotations.FetchMode;
+
+import com.iqser.red.service.persistence.management.v1.processor.utils.JSONIntegerSetConverter;
+import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
+import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
@Data
@Builder
@AllArgsConstructor
@@ -138,6 +151,9 @@ public class FileEntity {
@Column
private OffsetDateTime lastManualChangeDate;
+ @Column
+ private boolean hasHighlights;
+
@Column(columnDefinition = "text", name = "excluded_pages")
@Convert(converter = JSONIntegerSetConverter.class)
private Set excludedPages = new HashSet<>();
diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java
index 11ea72a2d..112d578a1 100644
--- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java
+++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java
@@ -1,5 +1,17 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
+import java.time.OffsetDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.transaction.Transactional;
+
+import org.springframework.stereotype.Service;
+
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
@@ -9,17 +21,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-import javax.transaction.Transactional;
-import java.time.OffsetDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
+import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
@@ -31,7 +34,7 @@ public class FileStatusPersistenceService {
private final DossierPersistenceService dossierService;
- public void createStatus(String dossierId, String fileId, String filename, String uploader) {
+ public void createStatus(String dossierId, String fileId, String filename, String uploader, boolean hasHighlights) {
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
FileEntity file = new FileEntity();
@@ -46,6 +49,7 @@ public class FileStatusPersistenceService {
file.setLastUploaded(now);
file.setLastUpdated(now);
file.setFileManipulationDate(now);
+ file.setHasHighlights(hasHighlights);
fileRepository.save(file);
}
@@ -295,14 +299,14 @@ public class FileStatusPersistenceService {
@Transactional
- public void overwriteFile(String fileId, String uploader, String filename) {
+ public void overwriteFile(String fileId, String uploader, String filename, boolean hasHighlights) {
fileRepository.findById(fileId).ifPresent((file) -> {
file.setExcludedPages(new HashSet<>());
});
int countUpdate = fileRepository.overwriteFile(fileId, filename, uploader, ProcessingStatus.FULLREPROCESS, WorkflowStatus.NEW, OffsetDateTime.now()
- .truncatedTo(ChronoUnit.MILLIS), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
+ .truncatedTo(ChronoUnit.MILLIS), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), hasHighlights);
if (countUpdate == 0) {
throw new NotFoundException("Unknown file=" + fileId);
}
@@ -354,14 +358,24 @@ public class FileStatusPersistenceService {
return fileRepository.countSoftDeletedFiles(dossierId);
}
+
public List getAllRelevantStatusesForReanalysisScheduler() {
+
return fileRepository.getAllRelevantStatusesForReanalysisScheduler();
}
@Transactional
public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) {
+
fileRepository.updateFileModificationDate(fileId, fileManipulationDate);
}
+
+ @Transactional
+ public void updateHasHighlights(String fileId, boolean hasHighlights) {
+
+ fileRepository.updateHasHighlights(fileId, hasHighlights);
+ }
+
}
diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java
index e4bcb80f3..345545a86 100644
--- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java
+++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java
@@ -1,15 +1,15 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
+import java.time.OffsetDateTime;
+import java.util.List;
-import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
-import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
-import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
-import java.time.OffsetDateTime;
-import java.util.List;
+import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
+import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
+import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
public interface FileRepository extends JpaRepository {
@@ -67,25 +67,31 @@ public interface FileRepository extends JpaRepository {
@Modifying(clearAutomatically = true)
@Query("update FileEntity f set f.processingStatus = :processingStatus, f.lastUpdated = :lastUpdated," +
"f.lastIndexed = :lastIndexed where f.id = :fileId")
- void setUpdateStatusIndexingSuccessful(String fileId, ProcessingStatus processingStatus, OffsetDateTime lastUpdated,
- OffsetDateTime lastIndexed);
+ void setUpdateStatusIndexingSuccessful(String fileId, ProcessingStatus processingStatus, OffsetDateTime lastUpdated, OffsetDateTime lastIndexed);
+
@Modifying
@Query("update FileEntity f set f.lastUpdated = :lastUpdated, f.lastOCRTime = :lastOCRTime where f.id = :fileId")
void updateLastOCRTime(String fileId, OffsetDateTime lastUpdated, OffsetDateTime lastOCRTime);
+
@Modifying
@Query("update FileEntity f set f.fileManipulationDate = :fileManipulationDate where f.id = :fileId")
void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate);
+
+ @Modifying
+ @Query("update FileEntity f set f.hasHighlights = :hasHighlights where f.id = :fileId")
+ void updateHasHighlights(String fileId, boolean hasHighlights);
+
+
@Modifying
@Query("update FileEntity f set f.lastUpdated = :lastUpdated, f.hasAnnotationComments = :hasAnnotationComments where f.id = :fileId")
void updateHasComments(String fileId, OffsetDateTime lastUpdated, boolean hasAnnotationComments);
@Modifying
- @Query("update FileEntity f set f.processingStatus = :processingStatus, f.lastUpdated = :lastUpdated, " +
- "f.deleted = :softDeletedTime where f.id = :fileId")
+ @Query("update FileEntity f set f.processingStatus = :processingStatus, f.lastUpdated = :lastUpdated, " + "f.deleted = :softDeletedTime where f.id = :fileId")
int setSoftDelete(String fileId, ProcessingStatus processingStatus, OffsetDateTime lastUpdated,
OffsetDateTime softDeletedTime);
@@ -113,17 +119,11 @@ public interface FileRepository extends JpaRepository {
@Query("update FileEntity f set f.excludedFromAutomaticAnalysis = :excludedFromAutomaticAnalysis, f.lastUpdated = :lastUpdated where f.id = :fileId")
int toggleAutomaticAnalysis(String fileId, boolean excludedFromAutomaticAnalysis, OffsetDateTime lastUpdated);
+
@Modifying(clearAutomatically = true)
- @Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, " +
- "f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, f.fileManipulationDate = :lastUploaded, " +
- "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, " +
- "f.assignee = null, f.approvalDate = null, f.numberOfAnalyses = 0, f.lastManualChangeDate = null, f.redactionModificationDate = null," +
- "f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, " +
- "f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, " +
- "f.deleted = null, f.hardDeletedTime = null " +
- "where f.id = :fileId")
- int overwriteFile(String fileId, String filename, String uploader, ProcessingStatus processingStatus,
- WorkflowStatus workflowStatus, OffsetDateTime lastUploaded, OffsetDateTime lastUpdated);
+ @Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, " + "f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, f.fileManipulationDate = :lastUploaded, " + "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, " + "f.assignee = null, f.approvalDate = null, f.numberOfAnalyses = 0, f.lastManualChangeDate = null, f.redactionModificationDate = null," + "f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, " + "f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, " + "f.deleted = null, f.hardDeletedTime = null, f.hasHighlights = :hasHighlights " + "where f.id = :fileId")
+ int overwriteFile(String fileId, String filename, String uploader, ProcessingStatus processingStatus, WorkflowStatus workflowStatus, OffsetDateTime lastUploaded,
+ OffsetDateTime lastUpdated, boolean hasHighlights);
@Query("select count(f) from FileEntity f where f.dossierId = :dossierId and f.deleted is not null and f.hardDeletedTime is null")
int countSoftDeletedFiles(String dossierId);
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java
index 09dc66294..b9d40337f 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java
@@ -107,10 +107,15 @@ public class DossierController implements DossierResource {
}
@Override
- public DossierInformation getDossierInformation() {
+ public DossierInformation getDossierInformation(@RequestBody List filteredDossierIds) {
DossierInformation dossierInformation = new DossierInformation();
- dossierService.getAllDossiers().forEach(d -> {
+
+ var dossiers = dossierService.getAllDossiers();
+ if (filteredDossierIds != null && filteredDossierIds.size() > 0) {
+ dossiers = dossiers.stream().filter(d -> filteredDossierIds.contains(d.getId())).collect(Collectors.toList());
+ }
+ dossiers.forEach(d -> {
if (d.getHardDeletedTime() != null) {
dossierInformation.setNumberOfHardDeletedDossiers(dossierInformation.getNumberOfHardDeletedDossiers() + 1);
} else if (d.getSoftDeletedTime() != null) {
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java
index b8cb40903..b305f50d5 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java
@@ -17,12 +17,13 @@ import com.google.common.collect.Sets;
import com.iqser.red.service.pdftron.redaction.v1.api.model.DocumentRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse;
+import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightConversionOperation;
+import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightConversionRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightOperation;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightRequest;
import com.iqser.red.service.pdftron.redaction.v1.api.model.TextHighlightResponse;
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
import com.iqser.red.service.peristence.v1.server.service.IndexingService;
-import com.iqser.red.service.peristence.v1.server.service.ReanalysisRequiredStatusService;
import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
@@ -83,10 +84,23 @@ public class ReanalysisController implements ReanalysisResource {
}
- public void reindex(@RequestParam(value = DOSSIER_ID_PARAM, required = false) String dossierId,
- @RequestParam(value = "dropIndex", required = false, defaultValue = FALSE) boolean dropIndex, @RequestBody Set fileIds) {
+ public void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId,
+ @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) {
- indexingService.reindex(dossierId, fileIds, dropIndex);
+ dossierPersistenceService.getAndValidateDossier(dossierId);
+
+ if (force) {
+ fileStatusService.setStatusOcrProcessing(dossierId, fileId);
+ } else {
+ FileModel dossierFile = fileStatusService.getStatus(fileId);
+ if (dossierFile.getProcessingStatus().equals(ProcessingStatus.DELETED) || dossierFile.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) {
+ throw new ConflictException("Cannot analyse a deleted/approved file");
+ }
+ if (dossierFile.getLastOCRTime() != null) {
+ throw new ConflictException("File already has been OCR processed");
+ }
+ ocrFiles(dossierId, Sets.newHashSet(fileId));
+ }
}
@@ -109,6 +123,13 @@ public class ReanalysisController implements ReanalysisResource {
}
+ public void reindex(@RequestParam(value = DOSSIER_ID_PARAM, required = false) String dossierId,
+ @RequestParam(value = "dropIndex", required = false, defaultValue = FALSE) boolean dropIndex, @RequestBody Set fileIds) {
+
+ indexingService.reindex(dossierId, fileIds, dropIndex);
+ }
+
+
public TextHighlightResponse processTextHighlights(@RequestBody TextHighlightRequest textHighlightRequest) {
var textHighlightResponse = pDFTronRedactionClient.processTextHighlights(textHighlightRequest);
@@ -123,22 +144,15 @@ public class ReanalysisController implements ReanalysisResource {
}
- public void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId,
- @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) {
+ public void convertTextHighlights(@RequestBody TextHighlightConversionRequest textHighlightRequest) {
- dossierPersistenceService.getAndValidateDossier(dossierId);
+ boolean hasTextHighlights = pDFTronRedactionClient.convertTextHighlights(textHighlightRequest);
- if (force) {
- fileStatusService.setStatusOcrProcessing(dossierId, fileId);
- } else {
- FileModel dossierFile = fileStatusService.getStatus(fileId);
- if (dossierFile.getProcessingStatus().equals(ProcessingStatus.DELETED) || dossierFile.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) {
- throw new ConflictException("Cannot analyse a deleted/approved file");
- }
- if (dossierFile.getLastOCRTime() != null) {
- throw new ConflictException("File already has been OCR processed");
- }
- ocrFiles(dossierId, Sets.newHashSet(fileId));
+ fileStatusService.updateHasHighlights(textHighlightRequest.getFileId(), hasTextHighlights);
+ fileStatusService.updateFileModificationDate(textHighlightRequest.getFileId(), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
+
+ if (textHighlightRequest.getOperation().equals(TextHighlightConversionOperation.CONVERT)) {
+ fileStatusService.setStatusFullReprocess(textHighlightRequest.getDossierId(), textHighlightRequest.getFileId(), true);
}
}
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java
index 6b5b703c7..2d9200d6e 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java
@@ -4,15 +4,12 @@ import java.nio.charset.StandardCharsets;
import java.time.OffsetDateTime;
import java.util.Arrays;
-import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
-
import org.springframework.stereotype.Service;
import com.google.common.hash.HashFunction;
import com.google.common.hash.Hashing;
import com.iqser.red.service.pdftron.redaction.v1.api.model.DocumentRequest;
import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient;
-import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
@@ -27,6 +24,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.BinaryFileRequest;
+import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.iqser.red.service.search.v1.model.IndexMessageType;
@@ -78,8 +76,9 @@ public class FileService {
}
}
+ boolean hasHighlights;
try {
- pdfTronRedactionClient.saveOptimizedAndAnnotations(new DocumentRequest(request.getDossierId(), fileId, request.getData()));
+ hasHighlights = pdfTronRedactionClient.saveOptimizedAndAnnotations(new DocumentRequest(request.getDossierId(), fileId, request.getData()));
} catch (FeignException e) {
log.warn("Failed to optimize file: {}", request.getFilename(), e);
@@ -89,11 +88,11 @@ public class FileService {
if (existingStatus != null) {
// the file is already uploaded, just reanalyse it.
- fileStatusService.overwriteFile(request.getDossierId(), fileId, request.getUploader(), request.getFilename());
+ fileStatusService.overwriteFile(request.getDossierId(), fileId, request.getUploader(), request.getFilename(), hasHighlights);
} else {
// the file is new, should create a new status for it.
log.info("File {} has no status yet, creating one and setting to unprocessed.", request.getFilename());
- fileStatusService.createStatus(request.getDossierId(), fileId, request.getUploader(), request.getFilename());
+ fileStatusService.createStatus(request.getDossierId(), fileId, request.getUploader(), request.getFilename(), hasHighlights);
}
return new JSONPrimitive<>(fileId);
}
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java
index f799cc8a7..b3b1f0289 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java
@@ -308,9 +308,9 @@ public class FileStatusService {
@Transactional
- public void createStatus(String dossierId, String fileId, String uploader, String filename) {
+ public void createStatus(String dossierId, String fileId, String uploader, String filename, boolean hasHighlights) {
- fileStatusPersistenceService.createStatus(dossierId, fileId, filename, uploader);
+ fileStatusPersistenceService.createStatus(dossierId, fileId, filename, uploader, hasHighlights);
addToAnalysisQueue(dossierId, fileId, false, Set.of());
}
@@ -351,11 +351,18 @@ public class FileStatusService {
}
- public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate){
+ public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) {
+
fileStatusPersistenceService.updateFileModificationDate(fileId, fileManipulationDate);
}
+ public void updateHasHighlights(String fileId, boolean hasHighlights) {
+
+ fileStatusPersistenceService.updateHasHighlights(fileId, hasHighlights);
+ }
+
+
public void setAssignee(String fileId, String assignee) {
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
@@ -443,9 +450,9 @@ public class FileStatusService {
@Transactional
- public void overwriteFile(String dossierId, String fileId, String uploader, String filename) {
+ public void overwriteFile(String dossierId, String fileId, String uploader, String filename, boolean hasHighlights) {
- fileStatusPersistenceService.overwriteFile(fileId, uploader, filename);
+ fileStatusPersistenceService.overwriteFile(fileId, uploader, filename, hasHighlights);
wipeFileData(dossierId, fileId);
setStatusFullReprocess(dossierId, fileId, false);
}
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/19-added-has-highlights-to-file.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/19-added-has-highlights-to-file.changelog.yaml
new file mode 100644
index 000000000..c07e80fa8
--- /dev/null
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/19-added-has-highlights-to-file.changelog.yaml
@@ -0,0 +1,11 @@
+databaseChangeLog:
+ - changeSet:
+ id: added-has-highlights-to-file
+ author: dom
+ changes:
+ - addColumn:
+ columns:
+ - column:
+ name: has_highlights
+ type: BOOLEAN
+ tableName: file
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/19-add-index-information-table.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/20-add-index-information-table.yaml
similarity index 100%
rename from persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/19-add-index-information-table.yaml
rename to persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/20-add-index-information-table.yaml
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml
index 06d09b056..61ed3b9f5 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml
@@ -44,4 +44,6 @@ databaseChangeLog:
- include:
file: db/changelog/18-add-migration-table.yaml
- include:
- file: db/changelog/19-add-index-information-table.yaml
\ No newline at end of file
+ file: db/changelog/19-added-has-highlights-to-file.changelog.yaml
+ - include:
+ file: db/changelog/20-add-index-information-table.yaml
\ No newline at end of file
diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java
index 652bc719e..81a5e897a 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java
@@ -113,7 +113,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThatThrownBy(() -> dossierClient.undeleteDossiers(Sets.newHashSet(dossier.getId()))).isInstanceOf(FeignException.class);
- var dossierInformation = dossierClient.getDossierInformation();
+ var dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(1);
@@ -147,7 +147,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getArchivedDossiers()).hasSize(1);
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0);
- var dossierInformation = dossierClient.getDossierInformation();
+ var dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(1);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(0);
@@ -158,7 +158,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getAllDossiers(false, false)).hasSize(2);
assertThat(dossierClient.getArchivedDossiers()).hasSize(0);
- dossierInformation = dossierClient.getDossierInformation();
+ dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(2);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(0);
@@ -171,7 +171,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getArchivedDossiers()).hasSize(2);
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0);
- dossierInformation = dossierClient.getDossierInformation();
+ dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(0);
@@ -187,7 +187,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getArchivedDossiers()).hasSize(1);
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1);
- dossierInformation = dossierClient.getDossierInformation();
+ dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(1);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(0);
@@ -201,7 +201,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getArchivedDossiers()).hasSize(0);
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1);
- dossierInformation = dossierClient.getDossierInformation();
+ dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(1);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(1);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(0);
@@ -217,7 +217,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
assertThat(dossierClient.getArchivedDossiers()).hasSize(1);
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0);
- dossierInformation = dossierClient.getDossierInformation();
+ dossierInformation = dossierClient.getDossierInformation(List.of());
assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfSoftDeletedDossiers()).isEqualTo(0);
assertThat(dossierInformation.getNumberOfHardDeletedDossiers()).isEqualTo(1);
diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml
index 18045b65b..593f087eb 100755
--- a/persistence-service-v1/pom.xml
+++ b/persistence-service-v1/pom.xml
@@ -27,7 +27,7 @@
3.90.0
2.26.0
- 3.53.0
+ 3.59.0
3.19.0