diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java index ce6cd7f01..d109733ca 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/JSONPrimitive.java @@ -1,15 +1,17 @@ package com.iqser.red.service.persistence.service.v1.api.model; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.RequiredArgsConstructor; @Data +@EqualsAndHashCode(of = "value") @RequiredArgsConstructor public class JSONPrimitive { private final T value; - public static JSONPrimitive of(T value){ + public static JSONPrimitive of(T value) { return new JSONPrimitive<>(value); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/FileAttributesGeneralConfiguration.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/FileAttributesGeneralConfiguration.java index 69f9df3b3..f9615b8d2 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/FileAttributesGeneralConfiguration.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/FileAttributesGeneralConfiguration.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import lombok.AllArgsConstructor; import lombok.Data; @@ -23,6 +24,7 @@ public class FileAttributesGeneralConfiguration { private String delimiter; @OneToOne + @JsonIgnore @MapsId("dossierTemplateId") private DossierTemplate dossierTemplate; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasis.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasis.java index a71563c0a..02ef895f2 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasis.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasis.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -8,6 +10,8 @@ import javax.persistence.*; @Data @NoArgsConstructor @Entity +@AllArgsConstructor +@Builder @Table(name = "legal_basis") public class LegalBasis { @@ -21,8 +25,5 @@ public class LegalBasis { @Column private String reason; - @ManyToOne - private LegalBasisMapping legalBasisMapping; - } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasisMapping.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasisMapping.java index 348a5dbef..e1ad39f19 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasisMapping.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/LegalBasisMapping.java @@ -18,7 +18,7 @@ public class LegalBasisMapping { @Column private long version; - @OneToMany(mappedBy = "legalBasisMapping", cascade = CascadeType.ALL) + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) private List legalBasis = new ArrayList<>(); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java index 650a3cc6c..e85122d4d 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/configuration/Watermark.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import lombok.AllArgsConstructor; import lombok.Data; @@ -30,6 +31,7 @@ public class Watermark { @Column private WatermarkOrientation orientation; + @JsonIgnore @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dossier_template_id") private DossierTemplate dossierTemplate; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierAttribute.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierAttribute.java index e750c4115..e8f8fd0ea 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierAttribute.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierAttribute.java @@ -1,6 +1,8 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -11,6 +13,9 @@ import java.io.Serializable; @Data @Table(name = "dossier_attribute") @Entity +@AllArgsConstructor +@NoArgsConstructor +@Builder public class DossierAttribute { @EmbeddedId @@ -19,10 +24,12 @@ public class DossierAttribute { @Column private String value; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @MapsId("dossierId") private Dossier dossier; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @MapsId("dossierAttributeConfigId") private DossierAttributeConfig dossierAttributeConfig; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java index 7f1cc17d6..9b4271fbe 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/DossierTemplate.java @@ -50,14 +50,19 @@ public class DossierTemplate { @ElementCollection private Set downloadFileTypes = new HashSet<>(); - @ManyToMany + @JsonIgnore + @OneToMany(mappedBy = "dossierTemplate") private List reportTemplates = new ArrayList<>(); - @OneToMany @JsonIgnore + @OneToMany(mappedBy = "dossierTemplate") private List dossierTypes = new ArrayList<>(); - @OneToMany @JsonIgnore + @OneToMany(mappedBy = "dossierTemplate") private List dossiers = new ArrayList<>(); + + @JsonIgnore + @OneToMany(mappedBy = "dossierTemplate") + private List fileAttributeConfigs = new ArrayList<>(); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/File.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/File.java index f8842b16a..8c8641860 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/File.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/File.java @@ -1,9 +1,12 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -112,13 +115,18 @@ public class File { private int analysisVersion; @ElementCollection - private Set excludedPages; + private Set excludedPages = new HashSet<>(); - @OneToMany(mappedBy = "file", fetch = FetchType.LAZY, cascade = CascadeType.ALL) - private List fileAttributes; + @OneToMany(mappedBy = "file", fetch = FetchType.EAGER, cascade = CascadeType.ALL) + private List fileAttributes = new ArrayList<>(); + @JsonIgnore @ManyToOne private Dossier dossier; + @Column(updatable = false, insertable = false, name = "dossier_id") + private String dossierId; + + } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttribute.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttribute.java index 8798e3e1d..f716bf4d0 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttribute.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttribute.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; @@ -16,10 +17,12 @@ public class FileAttribute { @Column private String value; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @MapsId("fileId") private File file; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @MapsId("fileAttributeConfigId") private FileAttributeConfig fileAttributeConfig; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttributeConfig.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttributeConfig.java index 6ca86869a..a9a98a025 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttributeConfig.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/FileAttributeConfig.java @@ -1,11 +1,18 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.persistence.*; @Data @Entity +@NoArgsConstructor +@AllArgsConstructor +@Builder @Table(name = "file_attribute_config") public class FileAttributeConfig { @@ -29,6 +36,7 @@ public class FileAttributeConfig { private FileAttributeType type = FileAttributeType.TEXT; @ManyToOne + @JsonIgnore private DossierTemplate dossierTemplate; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/ReportTemplate.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/ReportTemplate.java index 1b93d407a..d0686d7b9 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/ReportTemplate.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/ReportTemplate.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.model.data.dossier; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; @@ -26,10 +27,15 @@ public class ReportTemplate { @Column private boolean activeByDefault; + @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) private DossierTemplate dossierTemplate; + @Column(updatable = false,insertable = false,name = "dossier_template_id") + private String dossierTemplateId; + @ManyToMany + @JsonIgnore private List dossiers = new ArrayList<>(); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesConfigResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesConfigResource.java index 037f29a37..a13434731 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesConfigResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesConfigResource.java @@ -9,9 +9,7 @@ import java.util.List; public interface DossierAttributesConfigResource { - String DOSSIER_ATTRIBUTES_PATH = "/dossierAttributes"; - String DOSSIER_ATTRIBUTE_PATH = "/dossierAttribute"; - String BASE_CONFIG_PATH = "/baseConfig"; + String DOSSIER_ATTRIBUTE_PATH = "/dossier-attribute"; String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; @@ -21,30 +19,30 @@ public interface DossierAttributesConfigResource { @ResponseBody @ResponseStatus(HttpStatus.OK) - @PostMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) DossierAttributeConfig addOrUpdateDossierAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody DossierAttributeConfig dossierAttributeConfig); @ResponseBody @ResponseStatus(HttpStatus.OK) - @PutMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @PutMapping(value = DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) List setDossierAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody List dossierAttributesConfig); @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + DOSSIER_ATTRIBUTE_ID_PATH_VARIABLE) + @DeleteMapping(value = DOSSIER_ATTRIBUTE_PATH + DOSSIER_ATTRIBUTE_ID_PATH_VARIABLE) void deleteDossierAttribute(@PathVariable(DOSSIER_ATTRIBUTE_ID) String dossierAttributeId); @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete") + @PostMapping(value = DOSSIER_ATTRIBUTE_PATH + "/delete") void deleteDossierAttributes(@RequestBody List dossierAttributeIds); @ResponseBody @ResponseStatus(HttpStatus.OK) - @GetMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) List getDossierAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java index bddd40063..986c7eb9e 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java @@ -14,19 +14,14 @@ public interface FileAttributesConfigResource { String FILE_ATTRIBUTE_PATH = "/fileAttribute"; String BASE_CONFIG_PATH = "/baseConfig"; + String DELETE_PATH = "/delete"; + String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; String FILE_ATTRIBUTE_ID = "fileAttributeId"; String FILE_ATTRIBUTE_ID_PATH_VARIABLE = "/{" + FILE_ATTRIBUTE_ID + "}"; - @ResponseBody - @ResponseStatus(HttpStatus.OK) - @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody FileAttributeConfig fileAttributeConfig); - - @ResponseBody @ResponseStatus(HttpStatus.OK) @PutMapping(value = FILE_ATTRIBUTES_PATH + BASE_CONFIG_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -36,7 +31,13 @@ public interface FileAttributesConfigResource { @ResponseBody @ResponseStatus(HttpStatus.OK) @GetMapping(value = FILE_ATTRIBUTES_PATH + BASE_CONFIG_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); + FileAttributesGeneralConfiguration getFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); + + @ResponseBody + @ResponseStatus(HttpStatus.OK) + @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + FileAttributeConfig addOrUpdateFileAttributeConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody FileAttributeConfig fileAttributeConfig); @ResponseBody @ResponseStatus(HttpStatus.OK) @@ -46,19 +47,19 @@ public interface FileAttributesConfigResource { @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + FILE_ATTRIBUTE_ID_PATH_VARIABLE) - void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId); + @DeleteMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + FILE_ATTRIBUTE_ID_PATH_VARIABLE) + void deleteFileAttributeConfigs(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId); @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete") - void deleteFileAttributes(@RequestBody List fileAttributeIds); + @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DELETE_PATH) + void deleteFileAttributeConfigs(@RequestBody List fileAttributeIds); @ResponseBody @ResponseStatus(HttpStatus.OK) @GetMapping(value = FILE_ATTRIBUTES_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - List getFileAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); + List getFileAttributeConfigs(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ManualRedactionResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ManualRedactionResource.java index 39c01beff..9baf57732 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ManualRedactionResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ManualRedactionResource.java @@ -84,7 +84,7 @@ public interface ManualRedactionResource { @GetMapping(value = MANUAL_REDACTION_REST_PATH + "/comment" + COMMENT_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - Comment getComment( @PathVariable(COMMENT_ID) long commentId); + Comment getComment(@PathVariable(COMMENT_ID) long commentId); @DeleteMapping(MANUAL_REDACTION_REST_PATH + "/add" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE) @@ -112,8 +112,8 @@ public interface ManualRedactionResource { @PathVariable(ANNOTATION_ID) String annotationId); - @DeleteMapping(MANUAL_REDACTION_REST_PATH + "/comment" + FILE_ID_PATH_VARIABLE + COMMENT_ID_PATH_VARIABLE) - void deleteComment( @PathVariable(FILE_ID) String fileId,@PathVariable(COMMENT_ID) long commentId); + @DeleteMapping(MANUAL_REDACTION_REST_PATH + "/comment" + FILE_ID_PATH_VARIABLE + COMMENT_ID_PATH_VARIABLE) + void deleteComment(@PathVariable(FILE_ID) String fileId, @PathVariable(COMMENT_ID) long commentId); @PostMapping(value = MANUAL_REDACTION_REST_PATH + "/status/add" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE + ANNOTATION_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/configuration/v1/api/model/LegalBasisMapping.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/configuration/v1/api/model/LegalBasisMapping.java new file mode 100644 index 000000000..95c3d7699 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/configuration/v1/api/model/LegalBasisMapping.java @@ -0,0 +1,17 @@ +package com.iqser.red.service.configuration.v1.api.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +// TODO remove this - compatibility for classpath error +public class LegalBasisMapping { + + private String name; + private String description; + private String reason; + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java index f04a00710..6a61c8e1c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java @@ -10,6 +10,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; + @Slf4j @Service @RequiredArgsConstructor @@ -48,6 +50,7 @@ public class DigitalSignatureService { } + @Transactional public void updateDigitalSignature(DigitalSignature digitalSignatureModel) { digitalSignatureRepository.findById(DigitalSignature.ID).ifPresentOrElse(digitalSignature -> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java index 55edd324a..d09312f49 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java @@ -1,12 +1,15 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; + @Slf4j @Service @RequiredArgsConstructor @@ -24,7 +27,16 @@ public class WatermarkService { return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark Configuration not found")); } - public Watermark saveWatermark(Watermark watermark) { - return watermarkRepository.save(watermark); + @Transactional + public Watermark saveWatermark(String dossierTemplateId, Watermark watermark) { + + watermarkRepository.findById(dossierTemplateId).ifPresentOrElse( + loadedWatermark -> BeanUtils.copyProperties(watermark, loadedWatermark, "dossierTemplateId") + , () -> { + watermark.setDossierTemplateId(dossierTemplateId); + watermarkRepository.save(watermark); + }); + + return watermarkRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("Watermark not found")); } } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java index dc97801ab..21fb9c066 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributeConfigPersistenceService.java @@ -2,23 +2,25 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.text.WordUtils; import org.springframework.stereotype.Service; import javax.transaction.Transactional; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class DossierAttributeConfigPersistenceService { private final DossierAttributeConfigRepository dossierAttributeConfigRepository; + private final DossierAttributeRepository dossierAttributeRepository; private final DossierTemplateRepository dossierTemplateRepository; public DossierAttributeConfig addOrUpdateDossierAttribute(String dossierTemplateId, DossierAttributeConfig dossierAttributeConfig) { @@ -54,15 +56,22 @@ public class DossierAttributeConfigPersistenceService { @Transactional public List setDossierAttributesConfig(String dossierTemplateId, List dossierAttributesConfig) { - dossierAttributeConfigRepository.deleteByDossierTemplateId(dossierTemplateId); - var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); - dossierAttributesConfig.forEach(d -> { - d.setDossierTemplate(dossierTemplate); - d.setId(UUID.randomUUID().toString()); - setPlaceholder(d); - uniqueLabelAndPlaceholder(d); + + Set toSetIds = dossierAttributesConfig.stream().map(DossierAttributeConfig::getId).filter(Objects::nonNull).collect(Collectors.toSet()); + var currentConfigs = dossierAttributeConfigRepository.findAllByDossierTemplateId(dossierTemplateId); + Set configsToRemove = currentConfigs.stream().filter(c -> !toSetIds.contains(c.getId())).collect(Collectors.toSet()); + + + dossierAttributesConfig.forEach(fac -> addOrUpdateDossierAttribute(dossierTemplateId, fac)); + + configsToRemove.forEach(ctr -> { + dossierAttributeRepository.deleteByDossierAttributeConfigId(ctr.getId()); + dossierAttributeConfigRepository.deleteById(ctr.getId()); }); + return getDossierAttributes(dossierTemplateId); + + } @Transactional diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java index 45ead2a61..07aa6ebe1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierAttributePersistenceService.java @@ -1,6 +1,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; @@ -15,15 +16,18 @@ import java.util.List; @SuppressWarnings("PMD.TooManyStaticImports") public class DossierAttributePersistenceService { + private final DossierAttributeConfigRepository dossierAttributeConfigRepository; private final DossierAttributeRepository dossierAttributeRepository; private final DossierRepository dossierRepository; + @Transactional public void insertDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) { DossierAttribute dossierAttribute = new DossierAttribute(); - dossierAttribute.setId(new DossierAttribute.DossierAttributeId(null, dossierAttributeId)); + dossierAttribute.setId(new DossierAttribute.DossierAttributeId(null, null)); dossierAttribute.setValue(dossierAttributeValue); dossierAttribute.setDossier(dossierRepository.getOne(dossierId)); + dossierAttribute.setDossierAttributeConfig(dossierAttributeConfigRepository.getOne(dossierAttributeId)); dossierAttributeRepository.save(dossierAttribute); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java index 10e22f2f2..28243b739 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileAttributeConfigPersistenceService.java @@ -6,6 +6,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.FileAttributesGeneralConfiguration; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; import lombok.RequiredArgsConstructor; @@ -14,9 +15,8 @@ import org.apache.commons.lang3.text.WordUtils; import org.springframework.stereotype.Service; import javax.transaction.Transactional; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -25,6 +25,7 @@ public class FileAttributeConfigPersistenceService { private final FileAttributeConfigRepository fileAttributeConfigRepository; private final FileAttributesGeneralConfigurationRepository fileAttributesGeneralConfigurationRepository; private final DossierTemplateRepository dossierTemplateRepository; + private final FileAttributesRepository fileAttributesRepository; public FileAttributeConfig addOrUpdateFileAttribute(String dossierTemplateId, FileAttributeConfig fileAttributeConfig) { var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); @@ -73,25 +74,33 @@ public class FileAttributeConfigPersistenceService { @Transactional public List setFileAttributesConfig(String dossierTemplateId, List fileAttributesConfig) { - fileAttributeConfigRepository.deleteByDossierTemplateId(dossierTemplateId); - var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); - fileAttributesConfig.forEach(d -> { - d.setDossierTemplate(dossierTemplate); - d.setId(UUID.randomUUID().toString()); - setPlaceholder(d); - uniqueLabelAndPlaceholder(d); + Set toSetIds = fileAttributesConfig.stream().map(FileAttributeConfig::getId).filter(Objects::nonNull).collect(Collectors.toSet()); + var currentConfigs = fileAttributeConfigRepository.findByDossierTemplateId(dossierTemplateId); + Set configsToRemove = currentConfigs.stream().filter(c -> !toSetIds.contains(c.getId())).collect(Collectors.toSet()); + + + fileAttributesConfig.forEach(fac -> addOrUpdateFileAttribute(dossierTemplateId, fac)); + + configsToRemove.forEach(ctr -> { + fileAttributesRepository.deleteByFileAttributeConfigId(ctr.getId()); + fileAttributeConfigRepository.deleteById(ctr.getId()); }); + return getFileAttributes(dossierTemplateId); } @Transactional public void deleteFileAttribute(String fileAttributeId) { + fileAttributesRepository.deleteByFileAttributeConfigId(fileAttributeId); fileAttributeConfigRepository.deleteById(fileAttributeId); } @Transactional public void deleteFileAttributes(List fileAttributeIds) { - fileAttributeIds.forEach(fileAttributeConfigRepository::deleteById); + fileAttributeIds.forEach(fileAttributeId -> { + fileAttributesRepository.deleteByFileAttributeConfigId(fileAttributeId); + fileAttributeConfigRepository.deleteById(fileAttributeId); + }); } public List getFileAttributes(String dossierTemplateId) { 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 0256c87b9..7eef3ffa1 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,7 +1,9 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; @@ -12,7 +14,9 @@ import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; @Service diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeRepository.java index b9d9b95d1..d8bf074a2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierAttributeRepository.java @@ -2,6 +2,8 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -10,4 +12,11 @@ public interface DossierAttributeRepository extends JpaRepository findByIdDossierId(String dossierId); void deleteByDossierId(String dossierId); + + @Query("SELECT a FROM DossierAttribute a WHERE a.dossierAttributeConfig.dossierTemplate.id = :dossierTemplateId") + List findByDossierTemplateId(String dossierTemplateId); + + @Modifying + @Query("DELETE FROM DossierAttribute e WHERE e.dossierAttributeConfig.id = :id") + void deleteByDossierAttributeConfigId(String id); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java index 7e437f3ab..b9c824f02 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributeConfigRepository.java @@ -2,12 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; -public interface FileAttributeConfigRepository extends JpaRepository { +public interface FileAttributeConfigRepository extends JpaRepository { List findByDossierTemplateId(String dossierTemplateId); - void deleteByDossierTemplateId(String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java new file mode 100644 index 000000000..7e7a0ed0b --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileAttributesRepository.java @@ -0,0 +1,14 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; + +public interface FileAttributesRepository extends JpaRepository { + + @Modifying + @Query("DELETE FROM FileAttribute f where f.fileAttributeId.fileAttributeConfigId = :fileAttributeConfigId") + void deleteByFileAttributeConfigId(String fileAttributeConfigId); + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/ResourceLoader.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/ResourceLoader.java deleted file mode 100644 index 24f2541cc..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/ResourceLoader.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.iqser.red.service.peristence.v1.server; - -import lombok.experimental.UtilityClass; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.Set; -import java.util.stream.Collectors; - -@UtilityClass -public class ResourceLoader { - - - public Set load(String classpathPath) { - - URL resource = ResourceLoader.class.getClassLoader().getResource(classpathPath); - if (resource == null) { - throw new IllegalArgumentException("could not load classpath resource: " + classpathPath); - } - try (BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream(), StandardCharsets.UTF_8))) { - return br.lines().collect(Collectors.toSet()); - } catch (IOException e) { - throw new IllegalArgumentException("could not load classpath resource: " + classpathPath, e); - } - } - - - public String loadToString(String classpathPath) { - - URL resource = ResourceLoader.class.getClassLoader().getResource(classpathPath); - if (resource == null) { - throw new IllegalArgumentException("could not load classpath resource: " + classpathPath); - } - try (BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream(), StandardCharsets.UTF_8))) { - return br.lines().collect(Collectors.joining("\n")); - } catch (IOException e) { - throw new IllegalArgumentException("could not load classpath resource: " + classpathPath, e); - } - - } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesConfigController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesConfigController.java index 07bf6b105..79b6db827 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesConfigController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesConfigController.java @@ -21,7 +21,7 @@ public class FileAttributesConfigController implements FileAttributesConfigResou private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; @Override - public FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) { + public FileAttributeConfig addOrUpdateFileAttributeConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) { return fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, fileAttributeConfig); } @@ -32,7 +32,7 @@ public class FileAttributesConfigController implements FileAttributesConfigResou } @Override - public FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { + public FileAttributesGeneralConfiguration getFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { return fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplateId); } @@ -42,17 +42,17 @@ public class FileAttributesConfigController implements FileAttributesConfigResou } @Override - public void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) { + public void deleteFileAttributeConfigs(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) { fileAttributeConfigPersistenceService.deleteFileAttribute(fileAttributeId); } @Override - public void deleteFileAttributes(@RequestBody List fileAttributeIds) { + public void deleteFileAttributeConfigs(@RequestBody List fileAttributeIds) { fileAttributeConfigPersistenceService.deleteFileAttributes(fileAttributeIds); } @Override - public List getFileAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { + public List getFileAttributeConfigs(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { return fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java index 3b3a22ec0..23058d11f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.transaction.Transactional; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -43,6 +44,7 @@ public class FileAttributesController implements FileAttributesResource { private final DossierService dossierService; + @Transactional public ImportCsvResponse importCsv(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody ImportCsvRequest importCsvRequest) { @@ -113,6 +115,8 @@ public class FileAttributesController implements FileAttributesResource { } + + @Transactional public void setFileAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody Map fileAttributesMap) { @@ -126,6 +130,7 @@ public class FileAttributesController implements FileAttributesResource { return fileAttributesMap.entrySet().stream().map(entry -> { var fa = new FileAttribute(); + fa.setFileAttributeId(new FileAttribute.FileAttributeId()); fa.setFile(file); fa.setFileAttributeConfig(configuration.stream().filter(c -> c.getId().equals(entry.getKey())).findAny().orElseThrow(() -> new BadRequestException("Invalid File Attribute Id"))); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/LegalBasisMappingController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/LegalBasisMappingController.java index 7b31a5783..cae881757 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/LegalBasisMappingController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/LegalBasisMappingController.java @@ -1,5 +1,6 @@ package com.iqser.red.service.peristence.v1.server.controller; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasisMapping; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.transaction.Transactional; import java.util.List; @@ -21,6 +23,7 @@ public class LegalBasisMappingController implements LegalBasisMappingResource { @Override + @Transactional public void setLegalBasisMapping(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId, @RequestBody List legalBasisMapping) { legalBasisMappingRepository.findById(dossierTemplateId).ifPresentOrElse((lbm) -> { @@ -31,19 +34,20 @@ public class LegalBasisMappingController implements LegalBasisMappingResource { var lbm = new LegalBasisMapping(); lbm.setDossierTemplateId(dossierTemplateId); lbm.setLegalBasis(legalBasisMapping); - lbm.setVersion(0); + lbm.setVersion(1); legalBasisMappingRepository.save(lbm); }); } @Override + @Transactional public List getLegalBasisMapping(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { - return legalBasisMappingRepository.findById(dossierTemplateId).get().getLegalBasis(); + return legalBasisMappingRepository.findById(dossierTemplateId).map(LegalBasisMapping::getLegalBasis).orElseThrow(() -> new NotFoundException("Legal Basis Not configured!")); } @Override public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { - return legalBasisMappingRepository.findById(dossierTemplateId).get().getVersion(); + return legalBasisMappingRepository.findById(dossierTemplateId).map(LegalBasisMapping::getVersion).orElse(0L); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/UploadController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/UploadController.java index 52eb31bbf..f7e98e0e8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/UploadController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/UploadController.java @@ -44,7 +44,6 @@ public class UploadController implements UploadResource { private final PDFTronRedactionClient pdfTronRedactionClient; private final FileManagementStorageService fileManagementStorageService; private final RedactionClient redactionClient; - private final DossierPersistenceService dossierPersistenceService; @Override public JSONPrimitive upload(@RequestBody BinaryFileRequest request) { @@ -135,11 +134,13 @@ public class UploadController implements UploadResource { var fileStatus = fileStatusService.getStatus(fileId); var dossier = dossierService.getDossierById(dossierId); - PdfTronRedactionResult pdfTronRedactionResult = pdfTronRedactionClient.redact(PdfTronRedactionRequest.builder() + var request = PdfTronRedactionRequest.builder() .dossierTemplateId(dossier.getDossierTemplateId()) .document(fileManagementStorageService.getStoredObjectBytes(dossierId, fileId, FileType.ORIGIN)) .redactionLog(fileManagementStorageService.getRedactionLog(dossierId, fileId)) - .build()); + .build(); + + PdfTronRedactionResult pdfTronRedactionResult = pdfTronRedactionClient.redact(request); return new BinaryFileResult(pdfTronRedactionResult.getDocument(), fileStatus.getFilename()); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java index d8f1a356d..a53a502a8 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/WatermarkController.java @@ -15,7 +15,7 @@ public class WatermarkController implements WatermarkResource { public Watermark saveWatermark(String dossierTemplateId, @RequestBody Watermark watermark) { - return watermarkService.saveWatermark(watermark); + return watermarkService.saveWatermark(dossierTemplateId, watermark); } public Watermark getWatermark(String dossierTemplateId) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java index 89bfe4de8..c5909918e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/model/DownloadJob.java @@ -12,7 +12,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class DownloadJob { - String userId; - String storageId; + private String userId; + private String storageId; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java index ae61f6053..f0fd50623 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java @@ -12,7 +12,6 @@ import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; import feign.FeignException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.nio.charset.StandardCharsets; @@ -484,11 +483,8 @@ public class ManualRedactionService { dictionaryClient.addEntries(typeId, List.of(value), false); fileStatusService.setStatusReprocess(dossierId, fileId, 100); - } catch (FeignException e) { - if (e.status() == HttpStatus.NOT_FOUND.value()) { - throw new BadRequestException(e.getMessage()); - } - throw e; + } catch (Exception e) { + throw new BadRequestException(e.getMessage()); } } @@ -500,10 +496,7 @@ public class ManualRedactionService { dictionaryClient.deleteEntries(typeId, List.of(value)); fileStatusService.setStatusReprocess(dossierId, fileId, 100); } catch (FeignException e) { - if (e.status() == HttpStatus.NOT_FOUND.value()) { - throw new BadRequestException(e.getMessage()); - } - throw e; + throw new BadRequestException(e.getMessage()); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java index 854504d2f..926d4f624 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java @@ -1,23 +1,21 @@ package com.iqser.red.service.peristence.v1.server.service.download; +import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionRequest; import com.iqser.red.service.peristence.v1.server.client.RedactionClient; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; import com.iqser.red.service.peristence.v1.server.service.RedactionLogService; import com.iqser.red.service.peristence.v1.server.utils.FileSystemBackedArchiver; -import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionRequest; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*; import com.iqser.red.service.persistence.service.v1.api.model.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.data.audit.AddNotificationRequest; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.ReportTemplate; import com.iqser.red.service.persistence.service.v1.api.model.data.download.DownloadStatus; import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; -import com.iqser.red.service.redaction.report.v1.api.model.ReportType; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; import com.iqser.red.service.redaction.v1.model.AnnotateRequest; import com.iqser.red.service.redaction.v1.model.RedactionLog; @@ -25,6 +23,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; +import java.util.Map; +import java.util.stream.Collectors; + @Slf4j @Service @RequiredArgsConstructor @@ -36,14 +38,15 @@ public class DownloadPreparationService { private final RedactionClient redactionClient; private final PDFTronRedactionClient pdfTronRedactionClient; private final ReportTemplatePersistenceService reportTemplatePersistenceService; - private final DossierPersistenceService dossierPersistenceService; private final RedactionLogService redactionLogService; + private final NotificationPersistenceService notificationPersistenceService; + private final DossierPersistenceService dossierPersistenceService; - + @Transactional public void createDownload(ReportResultMessage reportResultMessage) { DownloadStatus downloadStatus = downloadStatusPersistenceService.getStatus(reportResultMessage.getDownloadId()); - var dossier = downloadStatus.getDossier(); + Dossier dossier = downloadStatus.getDossier(); try (FileSystemBackedArchiver fileSystemBackedArchiver = new FileSystemBackedArchiver()) { @@ -51,8 +54,14 @@ public class DownloadPreparationService { addReports(reportResultMessage, fileSystemBackedArchiver); storeZipFile(downloadStatus, fileSystemBackedArchiver); - downloadStatusPersistenceService.updateStatus(downloadStatus.getStorageId(), DownloadStatus.DownloadStatusValue.READY, fileSystemBackedArchiver - .getContentLength()); + downloadStatusPersistenceService.updateStatus(downloadStatus.getStorageId(), DownloadStatus.DownloadStatusValue.READY, fileSystemBackedArchiver.getContentLength()); + + notificationPersistenceService.insertNotification(AddNotificationRequest.builder() + .userId(downloadStatus.getUserId()) + .issuerId(downloadStatus.getUserId()) + .notificationType("DOWNLOAD_READY") + .target(Map.of("userId", downloadStatus.getUserId(), "dossierId", dossier.getId(), "downloadId", reportResultMessage.getDownloadId())) + .build()); } } @@ -60,18 +69,18 @@ public class DownloadPreparationService { private void generateAndAddFiles(DownloadStatus downloadStatus, FileSystemBackedArchiver fileSystemBackedArchiver, boolean watermarkEnabled) { - var dossier = downloadStatus.getDossier(); - int i = 1; long fileGenerationStart = System.currentTimeMillis(); - for (File fileStatus : downloadStatus.getFiles()) { + var fileIds = downloadStatus.getFiles().stream().map(File::getId).collect(Collectors.toList()); + for (String fileId : fileIds) { - var fileId = fileStatus.getId(); long start = System.currentTimeMillis(); - byte[] original = fileManagementStorageService.getStoredObjectBytes(dossier.getId(), fileId, FileType.ORIGIN); + File fileStatus = fileStatusPersistenceService.getStatus(fileId); + byte[] original = fileManagementStorageService.getStoredObjectBytes(fileStatus.getDossierId(), fileId, FileType.ORIGIN); - RedactionLog redactionLog = getRedactionLog(dossier.getId(), fileId, fileStatus.isExcluded()); + RedactionLog redactionLog = getRedactionLog(fileStatus.getDossierId(), fileId, fileStatus.isExcluded()); + var dossier = dossierPersistenceService.findByDossierId(fileStatus.getDossierId()); for (DownloadFileType downloadFileType : downloadStatus.getDownloadFileTypes()) { @@ -79,23 +88,20 @@ public class DownloadPreparationService { fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Original", fileStatus.getFilename(), original)); } if (downloadFileType.name().equals(DownloadFileType.ANNOTATED.name())) { - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Annotated", addSuffix(fileStatus - .getFilename(), "annotated"), getAnnotated(dossier.getDossierTemplateId(), dossier.getId(), fileId))); + fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Annotated", addSuffix(fileStatus.getFilename(), "annotated"), getAnnotated(dossier.getDossierTemplateId(), fileStatus.getDossierId(), fileId))); } if (downloadFileType.name().equals(DownloadFileType.PREVIEW.name())) { - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Preview", addSuffix(fileStatus - .getFilename(), "highlighted"), getPreview(original, redactionLog, dossier.getDossierTemplateId()))); + fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Preview", addSuffix(fileStatus.getFilename(), "highlighted"), getPreview(original, redactionLog, dossier.getDossierTemplateId()))); } if (downloadFileType.name().equals(DownloadFileType.REDACTED.name())) { - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Redacted", addSuffix(fileStatus - .getFilename(), "redacted"), getRedacted(original, redactionLog, dossier.getDossierTemplateId(), watermarkEnabled))); + fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Redacted", addSuffix(fileStatus.getFilename(), "redacted"), getRedacted(original, redactionLog, dossier.getDossierTemplateId(), watermarkEnabled))); } } - log.info("Successfully added file {}/{} for downloadId {}, took {}", i, downloadStatus.getFiles() + log.info("Successfully added file {}/{} for downloadId {}, took {}", i, fileIds .size(), downloadStatus.getStorageId(), System.currentTimeMillis() - start); i++; } - log.info("Successfully added {} files for downloadId {}, took {}", i, downloadStatus.getStorageId(), System.currentTimeMillis() - fileGenerationStart); + log.info("Successfully added {} files for downloadId {}, took {}", fileIds, downloadStatus.getStorageId(), System.currentTimeMillis() - fileGenerationStart); } @@ -104,58 +110,57 @@ public class DownloadPreparationService { long addReportsStart = System.currentTimeMillis(); for (StoredFileInformation storedFileInformation : reportResultMessage.getStoredFileInformation()) { - if (storedFileInformation.getReportType().equals(ReportType.EXCEL_MULTI_FILE)) { - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Excel Reports", "MultiFileReport.xlsx", report)); - continue; + + File fileStatus = null; + + if (storedFileInformation.getFileId() != null) { + fileStatus = fileStatusPersistenceService.getStatus(storedFileInformation.getFileId()); } - if (storedFileInformation.getReportType().equals(ReportType.EXCEL_TEMPLATE_MULTI_FILE)) { - ReportTemplate reportTemplate = reportTemplatePersistenceService.find(storedFileInformation.getTemplateId()); - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(removeExtension(reportTemplate - .getFileName()) + " (multifile)", reportTemplate.getFileName(), report)); - continue; - } + ReportTemplate reportTemplate = reportTemplatePersistenceService.find(storedFileInformation.getTemplateId()); + byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); + fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(removeExtension(reportTemplate.getFileName()) + (reportTemplate.isMultiFileReport() ? " (multifile)" : ""), + createFileName(fileStatus, reportTemplate), report)); - var fileStatus = fileStatusPersistenceService.getStatus(storedFileInformation.getFileId()); - - if (storedFileInformation.getReportType().equals(ReportType.EXCEL_SINGLE_FILE)) { - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Excel Reports", toXlsxFilename(fileStatus - .getFilename()), report)); - } - - if (storedFileInformation.getReportType().equals(ReportType.WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE)) { - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Justification Appendix A1", toDocxFilename(addSuffix(fileStatus - .getFilename(), "justification")), report)); - } - - if (storedFileInformation.getReportType().equals(ReportType.WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE)) { - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel("Justification Appendix A2", toDocxFilename(addSuffix(fileStatus - .getFilename(), "justification")), report)); - } - - if (storedFileInformation.getReportType().equals(ReportType.WORD_SINGLE_FILE)) { - ReportTemplate reportTemplate = reportTemplatePersistenceService.find(storedFileInformation.getTemplateId()); - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(removeExtension(reportTemplate - .getFileName()), toDocxFilename(fileStatus.getFilename()), report)); - } - - if (storedFileInformation.getReportType().equals(ReportType.EXCEL_TEMPLATE_SINGLE_FILE)) { - ReportTemplate reportTemplate = reportTemplatePersistenceService.find(storedFileInformation.getTemplateId()); - byte[] report = fileManagementStorageService.getStoredObjectBytes(storedFileInformation.getStorageId()); - fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(removeExtension(reportTemplate - .getFileName()), toXlsxFilename(fileStatus.getFilename()), report)); - } } log.info("Successfully added {} reports for downloadId {}, took {}", reportResultMessage.getStoredFileInformation() .size(), reportResultMessage.getDownloadId(), System.currentTimeMillis() - addReportsStart); } + private String createFileName(File fileStatus, ReportTemplate reportTemplate) { + + if (fileStatus != null) { + return removeExtension(fileStatus.getFilename()) + getExtension(reportTemplate.getFileName()); + } else { + return reportTemplate.getFileName(); + } + } + + private String getExtension(String fileName) { + var index = fileName.lastIndexOf("."); + if (index > 0) { + return fileName.substring(index); + } else { + return ""; + } + } + + private String removeExtension(String fileName) { + var index = fileName.lastIndexOf("."); + if (index > 0) { + return fileName.substring(index); + } else { + return fileName; + } + } + + + private String addSuffix(String filename, String suffix) { + var oldExtension = getExtension(filename); + return removeExtension(filename) + "_" + suffix + oldExtension; + + } + private void storeZipFile(DownloadStatus downloadStatus, FileSystemBackedArchiver fileSystemBackedArchiver) { @@ -197,38 +202,6 @@ public class DownloadPreparationService { } - private String toDocxFilename(String filename) { - - if (filename.toLowerCase().endsWith(".pdf")) { - return filename.substring(0, filename.length() - 3) + "docx"; - } else { - return filename + ".docx"; - } - } - - - private String toXlsxFilename(String filename) { - - if (filename.toLowerCase().endsWith(".pdf")) { - return filename.substring(0, filename.length() - 3) + "xlsx"; - } else { - return filename + ".xlsx"; - } - } - - - private String removeExtension(String filename) { - - return filename.substring(0, filename.length() - 5); - } - - - private String addSuffix(String filename, String suffix) { - - return filename.substring(0, filename.length() - 4) + "_" + suffix + ".pdf"; - } - - private RedactionLog getRedactionLog(String dossierId, String fileId, boolean isExcluded) { if (isExcluded) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java new file mode 100644 index 000000000..328797eeb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DigitalSignatureClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.DigitalSignatureResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "DigitalSignatureClient", url = "http://localhost:${server.port}") +public interface DigitalSignatureClient extends DigitalSignatureResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java new file mode 100644 index 000000000..fec2f35db --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "DossierAttributeClient", url = "http://localhost:${server.port}") +public interface DossierAttributeClient extends DossierAttributesResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java new file mode 100644 index 000000000..97024ce0e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DossierAttributeConfigClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesConfigResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "DossierAttributeConfigClient", url = "http://localhost:${server.port}") +public interface DossierAttributeConfigClient extends DossierAttributesConfigResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java new file mode 100644 index 000000000..b802543f2 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/DownloadClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.DownloadResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "DownloadClient" ,url = "http://localhost:${server.port}") +public interface DownloadClient extends DownloadResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java new file mode 100644 index 000000000..7a2c5aff1 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "FileAttributeClient", url = "http://localhost:${server.port}") +public interface FileAttributeClient extends FileAttributesResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java new file mode 100644 index 000000000..be37a5116 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileAttributeConfigClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource; +import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "FileAttributeConfigClient", url = "http://localhost:${server.port}") +public interface FileAttributeConfigClient extends FileAttributesConfigResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java new file mode 100644 index 000000000..daf8ce483 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/FileProcessingClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.FileStatusProcessingUpdateResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "FileProcessingClient", url = "http://localhost:${server.port}") +public interface FileProcessingClient extends FileStatusProcessingUpdateResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java new file mode 100644 index 000000000..b31000365 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LegalBasisClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.LegalBasisMappingResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "LegalBasisClient", url = "http://localhost:${server.port}") +public interface LegalBasisClient extends LegalBasisMappingResource { + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java new file mode 100644 index 000000000..fe3363a3b --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/LicenseReportClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.LicenseReportResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "LicenseReportClient", url = "http://localhost:${server.port}") +public interface LicenseReportClient extends LicenseReportResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java new file mode 100644 index 000000000..f878eb3bc --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReanalysisClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.ReanalysisResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "ReanalysisClient", url = "http://localhost:${server.port}") +public interface ReanalysisClient extends ReanalysisResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java new file mode 100644 index 000000000..eaae236c4 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RedactionLogClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.RedactionLogResource; +import org.springframework.cloud.openfeign.FeignClient; + + +@FeignClient(name = "RedactionLogClient", url = "http://localhost:${server.port}") +public interface RedactionLogClient extends RedactionLogResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java new file mode 100644 index 000000000..fa0f82026 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/ReportTemplateClient.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource; +import org.springframework.cloud.openfeign.FeignClient; + + + +@FeignClient(name = "ReportTemplateClient", url = "http://localhost:${server.port}") +public interface ReportTemplateClient extends ReportTemplateResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java new file mode 100644 index 000000000..583ba6ee5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/RulesClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.RulesResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "RulesClient", url = "http://localhost:${server.port}") +public interface RulesClient extends RulesResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java new file mode 100644 index 000000000..f4bbe7bd5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/SMTPClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.SMTPConfigurationResource; +import org.springframework.cloud.openfeign.FeignClient; + + +@FeignClient(name = "SMTPClient", url = "http://localhost:${server.port}") +public interface SMTPClient extends SMTPConfigurationResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java new file mode 100644 index 000000000..6c48dc7ef --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/client/WatermarkClient.java @@ -0,0 +1,8 @@ +package com.iqser.red.service.peristence.v1.server.integration.client; + +import com.iqser.red.service.persistence.service.v1.api.resources.WatermarkResource; +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(name = "WatermarkClient", url = "http://localhost:${server.port}") +public interface WatermarkClient extends WatermarkResource { +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java index 4d66b6735..f477784e7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/DossierTesterAndProvider.java @@ -4,6 +4,7 @@ import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.persistence.service.v1.api.model.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DownloadFileType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,14 +17,12 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; public class DossierTesterAndProvider { @Autowired - private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; @Autowired private DossierClient dossierClient; - public Dossier provideTestDossier(){ - - var testTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + public Dossier provideTestDossier(DossierTemplate testTemplate) { CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest(); cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL)); @@ -48,7 +47,12 @@ public class DossierTesterAndProvider { return loadedDossier; } + public Dossier provideTestDossier() { + var testTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + return provideTestDossier(testTemplate); + } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java index 5ccc1ec7d..b616520a5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/FileTesterAndProvider.java @@ -1,12 +1,20 @@ package com.iqser.red.service.peristence.v1.server.integration.service; +import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; +import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileRequest; +import com.iqser.red.service.persistence.service.v1.api.model.FileType; import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.redaction.v1.model.RedactionLog; +import com.iqser.red.service.redaction.v1.model.SectionGrid; +import com.iqser.red.storage.commons.service.StorageService; +import lombok.SneakyThrows; +import org.assertj.core.util.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -18,6 +26,11 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; public class FileTesterAndProvider { + @Autowired + private FileManagementStorageService fileManagementStorageService; + + @Autowired + private ObjectMapper objectMapper; @Autowired private UploadClient uploadClient; @@ -26,6 +39,7 @@ public class FileTesterAndProvider { private FileClient fileClient; + @SneakyThrows public File testAndProvideFile(Dossier dossier){ @@ -38,6 +52,9 @@ public class FileTesterAndProvider { assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isEqualTo(1); + fileManagementStorageService.storeObject(dossier.getId(),file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(new RedactionLog(1, Lists.newArrayList(), Lists.newArrayList(),0,0,0,0))); + fileManagementStorageService.storeObject(dossier.getId(),file.getId(), FileType.SECTION_GRID, objectMapper.writeValueAsBytes(new SectionGrid())); + return file; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java index 08b34c420..1596b5ae7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -2,6 +2,7 @@ package com.iqser.red.service.peristence.v1.server.integration.service; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -14,7 +15,8 @@ public class TypeProvider { @Autowired private DictionaryClient dictionaryClient; - public Type testAndProvideType(DossierTemplate dossierTemplate, String typeName) { + + public Type testAndProvideType(DossierTemplate dossierTemplate, Dossier dossier, String typeName) { var type = new Type(); type.setType(typeName); @@ -24,10 +26,9 @@ public class TypeProvider { type.setHint(false); type.setRank(100); type.setRecommendation(false); - type.setLabel("test"); - type.setCaseInsensitive(false); + type.setCaseInsensitive(true); type.setDossierTemplateId(dossierTemplate.getId()); - + type.setDossierId(dossier != null ? dossier.getId() : null); var createdType = dictionaryClient.addType(type); @@ -41,7 +42,7 @@ public class TypeProvider { } public Type testAndProvideType(DossierTemplate dossierTemplate) { - return testAndProvideType(dossierTemplate, "test"); + return testAndProvideType(dossierTemplate, null, "test"); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java new file mode 100644 index 000000000..87174b0cb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java @@ -0,0 +1,60 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.DigitalSignatureClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DigitalSignature; +import feign.FeignException; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class DigitalSignatureTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DigitalSignatureClient digitalSignatureClient; + + @Test + public void testDigitalSignature() { + + try { + digitalSignatureClient.getDigitalSignature(); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + DigitalSignature digitalSignature = new DigitalSignature(); + digitalSignature.setPassword("test"); + digitalSignature.setCertificateName("test"); + digitalSignature.setReason("test"); + digitalSignature.setLocation("test"); + digitalSignature.setContactInfo("test"); + digitalSignature.setPrivateKey(new byte[]{1, 2, 3, 4}); + + var savedDigitalSignature = digitalSignatureClient.saveDigitalSignature(digitalSignature); + + var loadedSignature = digitalSignatureClient.getDigitalSignature(); + // encrypted + assertThat(savedDigitalSignature.getPassword()).isNotEqualTo(loadedSignature.getPassword()); + assertThat(savedDigitalSignature.getPrivateKey()).isNotEqualTo(loadedSignature.getPrivateKey()); + + + digitalSignature.setReason("new test"); + digitalSignatureClient.updateDigitalSignature(digitalSignature); + loadedSignature = digitalSignatureClient.getDigitalSignature(); + assertThat(loadedSignature.getReason()).isEqualTo("new test"); + + + + digitalSignatureClient.deleteDigitalSignature(); + try { + digitalSignatureClient.getDigitalSignature(); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java new file mode 100644 index 000000000..8dbcae255 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierAttributeTest.java @@ -0,0 +1,98 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import lombok.SneakyThrows; +import org.assertj.core.util.Lists; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DossierAttributeTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private DossierAttributeConfigClient dossierAttributeConfigClient; + + @Autowired + private DossierAttributeClient dossierAttributeClient; + + + @SneakyThrows + @Test + public void testDossierAttributes() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isEmpty(); + + DossierAttributeConfig attribute = new DossierAttributeConfig(); + attribute.setLabel("test"); + attribute.setEditable(true); + attribute.setType(DossierAttributeConfig.DossierAttributeType.TEXT); + + + dossierAttributeConfigClient.addOrUpdateDossierAttribute(dossier.getDossierTemplateId(), attribute); + loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isNotEmpty(); + + + dossierAttributeConfigClient.setDossierAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList()); + loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isEmpty(); + + + dossierAttributeConfigClient.setDossierAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList(attribute)); + loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isNotEmpty(); + dossierAttributeConfigClient.deleteDossierAttribute(loadedAttributes.iterator().next().getId()); + + + dossierAttributeConfigClient.setDossierAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList(attribute)); + loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isNotEmpty(); + var configId = loadedAttributes.iterator().next().getId(); + + + List dossierAttributes = new ArrayList<>(); + dossierAttributes.add(DossierAttribute.builder().id(new DossierAttribute.DossierAttributeId(dossier.getId(), configId)).value("lorem ipsum").build()); + dossierAttributeClient.setDossierAttributes(dossier.getId(), dossierAttributes); + + + var loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId()); + assertThat(loadedAttributeValues).isNotEmpty(); + + var firstAttribute = loadedAttributeValues.iterator().next(); + assertThat(firstAttribute.getValue()).isEqualTo("lorem ipsum"); + firstAttribute.setValue("test"); + dossierAttributeClient.addOrUpdateDossierAttribute(dossier.getId(), firstAttribute); + + + loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId()); + assertThat(loadedAttributeValues).isNotEmpty(); + firstAttribute = loadedAttributeValues.iterator().next(); + assertThat(firstAttribute.getValue()).isEqualTo("test"); + + + dossierAttributeClient.deleteDossierAttribute(dossier.getId(), firstAttribute.getId().getDossierAttributeConfigId()); + loadedAttributeValues = dossierAttributeClient.getDossierAttributes(dossier.getId()); + assertThat(loadedAttributeValues).isEmpty(); + + + dossierAttributeConfigClient.deleteDossierAttributes(Lists.newArrayList(loadedAttributes.iterator().next().getId())); + loadedAttributes = dossierAttributeConfigClient.getDossierAttributes(dossier.getDossierTemplateId()); + assertThat(loadedAttributes).isEmpty(); + + } +} 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 495049889..e1b1cea45 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 @@ -1,5 +1,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; @@ -42,12 +43,20 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { assertThat(loadedTemplate).isEqualTo(updated); - dossierClient.getAllDossiers().forEach(ld -> { - dossierClient.delete(ld.getId()); - }); + dossierClient.getAllDossiers().forEach(ld -> dossierClient.delete(ld.getId())); - assertThat(dossierClient.getAllDossiers().isEmpty()).isTrue(); + assertThat(dossierClient.getAllDossiers()).isEmpty(); assertThat(dossierClient.getSoftDeletedDossiers().size()).isEqualTo(1); + dossierClient.undeleteDossiers(Sets.newHashSet(dossier.getId())); + + assertThat(dossierClient.getAllDossiers()).isNotEmpty(); + assertThat(dossierClient.getSoftDeletedDossiers()).isEmpty(); + + + dossierClient.hardDeleteDossiers(Sets.newHashSet(dossier.getId())); + assertThat(dossierClient.getAllDossiers()).isEmpty(); + assertThat(dossierClient.getSoftDeletedDossiers()).isEmpty(); + } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java new file mode 100644 index 000000000..c0231fe39 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -0,0 +1,102 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.peristence.v1.server.service.download.DownloadReportMessageReceiver; +import com.iqser.red.service.persistence.service.v1.api.model.DownloadRequest; +import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateUploadRequest; +import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; +import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; +import com.iqser.red.storage.commons.service.StorageService; +import lombok.SneakyThrows; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Collections; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DownloadPreparationTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DownloadReportMessageReceiver downloadReportMessageReceiver; + + @Autowired + private StorageService storageService; + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private DownloadClient downloadClient; + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private ReportTemplateClient reportTemplateClient; + + + @Test + @SneakyThrows + public void testReceiveDownloadPackage() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder() + .activeByDefault(true) + .dossierTemplateId(dossierTemplate.getId()) + .multiFileReport(true) + .fileName("test.docx") + .template(new byte[]{1, 2, 3, 4}).build()); + + var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); + assertThat(availableTemplates).isNotEmpty(); + + + downloadClient.prepareDownload(DownloadRequest.builder() + .userId("1") + .dossierId(dossier.getId()) + .fileIds(Collections.singletonList(file.getId())) + .build()); + + var statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isNotEmpty(); + assertThat(statuses.iterator().next().getLastDownload()).isNull(); + + + ArrayList sivList = new ArrayList<>(); + + var siv = new StoredFileInformation(); + siv.setFileId(file.getId()); + siv.setStorageId("XYZ"); + siv.setTemplateId(availableTemplates.iterator().next().getTemplateId()); + sivList.add(siv); + storageService.storeObject("XYZ", new ByteArrayInputStream(new byte[]{1, 2, 3, 4})); + + + ReportResultMessage reportResultMessage = new ReportResultMessage(); + reportResultMessage.setUserId("1"); + reportResultMessage.setDownloadId(statuses.iterator().next().getStorageId()); + reportResultMessage.setStoredFileInformation(sivList); + + downloadReportMessageReceiver.receive(objectMapper.writeValueAsString(reportResultMessage)); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java new file mode 100644 index 000000000..ff8587fab --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadTest.java @@ -0,0 +1,58 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.DownloadRequest; +import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Collections; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DownloadTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private DownloadClient downloadClient; + + @Test + public void testDownload() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + + downloadClient.prepareDownload(DownloadRequest.builder() + .userId("1") + .dossierId(dossier.getId()) + .fileIds(Collections.singletonList(file.getId())) + .build()); + + var statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isNotEmpty(); + assertThat(statuses.iterator().next().getLastDownload()).isNull(); + + + downloadClient.setDownloaded(JSONPrimitive.of(statuses.iterator().next().getStorageId())); + statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isNotEmpty(); + assertThat(statuses.iterator().next().getLastDownload()).isNotNull(); + + + downloadClient.deleteDownloadStatus(JSONPrimitive.of(statuses.iterator().next().getStorageId())); + statuses = downloadClient.getDownloadStatus("1"); + assertThat(statuses).isEmpty(); + + + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java new file mode 100644 index 000000000..d95a812da --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileAttributeTest.java @@ -0,0 +1,139 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvRequest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.FileAttributesGeneralConfiguration; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; +import lombok.SneakyThrows; +import org.apache.commons.io.IOUtils; +import org.assertj.core.util.Lists; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; + +public class FileAttributeTest extends AbstractPersistenceServerServiceTest { + + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private FileAttributeConfigClient fileAttributeConfigClient; + + @Autowired + private FileAttributeClient fileAttributeClient; + + @Autowired + private FileClient fileClient; + + + @SneakyThrows + @Test + public void testFileAttributes() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + + FileAttributesGeneralConfiguration generalConfig = new FileAttributesGeneralConfiguration(); + generalConfig.setDelimiter(","); + generalConfig.setFilenameMappingColumnHeaderName("Name"); + generalConfig.setDossierTemplateId(dossier.getDossierTemplateId()); + + fileAttributeConfigClient.setFileAttributesGeneralConfig(dossier.getDossierTemplateId(), generalConfig); + var loadedConfig = fileAttributeConfigClient.getFileAttributesGeneralConfig(dossier.getDossierTemplateId()); + assertThat(loadedConfig.getDelimiter()).isEqualTo(","); + + List configs = new ArrayList<>(); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Name").primaryAttribute(true).label("Name").build()); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute A").primaryAttribute(false).label("Attribute A").build()); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute B").primaryAttribute(false).label("Attribute B").build()); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute C").primaryAttribute(false).label("Attribute C").build()); + configs.add(FileAttributeConfig.builder().csvColumnHeader("Attribute D").primaryAttribute(false).label("Attribute D").build()); + + fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), configs); + + + List loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); + assertThat(loadedConfigs.size()).isEqualTo(5); + + + fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream() + .filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute C")) + .findAny() + .map(FileAttributeConfig::getId) + .orElseThrow(() -> new IllegalArgumentException("Should exists!"))); + + + fileAttributeConfigClient.deleteFileAttributeConfigs(loadedConfigs.stream() + .filter(a -> a.getCsvColumnHeader().equalsIgnoreCase("Attribute D")) + .findAny() + .map(FileAttributeConfig::getId) + .stream().collect(Collectors.toList())); + + + loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); + assertThat(loadedConfigs.size()).isEqualTo(3); + + + FileAttributeConfig newConfig = new FileAttributeConfig(); + newConfig.setPrimaryAttribute(true); + newConfig.setLabel("Test Attribute"); + var created = fileAttributeConfigClient.addOrUpdateFileAttributeConfig(dossier.getDossierTemplateId(), newConfig); + loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); + assertThat(loadedConfigs.size()).isEqualTo(4); + + + newConfig.setId(created.getId()); + newConfig.setLabel("Test Attribute Update"); + var updated = fileAttributeConfigClient.addOrUpdateFileAttributeConfig(dossier.getDossierTemplateId(), newConfig); + loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); + assertThat(loadedConfigs.size()).isEqualTo(4); + assertThat(updated.getLabel()).isEqualTo("Test Attribute Update"); + + + fileAttributeClient.setFileAttributes(dossier.getId(), file.getId(), Map.of(updated.getId(), "Lorem Ipsum")); + + + List fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes(); + assertThat(fileAttributes.size()).isEqualTo(1); + assertThat(fileAttributes.iterator().next().getValue()).isEqualTo("Lorem Ipsum"); + + + var request = new ImportCsvRequest(); + request.setCsvFile(IOUtils.toByteArray(new ClassPathResource("files/test.csv").getInputStream())); + fileAttributeClient.importCsv(dossier.getId(), request); + + + fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes(); + assertThat(fileAttributes.size()).isEqualTo(3); + + + fileAttributeConfigClient.setFileAttributesConfig(dossier.getDossierTemplateId(), Lists.newArrayList()); + + loadedConfigs = fileAttributeConfigClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); + assertThat(loadedConfigs.size()).isEqualTo(0); + + fileAttributes = fileClient.getFileStatus(dossier.getId(), file.getId()).getFileAttributes(); + assertThat(fileAttributes.size()).isEqualTo(0); + + } + + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java new file mode 100644 index 000000000..1f900a3d3 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java @@ -0,0 +1,81 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileProcessingClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; +import com.iqser.red.service.redaction.v1.model.AnalyzeResult; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class FileProcessingTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private FileProcessingClient fileProcessingClient; + + @Autowired + private FileClient fileClient; + + @Test + public void testFileProcessing() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + assertThat(file.getLastOCRTime()).isNull(); + + fileProcessingClient.analysisFailed(dossier.getId(), file.getId()); + var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.ERROR); + + + fileProcessingClient.analysisSuccessful(dossier.getId(), file.getId(), AnalyzeResult.builder() + .analysisVersion(100) + .fileId(file.getId()) + .dossierId(dossier.getId()).build()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNASSIGNED); + assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100); + + + + fileProcessingClient.ocrFailed(dossier.getId(), file.getId()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.ERROR); + + + fileProcessingClient.ocrSuccessful(dossier.getId(), file.getId()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.PROCESSING); + assertThat(loadedFile.getLastOCRTime()).isNotNull(); + + + + fileProcessingClient.indexing(dossier.getId(), file.getId()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.INDEXING); + assertThat(loadedFile.getLastIndexed()).isNull(); + + + fileProcessingClient.indexingFailed(dossier.getId(), file.getId()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.ERROR); + + + fileProcessingClient.indexingSuccessful(dossier.getId(), file.getId()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNASSIGNED); + assertThat(loadedFile.getLastIndexed()).isNotNull(); + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 1945c7bb5..02bbcd113 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -9,6 +9,7 @@ import com.iqser.red.service.peristence.v1.server.integration.service.FileTester import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; +import org.assertj.core.util.Lists; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -55,15 +56,6 @@ public class FileTest extends AbstractPersistenceServerServiceTest { assertThat(loadedFile.getExcludedPages()).isEmpty(); - fileClient.toggleExclusion(dossier.getId(),file.getId(),true); - loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.isExcluded()).isTrue(); - - - fileClient.toggleExclusion(dossier.getId(),file.getId(),false); - loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.isExcluded()).isFalse(); - fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), JSONPrimitive.of("1")); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); @@ -91,18 +83,41 @@ public class FileTest extends AbstractPersistenceServerServiceTest { assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.APPROVED); - fileClient.setStatusUnderReview(dossier.getId(), file.getId()); - uploadClient.deleteFile(dossier.getId(),file.getId()); + assertThat(uploadClient.getOriginal(dossier.getId(),file.getId())).isNotNull(); + assertThat(uploadClient.getRedacted(dossier.getId(),file.getId())).isNotNull(); + assertThat(uploadClient.getFlatRedacted(dossier.getId(),file.getId())).isNotNull(); + assertThat(uploadClient.getPreview(dossier.getId(),file.getId())).isNotNull(); + assertThat(uploadClient.getAnnotated(dossier.getId(),file.getId())).isNotNull(); + fileClient.setStatusUnderReview(dossier.getId(), file.getId()); + + + fileClient.toggleExclusion(dossier.getId(),file.getId(),true); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.isExcluded()).isTrue(); + + + fileClient.toggleExclusion(dossier.getId(),file.getId(),false); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.isExcluded()).isFalse(); + + uploadClient.deleteFile(dossier.getId(),file.getId()); + var softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId()); assertThat(softDeletedFiles.size()).isEqualTo(1); - - var activeFiles = fileClient.getDossierStatus(dossier.getId()); assertThat(activeFiles.size()).isEqualTo(0); + uploadClient.undeleteFiles(dossier.getId(), Sets.newHashSet(file.getId())); + softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId()); + assertThat(softDeletedFiles.size()).isEqualTo(0); + activeFiles = fileClient.getDossierStatus(dossier.getId()); + assertThat(activeFiles.size()).isEqualTo(1); + + + uploadClient.hardDeleteFiles(dossier.getId(), Sets.newHashSet(file.getId())); softDeletedFiles = fileClient.getSoftDeletedDossierStatus(dossier.getId()); assertThat(softDeletedFiles.size()).isEqualTo(0); @@ -111,5 +126,8 @@ public class FileTest extends AbstractPersistenceServerServiceTest { assertThat(activeFiles.size()).isEqualTo(0); + + + } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java new file mode 100644 index 000000000..a595d80fb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LegalBasisTest.java @@ -0,0 +1,56 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis; +import feign.FeignException; +import org.assertj.core.util.Lists; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LegalBasisTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private LegalBasisClient legalBasisClient; + + @Test + public void testLegalBasis() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(0); + + try { + legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + var mappings = new ArrayList(); + mappings.add(LegalBasis.builder().name("test 1").description("test 1").reason("test 1").build()); + mappings.add(LegalBasis.builder().name("test 2").description("test 2").reason("test 2").build()); + legalBasisClient.setLegalBasisMapping(dossierTemplate.getId(), mappings); + assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(1); + + + var mapping = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); + assertThat(mapping.size()).isEqualTo(2); + assertThat(mapping.stream().map(LegalBasis::getName).collect(Collectors.toList())).containsExactlyInAnyOrder("test 1", "test 2"); + + + legalBasisClient.setLegalBasisMapping(dossierTemplate.getId(), Lists.newArrayList()); + assertThat(legalBasisClient.getLegalBasisMapping(dossierTemplate.getId())).isEmpty(); + assertThat(legalBasisClient.getVersion(dossierTemplate.getId())).isEqualTo(2); + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java new file mode 100644 index 000000000..b6837916e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/LicenseReportTest.java @@ -0,0 +1,46 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.LicenseReportClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.LicenseReportRequest; +import org.assertj.core.util.Lists; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.OffsetDateTime; + +import static org.assertj.core.api.Assertions.assertThat; + +public class LicenseReportTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private LicenseReportClient licenseReportClient; + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Test + public void testLicenseReport() { + + var dossier = dossierTesterAndProvider.provideTestDossier(); + + fileTesterAndProvider.testAndProvideFile(dossier); + + LicenseReportRequest request = new LicenseReportRequest(); + request.setDossierIds(Lists.newArrayList(dossier.getId())); + request.setStartDate(OffsetDateTime.now().minusHours(10).toInstant()); + request.setEndDate(OffsetDateTime.now().plusHours(10).toInstant()); + request.setRequestId("123"); + assertThat(licenseReportClient.getLicenseReport(request, 0, 20)).isNotNull(); + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index faf6719e3..9028cab25 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -33,7 +33,9 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); - var type = typeProvider.testAndProvideType(dossier.getDossierTemplate(), "manual"); + var type = typeProvider.testAndProvideType(dossier.getDossierTemplate(), null, "manual"); + + var comment = manualRedactionClient.addComment(dossier.getId(), file.getId(), "1", CommentRequest.builder().text("test").user("1").build()); @@ -41,12 +43,24 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedComment.getText()).isEqualTo("test"); + + var addRedaction = manualRedactionClient.addAddRedaction(dossier.getId(), file.getId(), AddRedactionRequest.builder().addToDictionary(true) - .addToDossierDictionary(false).status(AnnotationStatus.REQUESTED).type(type.getId()).user("user").reason("1").value("1").legalBasis("1").build()); + .addToDossierDictionary(false).status(AnnotationStatus.REQUESTED).type(type.getId()).user("user").reason("1").value("test").legalBasis("1").build()); var loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId()); assertThat(loadedAddRedaction.getUser()).isEqualTo("user"); assertThat(loadedAddRedaction.getTypeId()).contains("manual"); + manualRedactionClient.updateAddRedactionStatus(dossier.getId(), file.getId(), addRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); + loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedAddRedaction.getStatus()).isEqualTo(AnnotationStatus.APPROVED); + + manualRedactionClient.updateAddRedactionStatus(dossier.getId(), file.getId(), addRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED)); + loadedAddRedaction = manualRedactionClient.getAddRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedAddRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED); + + + var removeRedaction = manualRedactionClient.addRemoveRedaction(dossier.getId(), file.getId(), RemoveRedactionRequest.builder() .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").removeFromDictionary(false).build()); @@ -55,24 +69,79 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedRemoveRedaction.isRemoveFromDictionary()).isEqualTo(false); assertThat(loadedRemoveRedaction.getSoftDeletedTime()).isNull(); + manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); + loadedRemoveRedaction = manualRedactionClient.getRemoveRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedRemoveRedaction.getStatus()).isEqualTo(AnnotationStatus.APPROVED); + + manualRedactionClient.updateRemoveRedactionStatus(dossier.getId(), file.getId(), removeRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED)); + loadedRemoveRedaction = manualRedactionClient.getRemoveRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedRemoveRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED); + + + var forceRedaction = manualRedactionClient.addForceRedaction(dossier.getId(), file.getId(), ForceRedactionRequest.builder() .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build()); var loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), forceRedaction.getAnnotationId()); assertThat(loadedForceRedaction.getLegalBasis()).isEqualTo("1"); + manualRedactionClient.updateForceRedactionStatus(dossier.getId(), file.getId(), forceRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); + loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedForceRedaction.getStatus()).isEqualTo(AnnotationStatus.APPROVED); + + manualRedactionClient.updateForceRedactionStatus(dossier.getId(), file.getId(), forceRedaction.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED)); + loadedForceRedaction = manualRedactionClient.getForceRedaction(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedForceRedaction.getStatus()).isEqualTo(AnnotationStatus.DECLINED); + + + var legalBasisChange = manualRedactionClient.addLegalBasisChange(dossier.getId(), file.getId(), LegalBasisChangeRequest.builder() .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").legalBasis("1").build()); var loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId()); assertThat(loadedLegalBasisChange.getId().getId()).isEqualTo(legalBasisChange.getAnnotationId()); + manualRedactionClient.updateLegalBasisChangeStatus(dossier.getId(), file.getId(), legalBasisChange.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); + loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedLegalBasisChange.getStatus()).isEqualTo(AnnotationStatus.APPROVED); + + manualRedactionClient.updateLegalBasisChangeStatus(dossier.getId(), file.getId(), legalBasisChange.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED)); + loadedLegalBasisChange = manualRedactionClient.getLegalBasisChange(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedLegalBasisChange.getStatus()).isEqualTo(AnnotationStatus.DECLINED); + + + var imageRecategorization = manualRedactionClient.addImageRecategorization(dossier.getId(), file.getId(), ImageRecategorizationRequest.builder() .annotationId(addRedaction.getAnnotationId()).comment("comment").status(AnnotationStatus.REQUESTED).user("test").type("new-type").build()); var loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId()); assertThat(loadedImageRecategorization.getId().getId()).isEqualTo(imageRecategorization.getAnnotationId()); + manualRedactionClient.updateImageRecategorizationStatus(dossier.getId(), file.getId(), imageRecategorization.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.APPROVED)); + loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedImageRecategorization.getStatus()).isEqualTo(AnnotationStatus.APPROVED); + + manualRedactionClient.updateImageRecategorizationStatus(dossier.getId(), file.getId(), imageRecategorization.getAnnotationId(), JSONPrimitive.of(AnnotationStatus.DECLINED)); + loadedImageRecategorization = manualRedactionClient.getImageRecategorization(file.getId(), addRedaction.getAnnotationId()); + assertThat(loadedImageRecategorization.getStatus()).isEqualTo(AnnotationStatus.DECLINED); + + + ManualRedactions manualRedactions = manualRedactionClient.getManualRedactions(dossier.getId(), file.getId()); + assertThat(manualRedactions.getForceRedactions()).isNotEmpty(); + assertThat(manualRedactions.getLegalBasisChanges()).isNotEmpty(); + assertThat(manualRedactions.getEntriesToAdd()).isNotEmpty(); + assertThat(manualRedactions.getIdsToRemove()).isNotEmpty(); + assertThat(manualRedactions.getImageRecategorization()).isNotEmpty(); + assertThat(manualRedactions.getComments()).isNotEmpty(); + + + manualRedactions.getForceRedactions().forEach(e -> manualRedactionClient.deleteForceRedaction(dossier.getId(), file.getId(), e.getId().getId())); + manualRedactions.getLegalBasisChanges().forEach(e -> manualRedactionClient.deleteLegalBasisChange(dossier.getId(), file.getId(), e.getId().getId())); + manualRedactions.getEntriesToAdd().forEach(e -> manualRedactionClient.deleteAddRedaction(dossier.getId(), file.getId(), e.getId().getId())); + manualRedactions.getIdsToRemove().forEach(e -> manualRedactionClient.deleteRemoveRedaction(dossier.getId(), file.getId(), e.getId().getId())); + manualRedactions.getImageRecategorization().forEach(e -> manualRedactionClient.deleteImageRecategorization(dossier.getId(), file.getId(), e.getId().getId())); + + manualRedactions.getComments().forEach((key, value) -> value.forEach(c -> manualRedactionClient.deleteComment(file.getId(), c.getId()))); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java index 0715b87a4..1b471443f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/NotificationTest.java @@ -3,6 +3,8 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import com.iqser.red.service.peristence.v1.server.integration.client.NotificationClient; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.model.data.audit.AddNotificationRequest; +import com.iqser.red.service.persistence.service.v1.api.model.data.notification.Notification; +import org.assertj.core.util.Lists; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -20,8 +22,48 @@ public class NotificationTest extends AbstractPersistenceServerServiceTest { notificationClient.addNotification(AddNotificationRequest.builder().notificationType("test").issuerId("1").userId("1").target(Map.of("test", "test")).build()); + var notification = getNotification(); + + + assertThat(notification.getReadDate()).isNull(); + notificationClient.toggleRead("1", Lists.newArrayList(notification.getId()), true); + notification = getNotification(); + assertThat(notification.getReadDate()).isNotNull(); + + + + assertThat(notification.getSeenDate()).isNull(); + notificationClient.toggleSeen("1", Lists.newArrayList(notification.getId()), true); + notification = getNotification(); + assertThat(notification.getSeenDate()).isNotNull(); + + var currentNotifications = notificationClient.getNotifications("1", false); + assertThat(currentNotifications).isEmpty(); + + + + notificationClient.toggleRead("1", Lists.newArrayList(notification.getId()), false); + notification = getNotification(); + assertThat(notification.getReadDate()).isNull(); + + + + notificationClient.toggleSeen("1", Lists.newArrayList(notification.getId()), false); + notification = getNotification(); + assertThat(notification.getSeenDate()).isNull(); + + + + notificationClient.softDelete("1",Lists.newArrayList(notification.getId())); + currentNotifications = notificationClient.getNotifications("1", true); + assertThat(currentNotifications).isEmpty(); + + } + + private Notification getNotification() { var currentNotifications = notificationClient.getNotifications("1", true); assertThat(currentNotifications.size()).isEqualTo(1); + return currentNotifications.iterator().next(); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java new file mode 100644 index 000000000..fb453d234 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java @@ -0,0 +1,102 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; +import org.assertj.core.util.Sets; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ReanalysisTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private ReanalysisClient reanalysisClient; + + @Autowired + private FileClient fileClient; + + @Autowired + private FileRepository fileRepository; + + @Test + public void testReanalysis() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + + reanalysisClient.ocrDossier(dossier.getId()); + var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.OCR_PROCESSING); + + + resetStatus(file); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNASSIGNED); + + + resetStatus(file); + reanalysisClient.ocrFile(dossier.getId(), file.getId(), true); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.OCR_PROCESSING); + + + resetStatus(file); + reanalysisClient.ocrFiles(dossier.getId(), Set.of(file.getId())); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.OCR_PROCESSING); + + + resetStatus(file); + reanalysisClient.reanalyzeFiles(dossier.getId(), Set.of(file.getId()), true); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.PROCESSING); + + + resetStatus(file); + reanalysisClient.reanalyzeFile(dossier.getId(), file.getId(), Sets.newHashSet()); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.PROCESSING); + + + resetStatus(file); + reanalysisClient.reanalyzeDossier(dossier.getId(), true); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.PROCESSING); + + + resetStatus(file); + reanalysisClient.reindex(dossier.getId(), Set.of(file.getId())); + fileClient.getFileStatus(dossier.getId(), file.getId()); + + } + + + private void resetStatus(File file) { + + fileRepository.findById(file.getId()).ifPresent(savedFile -> { + + savedFile.setStatus(FileStatus.UNASSIGNED); + fileRepository.save(savedFile); + + }); + + var loadedFile = fileClient.getFileStatus(file.getDossierId(), file.getId()); + assertThat(loadedFile.getStatus()).isEqualTo(FileStatus.UNASSIGNED); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java new file mode 100644 index 000000000..3dee37eb3 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java @@ -0,0 +1,34 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RedactionLogTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private FileTesterAndProvider fileTesterAndProvider; + + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + + @Autowired + private RedactionLogClient redactionLogClient; + + @Test + public void testRedactionLog() { + + var dossier = dossierTesterAndProvider.provideTestDossier(); + var file = fileTesterAndProvider.testAndProvideFile(dossier); + + assertThat(redactionLogClient.getSectionGrid(dossier.getId(), file.getId())).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), true)).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), false)).isNotNull(); + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java new file mode 100644 index 000000000..f33d23853 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReportTemplateTest.java @@ -0,0 +1,54 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateUploadRequest; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ReportTemplateTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private ReportTemplateClient reportTemplateClient; + + @Test + public void testReportTemplate() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); + assertThat(availableTemplates).isEmpty(); + + reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder() + .activeByDefault(true) + .dossierTemplateId(dossierTemplate.getId()) + .multiFileReport(true) + .fileName("test.docx") + .template(new byte[]{1, 2, 3, 4}).build()); + + + availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); + assertThat(availableTemplates).isNotEmpty(); + + + var firstTemplate = reportTemplateClient.getReportTemplate(dossierTemplate.getId(), availableTemplates.iterator().next().getTemplateId()); + assertThat(availableTemplates.iterator().next()).isEqualTo(firstTemplate); + + + var download = reportTemplateClient.downloadReportTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId()); + assertThat(download.getFile().length).isEqualTo(4); + + + reportTemplateClient.deleteTemplate(firstTemplate.getDossierTemplateId(), firstTemplate.getTemplateId()); + + availableTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); + assertThat(availableTemplates).isEmpty(); + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java new file mode 100644 index 000000000..3100a4415 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RulesTest.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class RulesTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private RulesClient rulesClient; + + @Test + public void testRules() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + + rulesClient.setRules(dossierTemplate.getId(), JSONPrimitive.of("lorem ipsum")); + assertThat(rulesClient.getVersion(dossierTemplate.getId())).isEqualTo(1); + assertThat(rulesClient.getRules(dossierTemplate.getId())).isEqualTo(JSONPrimitive.of("lorem ipsum")); + + rulesClient.setRules(dossierTemplate.getId(), JSONPrimitive.of("lorem ipsum dolor sit amet")); + assertThat(rulesClient.getVersion(dossierTemplate.getId())).isEqualTo(2); + assertThat(rulesClient.getRules(dossierTemplate.getId())).isEqualTo(JSONPrimitive.of("lorem ipsum dolor sit amet")); + + + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java new file mode 100644 index 000000000..5cb6caf63 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SMTPTest.java @@ -0,0 +1,52 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.SMTPClient; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.SMTPConfiguration; +import feign.FeignException; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SMTPTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private SMTPClient smtpClient; + + @Test + public void testSMTP() { + + SMTPConfiguration configuration = new SMTPConfiguration(); + configuration.setUser("test"); + configuration.setPassword("test"); + configuration.setAuth(true); + configuration.setFrom("from"); + configuration.setEnvelopeFrom("from"); + configuration.setHost("host"); + configuration.setPort(123); + configuration.setReplyTo("reply"); + configuration.setStarttls(true); + smtpClient.updateSMTPConfiguration(configuration); + + assertThat(smtpClient.getCurrentSMTPConfiguration(true)).isNotNull(); + + try { + smtpClient.testSMTPConfiguration("test@test.com", configuration); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(400); + } + + smtpClient.clearSMTPConfiguration(); + + try { + smtpClient.getCurrentSMTPConfiguration(true); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + } + + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java index 8d89ab59d..8555e5760 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TypeTest.java @@ -2,6 +2,7 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Colors; @@ -24,6 +25,9 @@ public class TypeTest extends AbstractPersistenceServerServiceTest { @Autowired private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + @Autowired + private DossierTesterAndProvider dossierTesterAndProvider; + @Autowired private DictionaryClient dictionaryClient; @@ -67,6 +71,13 @@ public class TypeTest extends AbstractPersistenceServerServiceTest { var typesForTemplate = dictionaryClient.getAllTypesForDossierTemplate(loadedType.getDossierTemplateId()); assertThat(typesForTemplate).isEmpty(); + + var dossier = dossierTesterAndProvider.provideTestDossier(); + var dossierType = typeProvider.testAndProvideType(dossierTemplate,dossier,"dossier-dict"); + + var typesForDossier = dictionaryClient.getAllTypesForDossier(dossierType.getDossierId()); + assertThat(typesForDossier).isNotEmpty(); + } @Test diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java new file mode 100644 index 000000000..4843c9282 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java @@ -0,0 +1,58 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Watermark; +import feign.FeignException; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +public class WatermarkTest extends AbstractPersistenceServerServiceTest { + + @Autowired + private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider; + + @Autowired + private WatermarkClient watermarkClient; + + @Test + public void testWatermark() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + try { + watermarkClient.getWatermark(dossierTemplate.getId()); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + Watermark watermark = new Watermark(); + watermark.setText("lorem ipsum"); + watermark.setFontSize(12); + watermark.setFontType("font"); + watermark.setHexColor("#dddddd"); + watermark.setOpacity(20); + watermark.setOrientation(Watermark.WatermarkOrientation.DIAGONAL); + + var saved = watermarkClient.saveWatermark(dossierTemplate.getId(), watermark); + assertThat(watermarkClient.getWatermark(dossierTemplate.getId())).isEqualTo(saved); + + watermark.setFontSize(14); + saved = watermarkClient.saveWatermark(dossierTemplate.getId(), watermark); + assertThat(watermarkClient.getWatermark(dossierTemplate.getId())).isEqualTo(saved); + + watermarkClient.deleteWatermark(dossierTemplate.getId()); + + try { + watermarkClient.getWatermark(dossierTemplate.getId()); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index 488fcb9ff..5d8a84352 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -1,15 +1,20 @@ package com.iqser.red.service.peristence.v1.server.integration.utils; -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.*; import com.iqser.red.service.peristence.v1.server.Application; import com.iqser.red.service.peristence.v1.server.client.RedactionClient; import com.iqser.red.service.peristence.v1.server.client.SearchClient; +import com.iqser.red.service.peristence.v1.server.controller.LicenseReportController; import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; +import com.iqser.red.service.redaction.v1.model.AnnotateRequest; +import com.iqser.red.service.redaction.v1.model.AnnotateResponse; +import com.iqser.red.service.redaction.v1.model.RedactionLog; +import com.iqser.red.service.redaction.v1.model.RedactionResult; import com.iqser.red.storage.commons.StorageAutoConfiguration; import com.iqser.red.storage.commons.service.StorageService; +import org.assertj.core.util.Lists; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; @@ -76,6 +81,17 @@ public abstract class AbstractPersistenceServerServiceTest { public void setupOptimize() { when(pdfTronRedactionClient.optimize(Mockito.any())).thenAnswer((args) -> new PdfTronOptimizeResponse(((PdfTronOptimizeRequest) args.getArguments()[0]).getDocument())); + when(pdfTronRedactionClient.redact(Mockito.any())).thenAnswer((args) -> + new PdfTronRedactionResult(((PdfTronRedactionRequest) args.getArguments()[0]).getDocument())); + when(pdfTronRedactionClient.redactionPreview(Mockito.any())).thenAnswer((args) -> + new PdfTronRedactionResult(((PdfTronRedactionRequest) args.getArguments()[0]).getDocument())); + + when(pdfTronRedactionClient.flatDocument(Mockito.any())).thenAnswer((args) -> + new PdfTronFlattenResponse(((PdfTronFlattenRequest) args.getArguments()[0]).getDocument())); + + when(redactionClient.annotate(Mockito.any())).thenReturn(new AnnotateResponse("document".getBytes())); + when(redactionClient.sections(Mockito.any())).thenReturn(new RedactionResult()); + when(redactionClient.getRedactionLog(Mockito.any())).thenReturn(new RedactionLog(1, Lists.newArrayList(),Lists.newArrayList(),0,0,0,0)); } @Configuration @@ -89,6 +105,7 @@ public abstract class AbstractPersistenceServerServiceTest { return new FileSystemBackedStorageService(); } + } @After @@ -133,16 +150,56 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired private ImageRecategorizationRepository imageRecategorizationRepository; + @Autowired + private WatermarkRepository watermarkRepository; + + @Autowired + private SMTPRepository smtpRepository; + + @Autowired + private RuleSetRepository ruleSetRepository; + @Autowired private LegalBasisMappingRepository legalBasisMappingRepository; + @Autowired + private FileAttributeConfigRepository fileAttributeConfigRepository; + + @Autowired + private FileAttributesGeneralConfigurationRepository fileAttributesGeneralConfigurationRepository; + + @Autowired + private ReportTemplateRepository reportTemplateRepository; + + @Autowired + private DigitalSignatureRepository digitalSignatureRepository; + + @Autowired + private FileAttributesRepository fileAttributesRepository; + + @Autowired + private DownloadStatusRepository downloadStatusRepository; + + @Autowired + private DossierAttributeRepository dossierAttributeRepository; + + @Autowired + private DossierAttributeConfigRepository dossierAttributeConfigRepository; + @After public void afterTests() { + dossierAttributeRepository.deleteAll(); + dossierAttributeConfigRepository.deleteAll(); + downloadStatusRepository.deleteAll(); + fileAttributesRepository.deleteAll(); + watermarkRepository.deleteAll(); + smtpRepository.deleteAll(); + digitalSignatureRepository.deleteAll(); + fileAttributesGeneralConfigurationRepository.deleteAll(); + fileAttributeConfigRepository.deleteAll(); + reportTemplateRepository.deleteAll(); typeRepository.deleteAll(); viewedPagesRepository.deleteAll(); - fileRepository.deleteAll(); - dossierRepository.deleteAll(); - dossierTemplateRepository.deleteAll(); notificationRepository.deleteAll(); auditRepository.deleteAll(); manualRedactionRepository.deleteAll(); @@ -150,7 +207,13 @@ public abstract class AbstractPersistenceServerServiceTest { removeRedactionRepository.deleteAll(); legalBasisChangeRepository.deleteAll(); imageRecategorizationRepository.deleteAll(); - legalBasisMappingRepository.deleteAll();; + legalBasisMappingRepository.deleteAll(); + watermarkRepository.deleteAll(); + ruleSetRepository.deleteAll(); + smtpRepository.deleteAll(); + fileRepository.deleteAll(); + dossierRepository.deleteAll(); + dossierTemplateRepository.deleteAll(); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java index 77fd8ef24..2697696b7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/FileSystemBackedStorageService.java @@ -9,6 +9,7 @@ import org.springframework.core.io.InputStreamResource; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -32,6 +33,17 @@ public class FileSystemBackedStorageService extends StorageService { } + + @SneakyThrows + @Override + public void storeObject(String objectId, InputStream data) { + File tempFile = File.createTempFile("test", ".tmp"); + + IOUtils.copy(data, new FileOutputStream(tempFile)); + + dataMap.put(objectId, tempFile); + } + @SneakyThrows @Override public void storeObject(String objectId, byte[] data) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/export_summary.csv b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/export_summary.csv deleted file mode 100644 index 6c2b8eb75..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/export_summary.csv +++ /dev/null @@ -1,5 +0,0 @@ -PMRA Document Number,GAP Active Ingredient,Regulatory Utility,Document Comment,SIC Number,Protocol Number,Protocol Number,Data Evaluation Record,Audience,Original Retirement Date,Regulatory Released,Regulatory Authority,Regulatory Authority (legacy to remove),Source Owner,Legacy Primary OECD Code,Legacy Source Organisation,Regulator Comments,Contains Registered Composition?,File Name,FTP Source Location,Submission Format Needed,Legacy Report Number,Sales Unit,Address,ANVISA Process Number,Source Number,Legacy Migration Path,Review Completion Date,Registration Number,Agency Dossier Registration Type,Submission Version,Media Comments,Literature Citation,Document Language,Notes,Study Location,Materials,Approver,Subtype,Test Facility,Is Latest Version,Consumer,Classification,Guideline,TRP Type,Legacy System Date,Function,Artist,Document Title,PI Number,Legacy Version Description,PI Number,Incoming from,Annotations (Unresolved),Work To Date,Copyright Clearance Obtained?,Summary Type,Annotations (Claim Links),Latest Source Minor Version,Regulatory Category,SYN Letter Number,Work From Date,Product,Version Creation Date,Governance Committee,Test Facility (legacy to remove),Regulatory Finalization Date,Imported file?,Status,Information Tracking Submission Package,Approval Type,Media Description,Duration,Legacy System,Archive Date,Exporting country,Regulatory Tracking Number,Annotations (Anchors),Information Tracking,Document Number,GAP Usage Information,Report Number,Legacy Reg Document Number,Legal Representative 2,Registering Company,File Created By,Legacy EPA Decision Code,Meeting Minutes,Product Safety Finalization Date,Report Type,Archived Date,Legacy Other PMRA Data Codes,Template Document Type,Color Space,Legal Representative 1,Document Author,CrossLink,Annotations (Notes),Suggested Links,Assessment Type,Legacy Species Commodity,TK Number,Legacy Test Facilities,Planned Completion Date,PRF Number,Registration Item Country,Legacy Target Species,Legacy Owning Organisation,Archive Number,Protocol Type,Submission Output Format,Submission Date,Coordinator,Regulatory Reporting Date,Annotations (Lines),Field Trial Number,Batch Number,Legacy Version Number,External ID,Author Names,Sponsor Organisation (legacy to remove),Literature Type,Sponsor Organisation,Legacy Crop Host,Document Edition,Agreement Expiry Date,TRP Usage,Legacy EPA Submission Type,Security Classification,Source Document Name,Syngenta Address,Outgoing to (legacy to remove),Link Status,Legacy System Document ID,Copyright,PMRA Registration Number,Annotations (All),SU,Source Vault Name,Latest Source Major Version,Legacy Other OECD Codes,Version Created By,Subarea,Reviewer,Owning Organisation (legacy to remove),Dossier,Viewer,Regulatory Territory,Lifecycle,Claims,Bound Source Minor Version,Global ID,Legacy Regulatory Authorities,Outgoing to,Additional Information,Year,Organism,File Last Modified By,Requires Attachment of a Signature Page?,Source Binding Rule,Destination country,Cross-Reference Submission Number,Name,Issue Topic,Pages,Type,Reason for Retiring,Rule,Type of Review,Original Finalization Date,Trade Name,Transmittal Document,Pages OCR'ed (%),Legacy Object ID(s),Protocol Number,Last Modified By,Annotations (Approved Links),Request Type,Binder,Author,Last Modified Date,Non-English Document Title,Media Location,Created By,Editor,Owner,CRO Report Number,Format,Legacy Discipline,Major Version Number,Created From,Active Ingredients,Archive Location,EPA Registration Number,Retirement Date,Annotations (Links),TRP Document,Finalization Date,Legacy Task Number,Legal Details,OCR Requested,Global Version ID,Publicly Published,Document Date,MRID Number,Legacy Reg Topic,Requires Review and Approval?,Annotations (Auto Links),Subareas,Product Safety Reporting Date,Media Title,Minor Version Number,Legacy Primary PMRA Data Code,Requestor,Owning Organisation,Zone,File Last Modified Date,Contact Person,File Created Date,Amendment Justification,CDPR Number,Legacy EPA Submission Date,Supports Agency Dossier,Field Trial Year,Reason for Un-retiring,TRP Topic,Bound Source Major Version,Keywords,Legacy Author Name(s),Export File Name,Size,Source Link,This content is a translation?,Quality Assurance Standard,Legacy Fed Reg Number,Checksum,Created Date,Annotations (Resolved),User Task,Review Start Date,test list,Incoming from (legacy to remove),Rendition Profile,Path,URL -,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit.doc,,,,,,,,,,,,,,,English,,,PP321,,Authority Form / Document,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submitted,PI0015818,,,,0,,,,0,,,,,,26/03/2020 14:06 CET,,Syngenta Crop Protection AG (Switzerland),,No,Final,,,,,SmartDoc - EAME,,,,0,IT-624180,VV-731623,,N/A,PP321_12074,,,,,,,,,,,,,B Sochard,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afdd91,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,ETL_blank,,090100b881afdd91,,,0,,,,,Berangere Sochard,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_850361,,ETL_blank,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the context in which the dossier is submit,,2,Registration Supporting Documentation,,,,,,No,,090100b881afdd91 (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"Global Reg Ops, NA Reg Ops, PS Ops, EAME Reg Ops, Syngenta Business Administrator, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand",Vault Migration,,application/msword,Regulatory,2,,PP321,,,,0,No,,PI0015818,,No,40037_850361_1958105,No,01/09/2020,,Regulatory,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Sochard Berangere,,49152,,No,,,86d75e5da397fdadcd332f92234a4f62,29/11/2019 08:51 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the.pdf, -,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology (1).docx,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Non Restricted, Syngenta Read Only Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology,PI0015818,,,,0,,,OECD Tier 2 Summary,0,,,,,,17/02/2021 22:02 CET,,Syngenta Crop Protection AG (Switzerland),,Yes,Draft,,,,,SmartDoc - EAME,,,,0,IT-615930,VV-729845,,N/A,PP321_12086,,,Syngenta,,,,,,,,,,S Lloyd,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde22,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde22,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848583,,,,,,Ellis Sonia (ext) GBGU,,,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology,,893,Summary / Assessment,,,,,,No,,090100b881afde22 (cv),,CP Vault Support,0,,No,Syngenta,24/02/2021 15:20 CET,,,Vault Migration,"EAME Reg Ops, Syngenta Business Administrator, PS Ops, NA Reg Ops, Global Reg Ops, Berangere Sochard, Simon Baker, Lily Williams, Clive Boxwell, Paul Parsons, Richard MacKenzie, Dan Pickford, Laurence Hand, Claire McCombie, Elaine Buss",Vault Migration,,application/vnd.openxmlformats-officedocument.wordprocessingml.document,Toxicology,3,,PP321,,,,0,No,,PI0015818,,No,40037_848583_2033983,No,01/09/2020,,Tox,No,0,,,,1,,,Syngenta Crop Protection AG,,17/02/2021 21:35 CET,,04/09/2020 14:34 CEST,,,,,,,,,VV-729845,Lloyd Sara,,5089990,,No,,,3b13f57d1244e77844eba73ce0ae9813,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology.pdf, -,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List (1).doc,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List,PI0015818,,,,0,,,OECD Tier 1 Summary,0,,,,,,12/09/2020 15:48 CEST,,Syngenta Crop Protection AG (Switzerland),,Yes,Final,,,,,SmartDoc - EAME,,,,0,IT-615436,VV-729844,,N/A,PP321_12084,,,,,,,,,,,,,S Ellis,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde20,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde20,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848582,,,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List,,147,Summary / Assessment,,,,,,No,,090100b881afde20 (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"NA Reg Ops, Global Reg Ops, EAME Reg Ops, PS Ops, Syngenta Business Administrator, Berangere Sochard, Paul Parsons",Vault Migration,,application/msword,Toxicology,2,,PP321,,,,0,No,,PI0015818,,No,40037_848582_2001744,No,01/09/2020,,Tox,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Ellis Sonia,,651264,,No,,,eb0fdf698b528b67f54635395ec7fb52,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List.pdf, -,,Country Specific,,,,,No,,,Yes,,,,,Syngenta,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List (5).doc,,,,,,,,,,,,,,,English,,,PP321,,Summary / Overview,,TRUE,"All Internal Users, Syngenta Read Only Restricted, Syngenta Read Only Non Restricted",,,,16/07/2019,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List,PI0015818,,,,0,,,OECD Tier 1 Summary,0,,,,,,21/09/2020 15:21 CEST,,Syngenta Crop Protection AG (Switzerland),,Yes,Final,,,,,SmartDoc - EAME,,,,0,IT-618210,VV-729843,,N/A,PP321_12083,,,,,,,,,,,,,S Ellis,No,0,0,,,,,,,,,,,,,,,,0,,,1.0|CURRENT,090100b881afde1f,,Syngenta Crop Protection AG (Switzerland),,Syngenta Crop Protection AG,,Original,,,,Internal Use Only,,,,,090100b881afde1f,,,0,,,,,Sonia Ellis,,,Syngenta Crop Protection AG (Switzerland),,,European Union,General Lifecycle,,,40037_848581,,,,,,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List,,151,Summary / Assessment,,,,,,No,,090100b881afde1f (cv),,CP Vault Support,0,,No,,24/02/2021 15:20 CET,,,Vault Migration,"EAME Reg Ops, Global Reg Ops, PS Ops, Syngenta Business Administrator, NA Reg Ops, Berangere Sochard, Melanie Bottoms, Dan Pickford, Lynda Farrelly",Vault Migration,,application/msword,Chemistry - Regulatory,2,,PP321,,,,0,No,,PI0015818,,No,40037_848581_2003177,No,01/09/2020,,Chem - Analytical Methods,No,0,,,,0,,,Syngenta Crop Protection AG,,,,,,,,,,,,,,Ellis Sonia,,699392,,No,,,2c476f477f6e2b55ecb537683f5d1cee,29/11/2019 08:47 CET,0,,,,,,Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List.pdf, diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/test.csv b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/test.csv new file mode 100644 index 000000000..644347468 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/test.csv @@ -0,0 +1,2 @@ +Name,Attribute A,Attribute B +test,123,465