diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java index c9174c71e..b70886c09 100644 --- a/bamboo-specs/src/main/java/buildjob/PlanSpec.java +++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java @@ -37,7 +37,7 @@ public class PlanSpec { * Run main to publish plan on Bamboo */ public static void main(final String[] args) throws Exception { - //By default credentials are read from the '.credentials' file. + //By default, credentials are read from the '.credentials' file. BambooServer bambooServer = new BambooServer("http://localhost:8085"); Plan plan = new PlanSpec().createPlan(); diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/Dossier.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/Dossier.java index 43fb60b4e..aee8957dd 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/Dossier.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/data/dossier/Dossier.java @@ -66,13 +66,16 @@ public class Dossier { @ManyToOne(fetch = FetchType.LAZY) private DossierTemplate dossierTemplate; - @Column(updatable=false, insertable=false, name = "dossier_template_id") + @Column(updatable = false, insertable = false, name = "dossier_template_id") private String dossierTemplateId; @ManyToMany(fetch = FetchType.LAZY, mappedBy = "dossiers") private List reportTemplates = new ArrayList<>(); - @OneToMany + @OneToMany(cascade = CascadeType.ALL, mappedBy = "dossier") private List dossierTypes = new ArrayList<>(); + @OneToMany(cascade = CascadeType.ALL, mappedBy = "dossier") + private List dossierAttributes = 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 new file mode 100644 index 000000000..037f29a37 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesConfigResource.java @@ -0,0 +1,50 @@ +package com.iqser.red.service.persistence.service.v1.api.resources; + +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +public interface DossierAttributesConfigResource { + + String DOSSIER_ATTRIBUTES_PATH = "/dossierAttributes"; + String DOSSIER_ATTRIBUTE_PATH = "/dossierAttribute"; + String BASE_CONFIG_PATH = "/baseConfig"; + + String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; + String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; + + String DOSSIER_ATTRIBUTE_ID = "dossierAttributeId"; + String DOSSIER_ATTRIBUTE_ID_PATH_VARIABLE = "/{" + DOSSIER_ATTRIBUTE_ID + "}"; + + @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) + 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) + 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) + 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") + void deleteDossierAttributes(@RequestBody List dossierAttributeIds); + + + @ResponseBody + @ResponseStatus(HttpStatus.OK) + @GetMapping(value = DOSSIER_ATTRIBUTES_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/DossierAttributesResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesResource.java index c69f1de7c..746b115fe 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierAttributesResource.java @@ -1,7 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.resources; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; -import org.springframework.http.HttpStatus; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @@ -9,42 +8,27 @@ import java.util.List; public interface DossierAttributesResource { - String DOSSIER_ATTRIBUTES_PATH = "/dossierAttributes"; - String DOSSIER_ATTRIBUTE_PATH = "/dossierAttribute"; - String BASE_CONFIG_PATH = "/baseConfig"; + String REST_PATH = "/dossierAttributes"; + String SET_PATH = "/set"; + String UPDATE_PATH = "/update"; - String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; - String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; + String DOSSIER_ID_PARAM = "dossierId"; + String DOSSIER_ID_PATH_PARAM = "/{" + DOSSIER_ID_PARAM + "}"; - String DOSSIER_ATTRIBUTE_ID = "dossierAttributeId"; - String DOSSIER_ATTRIBUTE_ID_PATH_VARIABLE = "/{" + DOSSIER_ATTRIBUTE_ID + "}"; - - @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) - 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) - List setDossierAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody List dossierAttributesConfig); + String DOSSIER_ATTRIBUTE_ID_PARAM = "dossierAttributeId"; + String DOSSIER_ATTRIBUTE_ID_PATH_PARAM = "/{" + DOSSIER_ATTRIBUTE_ID_PARAM + "}"; - @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + DOSSIER_ATTRIBUTE_ID_PATH_VARIABLE) - void deleteDossierAttribute(@PathVariable(DOSSIER_ATTRIBUTE_ID) String dossierAttributeId); + @PostMapping(value = REST_PATH + SET_PATH + DOSSIER_ID_PATH_PARAM, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + List setDossierAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody List dossierAttributes); + @PostMapping(value = REST_PATH + UPDATE_PATH + DOSSIER_ID_PATH_PARAM, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + DossierAttribute addOrUpdateDossierAttribute(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody DossierAttribute dossierAttribute); - @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete") - void deleteDossierAttributes(@RequestBody List dossierAttributeIds); + @GetMapping(value = REST_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) + List getDossierAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId); - - @ResponseBody - @ResponseStatus(HttpStatus.OK) - @GetMapping(value = DOSSIER_ATTRIBUTES_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) - List getDossierAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId); + @DeleteMapping(value = REST_PATH + SET_PATH + DOSSIER_ID_PATH_PARAM + DOSSIER_ATTRIBUTE_ID_PATH_PARAM) + void deleteDossierAttribute(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(DOSSIER_ATTRIBUTE_ID_PARAM) String dossierAttributeId); } 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 new file mode 100644 index 000000000..bddd40063 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java @@ -0,0 +1,64 @@ +package com.iqser.red.service.persistence.service.v1.api.resources; + +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 org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +public interface FileAttributesConfigResource { + + String FILE_ATTRIBUTES_PATH = "/fileAttributes"; + String FILE_ATTRIBUTE_PATH = "/fileAttribute"; + String BASE_CONFIG_PATH = "/baseConfig"; + + 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) + FileAttributesGeneralConfiguration setFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody FileAttributesGeneralConfiguration fileAttributesConfig); + + @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); + + @ResponseBody + @ResponseStatus(HttpStatus.OK) + @PutMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + List setFileAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody List fileAttributesConfig); + + + @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); + + + @ResponseStatus(HttpStatus.NO_CONTENT) + @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete") + void deleteFileAttributes(@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); + + +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesResource.java index 7e4db5861..55024d98a 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesResource.java @@ -1,64 +1,34 @@ package com.iqser.red.service.persistence.service.v1.api.resources; -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 org.springframework.http.HttpStatus; +import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvRequest; +import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvResponse; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; -import java.util.List; +import java.util.Map; public interface FileAttributesResource { - String FILE_ATTRIBUTES_PATH = "/fileAttributes"; - String FILE_ATTRIBUTE_PATH = "/fileAttribute"; - String BASE_CONFIG_PATH = "/baseConfig"; + String REST_PATH = "/fileAttributes"; + String CSV_IMPORT_PATH = "/csvImport"; + String SET_PATH = "/set"; - String DOSSIER_TEMPLATE_ID = "dossierTemplateId"; - String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID + "}"; + String DOSSIER_ID_PARAM = "dossierId"; + String DOSSIER_ID_PATH_PARAM = "/{" + DOSSIER_ID_PARAM + "}"; - 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); + String FILE_ID = "fileId"; + String FILE_ID_PATH_VARIABLE = "/{" + FILE_ID + "}"; - @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) - FileAttributesGeneralConfiguration setFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody FileAttributesGeneralConfiguration fileAttributesConfig); - - @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); - - @ResponseBody - @ResponseStatus(HttpStatus.OK) - @PutMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - List setFileAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody List fileAttributesConfig); + @PostMapping(value = REST_PATH + CSV_IMPORT_PATH + DOSSIER_ID_PATH_PARAM, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + ImportCsvResponse importCsv(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestBody ImportCsvRequest importCsvRequest); - @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); - - - @ResponseStatus(HttpStatus.NO_CONTENT) - @PostMapping(value = FILE_ATTRIBUTES_PATH + FILE_ATTRIBUTE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/delete") - void deleteFileAttributes(@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); - + @PostMapping(value = REST_PATH + SET_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) + void setFileAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, + @RequestBody Map fileAttributes); } diff --git a/persistence-service-v1/persistence-service-api-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/model/IdentityTest.java b/persistence-service-v1/persistence-service-api-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/model/IdentityTest.java new file mode 100644 index 000000000..81f13cce5 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/test/java/com/iqser/red/service/persistence/service/v1/api/model/IdentityTest.java @@ -0,0 +1,14 @@ +package com.iqser.red.service.persistence.service.v1.api.model; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.assertj.core.api.Assertions.assertThat; + +public class IdentityTest { + + @Test + public void mockTest(){ + assertThat(1).isEqualTo(1); + } +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/FileNotFoundException.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/FileNotFoundException.java deleted file mode 100644 index 8a2b824d9..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/FileNotFoundException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.exception; - -public class FileNotFoundException extends RuntimeException { - - public FileNotFoundException(String message) { - super(message); - } - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java index df6e2243e..a57d731cf 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/AddRedactionPersistenceService.java @@ -1,15 +1,16 @@ 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.ManualRedactionRepository; import com.iqser.red.service.persistence.service.v1.api.model.AddRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualRedactionEntry; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ManualRedactionRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -40,7 +41,7 @@ public class AddRedactionPersistenceService { return manualRedactionRepository.findById(new AnnotationId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) .orElseThrow(() -> - new FileNotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } @@ -51,13 +52,13 @@ public class AddRedactionPersistenceService { } + @Transactional public void hardDelete(String fileId, String annotationId) { manualRedactionRepository.deleteById(new AnnotationId(annotationId, fileId)); } public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { - manualRedactionRepository.findById(new AnnotationId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/CommentPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/CommentPersistenceService.java index e476d2a65..04cca1a4c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/CommentPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/CommentPersistenceService.java @@ -1,11 +1,12 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Comment; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.CommentRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Comment; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; import java.util.Map; @@ -46,6 +47,7 @@ public class CommentPersistenceService { return commentRepository.existsByFileIdAndSoftDeletedTimeIsNull(fileId); } + @Transactional public void hardDelete(long commentId) { commentRepository.deleteById(commentId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 530ff08c5..c34e991ff 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -10,6 +10,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.util.List; import java.util.Optional; @@ -86,6 +87,7 @@ public class DictionaryPersistenceService { } + @Transactional public void deleteType(String typeId) { typeRepository.deleteById(typeId); } 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 e6d528e4b..dc97801ab 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 @@ -9,6 +9,7 @@ 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; @@ -50,6 +51,7 @@ public class DossierAttributeConfigPersistenceService { } } + @Transactional public List setDossierAttributesConfig(String dossierTemplateId, List dossierAttributesConfig) { dossierAttributeConfigRepository.deleteByDossierTemplateId(dossierTemplateId); @@ -63,10 +65,12 @@ public class DossierAttributeConfigPersistenceService { return getDossierAttributes(dossierTemplateId); } + @Transactional public void deleteDossierAttribute(String dossierAttributeId) { dossierAttributeConfigRepository.deleteById(dossierAttributeId); } + @Transactional public void deleteDossierAttributes(List dossierAttributeIds) { dossierAttributeIds.forEach(dossierAttributeConfigRepository::deleteById); } 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 a045773f4..c1bda35ad 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,10 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; 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; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.util.List; @Service @@ -13,14 +16,14 @@ import java.util.List; public class DossierAttributePersistenceService { private final DossierAttributeRepository dossierAttributeRepository; - + private final DossierRepository dossierRepository; public void insertDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) { - DossierAttribute dossierAttribute = new DossierAttribute(); - dossierAttribute.setId(new DossierAttribute.DossierAttributeId(dossierId, dossierAttributeId)); + dossierAttribute.setId(new DossierAttribute.DossierAttributeId(null, dossierAttributeId)); dossierAttribute.setValue(dossierAttributeValue); + dossierAttribute.setDossier(dossierRepository.getOne(dossierId)); dossierAttributeRepository.save(dossierAttribute); } @@ -29,13 +32,24 @@ public class DossierAttributePersistenceService { dossierAttributeRepository.findById(new DossierAttribute.DossierAttributeId(dossierId, dossierAttributeId)).ifPresent(dossierAttribute -> dossierAttribute.setValue(dossierAttributeValue)); } + + @Transactional + public void deleteDossierAttribute(String dossierId) { + dossierAttributeRepository.deleteByDossierId(dossierId); + } + + @Transactional public void deleteDossierAttribute(String dossierId, String dossierAttributeId) { dossierAttributeRepository.deleteById(new DossierAttribute.DossierAttributeId(dossierId, dossierAttributeId)); } public List getDossierAttributes(String dossierId) { return dossierAttributeRepository.findByIdDossierId(dossierId); + } + public DossierAttribute findOne(String dossierId, String dossierAttributeId) { + return dossierAttributeRepository.findById(new DossierAttribute.DossierAttributeId(dossierId, dossierAttributeId)) + .orElseThrow(() -> new NotFoundException("Dossier Attribute not set")); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index 67007519d..4a3a6587a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; import java.util.Set; @@ -23,8 +24,6 @@ import static com.iqser.red.service.persistence.management.v1.processor.exceptio @RequiredArgsConstructor public class DossierPersistenceService { - private static final String ACTIVE_STATUS = "ACTIVE"; - private static final String DELETED_STATUS = "DELETED"; private final DossierRepository dossierRepository; private final DossierTemplateRepository dossierTemplateRepository; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java index 4b083e39b..738d4343d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java @@ -1,13 +1,14 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; -import com.iqser.red.service.persistence.service.v1.api.model.data.download.DownloadStatus; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository; 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.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.download.DownloadStatus; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; @@ -50,7 +51,6 @@ public class DownloadStatusPersistenceService { } - public void updateLastDownload(String storageId) { downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> { @@ -60,6 +60,7 @@ public class DownloadStatusPersistenceService { } + @Transactional public void deleteStatus(String storageId) { downloadStatusRepository.deleteById(storageId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java index 2e52352e3..316609131 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java @@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -36,6 +37,7 @@ public class EntryPersistenceService { } + @Transactional public void deleteEntries(String typeId, List values, long version) { entryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, version, values); } 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 f635f667b..10e22f2f2 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 @@ -13,6 +13,7 @@ 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; @@ -69,6 +70,7 @@ public class FileAttributeConfigPersistenceService { return fileAttributesGeneralConfigurationRepository.findById(dossierTemplateId).orElseThrow(() -> new NotFoundException("File Attribute Config not found")); } + @Transactional public List setFileAttributesConfig(String dossierTemplateId, List fileAttributesConfig) { fileAttributeConfigRepository.deleteByDossierTemplateId(dossierTemplateId); @@ -82,10 +84,12 @@ public class FileAttributeConfigPersistenceService { return getFileAttributes(dossierTemplateId); } + @Transactional public void deleteFileAttribute(String fileAttributeId) { fileAttributeConfigRepository.deleteById(fileAttributeId); } + @Transactional public void deleteFileAttributes(List fileAttributeIds) { fileAttributeIds.forEach(fileAttributeConfigRepository::deleteById); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ForceRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ForceRedactionPersistenceService.java index 695f43193..eb5796fe2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ForceRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ForceRedactionPersistenceService.java @@ -1,16 +1,17 @@ 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.ForceRedactionRepository; import com.iqser.red.service.persistence.service.v1.api.model.ForceRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualForceRedaction; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ForceRedactionRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -42,6 +43,7 @@ public class ForceRedactionPersistenceService { } + @Transactional public void hardDelete(String fileId, String annotationId) { forceRedactionRepository.deleteById(new AnnotationId(annotationId, fileId)); } @@ -59,7 +61,7 @@ public class ForceRedactionPersistenceService { return forceRedactionRepository.findById(new AnnotationId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) .orElseThrow(() -> - new FileNotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ImageRecategorizationPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ImageRecategorizationPersistenceService.java index e7392b89e..af4195c05 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ImageRecategorizationPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ImageRecategorizationPersistenceService.java @@ -1,15 +1,16 @@ 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.ImageRecategorizationRepository; import com.iqser.red.service.persistence.service.v1.api.model.ImageRecategorizationRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualImageRecategorization; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ImageRecategorizationRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -41,11 +42,11 @@ public class ImageRecategorizationPersistenceService { } + @Transactional public void hardDelete(String fileId, String annotationId) { imageRecategorizationRepository.deleteById(new AnnotationId(annotationId, fileId)); } - public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { imageRecategorizationRepository.findById(new AnnotationId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); @@ -60,7 +61,7 @@ public class ImageRecategorizationPersistenceService { return imageRecategorizationRepository.findById(new AnnotationId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) .orElseThrow(() -> - new FileNotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisChangePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisChangePersistenceService.java index b928a0efe..5c2b55128 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisChangePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/LegalBasisChangePersistenceService.java @@ -1,15 +1,16 @@ 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.LegalBasisChangeRepository; import com.iqser.red.service.persistence.service.v1.api.model.LegalBasisChangeRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualLegalBasisChange; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisChangeRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -31,6 +32,7 @@ public class LegalBasisChangePersistenceService { } + @Transactional public void hardDelete(String fileId, String annotationId) { legalBasisChangeRepository.deleteById(new AnnotationId(annotationId, fileId)); } @@ -60,7 +62,7 @@ public class LegalBasisChangePersistenceService { return legalBasisChangeRepository.findById(new AnnotationId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) .orElseThrow(() -> - new FileNotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPersistenceService.java index cf8ffd38f..e87052335 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/NotificationPersistenceService.java @@ -9,6 +9,7 @@ import lombok.SneakyThrows; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; @@ -53,6 +54,7 @@ public class NotificationPersistenceService { } + @Transactional public void hardDelete(long notificationId) { notificationRepository.deleteById(notificationId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RemoveRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RemoveRedactionPersistenceService.java index 6da455f6e..b59a5cb4e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RemoveRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RemoveRedactionPersistenceService.java @@ -1,15 +1,16 @@ 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.RemoveRedactionRepository; import com.iqser.red.service.persistence.service.v1.api.model.RemoveRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.IdRemoval; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RemoveRedactionRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.Set; import java.util.stream.Collectors; @@ -39,7 +40,7 @@ public class RemoveRedactionPersistenceService { return removeRedactionRepository.findById(new AnnotationId(annotationId, fileId)) .filter(mre -> mre.getSoftDeletedTime() == null) .orElseThrow(() -> - new FileNotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); + new NotFoundException("Unknown file/annotation combination: " + fileId + "/" + annotationId)); } @@ -47,11 +48,11 @@ public class RemoveRedactionPersistenceService { return removeRedactionRepository.findByIdFileId(fileId).stream().filter(mre -> includeDeletions || mre.getSoftDeletedTime() == null).collect(Collectors.toSet()); } + @Transactional public void hardDelete(String fileId, String annotationId) { removeRedactionRepository.deleteById(new AnnotationId(annotationId, fileId)); } - public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { removeRedactionRepository.findById(new AnnotationId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java index a6f91b3a9..918f3ecfc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java @@ -7,6 +7,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.util.List; @Service @@ -33,6 +34,7 @@ public class ReportTemplatePersistenceService { } + @Transactional public void delete(String templateId) { reportTemplateRepository.deleteById(templateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java index 6d52d8fae..0e17b359e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/RulesPersistenceService.java @@ -1,8 +1,8 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.RuleSet; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.RuleSet; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SMTPConfigurationService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SMTPConfigurationService.java index 16ddcc5b7..93358565a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SMTPConfigurationService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/SMTPConfigurationService.java @@ -7,6 +7,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; + @Slf4j @Service @RequiredArgsConstructor @@ -14,6 +16,7 @@ public class SMTPConfigurationService { private final SMTPRepository smtpRepository; + @Transactional public void deleteConfiguration() { smtpRepository.deleteById(SMTPConfiguration.ID); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java index 332dd8455..fb2c83bb0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java @@ -1,10 +1,12 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ViewedPage; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository; +import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ViewedPage; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; @@ -12,18 +14,20 @@ import java.util.List; @RequiredArgsConstructor public class ViewedPagesPersistenceService { - private final ViewedPagesRepository viewedPagesRepository; + private final FileRepository fileRepository; public void insertPage(String fileId, String userId, int page) { var viewedPage = new ViewedPage(); viewedPage.setViewedTime(OffsetDateTime.now()); - viewedPage.setId(new ViewedPage.ViewedPageId(fileId, page, userId)); + viewedPage.setId(new ViewedPage.ViewedPageId(null, page, userId)); + viewedPage.setFile(fileRepository.getOne(fileId)); viewedPagesRepository.save(viewedPage); } + @Transactional public void removePage(String fileId, String role, int page) { viewedPagesRepository.deleteById(new ViewedPage.ViewedPageId(fileId, page, role)); } @@ -34,6 +38,7 @@ public class ViewedPagesPersistenceService { } + @Transactional public void deleteForFile(String fileId) { viewedPagesRepository.deleteByFileId(fileId); } 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 2e0096ffc..b9d9b95d1 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 @@ -9,4 +9,5 @@ public interface DossierAttributeRepository extends JpaRepository findByIdDossierId(String dossierId); + void deleteByDossierId(String dossierId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/IdentityTest.java b/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/IdentityTest.java new file mode 100644 index 000000000..94dadb4d1 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/test/java/com/iqser/red/service/persistence/management/v1/processor/service/IdentityTest.java @@ -0,0 +1,13 @@ +package com.iqser.red.service.persistence.management.v1.processor.service; + +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class IdentityTest { + + @Test + public void mockTest(){ + assertThat(1).isEqualTo(1); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesConfigController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesConfigController.java new file mode 100644 index 000000000..b48ba18ce --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesConfigController.java @@ -0,0 +1,48 @@ +package com.iqser.red.service.file.management.v1.server.controller; + +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesConfigResource; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Slf4j +@RestController +@RequiredArgsConstructor +public class DossierAttributesConfigController implements DossierAttributesConfigResource { + + + private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + + @Override + public DossierAttributeConfig addOrUpdateDossierAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody DossierAttributeConfig dossierAttributeConfig) { + return dossierAttributeConfigPersistenceService.addOrUpdateDossierAttribute(dossierTemplateId, dossierAttributeConfig); + } + + @Override + public List setDossierAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody List dossierAttributesConfig) { + return dossierAttributeConfigPersistenceService.setDossierAttributesConfig(dossierTemplateId, dossierAttributesConfig); + } + + @Override + public void deleteDossierAttribute(@PathVariable(DOSSIER_ATTRIBUTE_ID) String dossierAttributeId) { + dossierAttributeConfigPersistenceService.deleteDossierAttribute(dossierAttributeId); + } + + @Override + public void deleteDossierAttributes(@RequestBody List dossierAttributeIds) { + dossierAttributeConfigPersistenceService.deleteDossierAttributes(dossierAttributeIds); + } + + @Override + public List getDossierAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { + return dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplateId); + } +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesController.java index 79e631548..52866c22d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/DossierAttributesController.java @@ -1,48 +1,86 @@ package com.iqser.red.service.file.management.v1.server.controller; +import com.iqser.red.service.file.management.v1.server.service.DossierService; +import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; +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 com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; 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; -@Slf4j @RestController @RequiredArgsConstructor public class DossierAttributesController implements DossierAttributesResource { - + private final DossierAttributePersistenceService dossierAttributePersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + private final DossierService dossierService; + @Override - public DossierAttributeConfig addOrUpdateDossierAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody DossierAttributeConfig dossierAttributeConfig) { - return dossierAttributeConfigPersistenceService.addOrUpdateDossierAttribute(dossierTemplateId, dossierAttributeConfig); + public List setDossierAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestBody List dossierAttributes) { + + var dossier = dossierService.getDossierById(dossierId); + var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId()); + for (DossierAttribute dossierAttribute : dossierAttributes) { + if (config.stream().map(DossierAttributeConfig::getId).noneMatch(id -> id.equals(dossierAttribute.getId().getDossierAttributeConfigId()))) { + throw new ConflictException("Dossier attribute configuration does not exist."); + } + } + + dossierAttributePersistenceService.deleteDossierAttribute(dossierId); + + for (DossierAttribute dossierAttribute : dossierAttributes) { + dossierAttributePersistenceService.insertDossierAttribute(dossierId, dossierAttribute.getId().getDossierAttributeConfigId(), dossierAttribute.getValue()); + } + + return getDossierAttributes(dossierId); } @Override - public List setDossierAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody List dossierAttributesConfig) { - return dossierAttributeConfigPersistenceService.setDossierAttributesConfig(dossierTemplateId, dossierAttributesConfig); + public DossierAttribute addOrUpdateDossierAttribute(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestBody DossierAttribute dossierAttribute) { + + var dossier = dossierService.getDossierById(dossierId); + var dossierAttributes = dossierAttributePersistenceService.getDossierAttributes(dossierId); + var config = dossierAttributeConfigPersistenceService.getDossierAttributes(dossier.getDossierTemplateId()); + + + if (config.stream().map(DossierAttributeConfig::getId).noneMatch(id -> id.equals(dossierAttribute.getId().getDossierAttributeConfigId()))) { + throw new ConflictException("Dossier attribute configuration does not exist."); + } + + if (dossierAttributes.stream().anyMatch(d -> d.getId().equals(dossierAttribute.getId()))) { + dossierAttributePersistenceService.updateDossierAttribute(dossierId, dossierAttribute.getId().getDossierAttributeConfigId(), dossierAttribute.getValue()); + } else { + dossierAttributePersistenceService.insertDossierAttribute(dossierId, dossierAttribute.getId().getDossierAttributeConfigId(), dossierAttribute.getValue()); + } + + return dossierAttributePersistenceService.findOne(dossierId, dossierAttribute.getId().getDossierAttributeConfigId()); } @Override - public void deleteDossierAttribute(@PathVariable(DOSSIER_ATTRIBUTE_ID) String dossierAttributeId) { - dossierAttributeConfigPersistenceService.deleteDossierAttribute(dossierAttributeId); + @Transactional + public List getDossierAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId) { + return dossierAttributePersistenceService.getDossierAttributes(dossierId); } - @Override - public void deleteDossierAttributes(@RequestBody List dossierAttributeIds) { - dossierAttributeConfigPersistenceService.deleteDossierAttributes(dossierAttributeIds); - } @Override - public List getDossierAttributes(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { - return dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplateId); + public void deleteDossierAttribute(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @PathVariable(DOSSIER_ATTRIBUTE_ID_PARAM) String dossierAttributeId) { + + dossierAttributePersistenceService.deleteDossierAttribute(dossierId, dossierAttributeId); } + + } + diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesConfigController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesConfigController.java new file mode 100644 index 000000000..ab0762061 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesConfigController.java @@ -0,0 +1,58 @@ +package com.iqser.red.service.file.management.v1.server.controller; + +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; +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 com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Slf4j +@RestController +@RequiredArgsConstructor +public class FileAttributesConfigController implements FileAttributesConfigResource { + + + private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; + + @Override + public FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) { + return fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, fileAttributeConfig); + } + + @Override + public FileAttributesGeneralConfiguration setFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, + @RequestBody FileAttributesGeneralConfiguration fileAttributesConfig) { + return fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(dossierTemplateId, fileAttributesConfig); + } + + @Override + public FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { + return fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplateId); + } + + @Override + public List setFileAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody List fileAttributesConfig) { + return fileAttributeConfigPersistenceService.setFileAttributesConfig(dossierTemplateId, fileAttributesConfig); + } + + @Override + public void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) { + fileAttributeConfigPersistenceService.deleteFileAttribute(fileAttributeId); + } + + @Override + public void deleteFileAttributes(@RequestBody List fileAttributeIds) { + fileAttributeConfigPersistenceService.deleteFileAttributes(fileAttributeIds); + } + + @Override + public List getFileAttributes(@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/file/management/v1/server/controller/FileAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesController.java index f6577fe06..8496f2a77 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/FileAttributesController.java @@ -1,58 +1,153 @@ package com.iqser.red.service.file.management.v1.server.controller; +import com.iqser.red.service.file.management.v1.server.service.DossierService; +import com.iqser.red.service.file.management.v1.server.service.FileStatusService; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvRequest; +import com.iqser.red.service.persistence.service.v1.api.model.ImportCsvResponse; 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 com.iqser.red.service.persistence.service.v1.api.model.data.dossier.*; import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesResource; +import com.opencsv.CSVParser; +import com.opencsv.CSVParserBuilder; +import com.opencsv.CSVReader; +import com.opencsv.CSVReaderBuilder; +import com.opencsv.exceptions.CsvValidationException; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import java.util.List; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; -@Slf4j @RestController @RequiredArgsConstructor public class FileAttributesController implements FileAttributesResource { - + private final FileStatusService fileStatusService; private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; + private final FileStatusPersistenceService fileStatusPersistenceService; + private final DossierService dossierService; - @Override - public FileAttributeConfig addOrUpdateFileAttribute(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileAttributeConfig fileAttributeConfig) { - return fileAttributeConfigPersistenceService.addOrUpdateFileAttribute(dossierTemplateId, fileAttributeConfig); + + public ImportCsvResponse importCsv(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestBody ImportCsvRequest importCsvRequest) { + + Dossier dossier = dossierService.getDossierById(dossierId); + + FileAttributesGeneralConfiguration generalConfiguration = fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossier.getDossierTemplateId()); + List configuration = fileAttributeConfigPersistenceService.getFileAttributes(dossier.getDossierTemplateId()); + + Map fileStatusByFilename = fileStatusService.getDossierStatus(dossierId) + .stream() + .filter(f -> !f.getStatus().equals(FileStatus.DELETED)) + .collect(Collectors.toMap(File::getFilename, Function.identity())); + + List> rows = getCsvRecords(importCsvRequest.getCsvFile(), generalConfiguration.getDelimiter()); + + Iterator> rowIterator = rows.iterator(); + + Map attributeIdToColumnMapping = new HashMap<>(); + int filenameMappingColumn = -1; + List headerRow = rowIterator.next(); + for (int i = 0; i < headerRow.size(); i++) { + if (headerRow.get(i).equals(generalConfiguration.getFilenameMappingColumnHeaderName())) { + filenameMappingColumn = i; + } else { + for (FileAttributeConfig fileAttributeConfig : configuration) { + if (headerRow.get(i).equals(fileAttributeConfig.getCsvColumnHeader())) { + attributeIdToColumnMapping.put(fileAttributeConfig.getId(), i); + } + } + } + } + + if (filenameMappingColumn == -1) { + throw new BadRequestException("Filename mapping column could not be found!"); + } + + Set affectedFileIds = new HashSet<>(); + while (rowIterator.hasNext()) { + List row = rowIterator.next(); + + String fileStatusMappingColumn = row.get(filenameMappingColumn); + + if (fileStatusMappingColumn == null) { + continue; + } + + // TODO this is a primitive solution we need smart name matching + if (!fileStatusMappingColumn.toLowerCase().endsWith(".pdf")) { + fileStatusMappingColumn = fileStatusMappingColumn + ".pdf"; + } + + if (!fileStatusByFilename.containsKey(fileStatusMappingColumn.trim())) { + continue; + } + + Map attributeIdToValue = new HashMap<>(); + for (Map.Entry entry : attributeIdToColumnMapping.entrySet()) { + attributeIdToValue.put(entry.getKey(), row.get(entry.getValue())); + } + + String fileId = fileStatusByFilename.get(fileStatusMappingColumn.trim()).getId(); + + fileStatusPersistenceService.setFileAttributes(fileId, convertFileAttributes(dossierId, fileId, attributeIdToValue)); + affectedFileIds.add(fileId); + } + + return new ImportCsvResponse(affectedFileIds, attributeIdToColumnMapping.keySet()); } - @Override - public FileAttributesGeneralConfiguration setFileAttributesGeneralConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestBody FileAttributesGeneralConfiguration fileAttributesConfig) { - return fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(dossierTemplateId, fileAttributesConfig); + + public void setFileAttributes(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + @PathVariable(FILE_ID) String fileId, @RequestBody Map fileAttributesMap) { + + fileStatusPersistenceService.setFileAttributes(fileId, convertFileAttributes(dossierId, fileId, fileAttributesMap)); } - @Override - public FileAttributesGeneralConfiguration getFileAttributesGeneralConfiguration(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId) { - return fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplateId); + private List convertFileAttributes(String dossierId, String fileId, Map fileAttributesMap) { + var dossier = dossierService.getDossierById(dossierId); + var file = fileStatusService.getStatus(fileId); + List configuration = fileAttributeConfigPersistenceService.getFileAttributes(dossier.getDossierTemplateId()); + + return fileAttributesMap.entrySet().stream().map(entry -> { + var fa = new FileAttribute(); + fa.setFile(file); + fa.setFileAttributeConfig(configuration.stream().filter(c -> c.getId().equals(entry.getKey())).findAny().orElseThrow(() -> + new BadRequestException("Invalid File Attribute Id"))); + fa.setValue(entry.getValue()); + return fa; + }).collect(Collectors.toList()); } - @Override - public List setFileAttributesConfig(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody List fileAttributesConfig) { - return fileAttributeConfigPersistenceService.setFileAttributesConfig(dossierTemplateId, fileAttributesConfig); + + private List> getCsvRecords(byte[] csv, String delimiter) { + + CSVParser parser = new CSVParserBuilder().withSeparator(delimiter.charAt(0)).build(); + + List> records = new ArrayList<>(); + try (CSVReader csvReader = new CSVReaderBuilder(new BufferedReader(new InputStreamReader(new ByteArrayInputStream(csv)))) + .withCSVParser(parser) + .build()) { + String[] values = null; + while ((values = csvReader.readNext()) != null) { + records.add(Arrays.asList(values)); + } + } catch (IOException | CsvValidationException e) { + e.printStackTrace(); + } + + return records; } - @Override - public void deleteFileAttribute(@PathVariable(FILE_ATTRIBUTE_ID) String fileAttributeId) { - fileAttributeConfigPersistenceService.deleteFileAttribute(fileAttributeId); - } - - @Override - public void deleteFileAttributes(@RequestBody List fileAttributeIds) { - fileAttributeConfigPersistenceService.deleteFileAttributes(fileAttributeIds); - } - - @Override - public List getFileAttributes(@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/file/management/v1/server/controller/ReportTemplateController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/ReportTemplateController.java index 834dfb45b..41b797e27 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/ReportTemplateController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/ReportTemplateController.java @@ -2,7 +2,7 @@ package com.iqser.red.service.file.management.v1.server.controller; import com.iqser.red.service.file.management.v1.server.utils.StorageIdUtils; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateDownload; import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateUploadRequest; @@ -70,7 +70,7 @@ public class ReportTemplateController implements ReportTemplateResource { byte[] file = IOUtils.toByteArray(storageService.getObject(storageId).getInputStream()); return ReportTemplateDownload.builder().file(file).build(); } catch (StorageObjectDoesNotExist | IOException e) { - throw new FileNotFoundException("Template does not exist"); + throw new NotFoundException("Template does not exist"); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/RulesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/RulesController.java index 93f10f1d6..1b08ba83b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/RulesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/RulesController.java @@ -2,6 +2,7 @@ package com.iqser.red.service.file.management.v1.server.controller; import com.iqser.red.service.file.management.v1.server.client.RedactionClient; import com.iqser.red.service.file.management.v1.server.exception.InvalidRulesException; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.resources.RulesResource; @@ -45,7 +46,11 @@ public class RulesController implements RulesResource { @Override public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) { - return rulesPersistenceService.getRules(dossierTemplateId).getVersion(); + try { + return rulesPersistenceService.getRules(dossierTemplateId).getVersion(); + } catch (NotFoundException e) { + return 0; + } } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/UploadController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/UploadController.java index 324816bbc..505969ecd 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/UploadController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/controller/UploadController.java @@ -11,7 +11,7 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionRequ import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionResult; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; +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.service.v1.api.model.BinaryFileRequest; import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileResult; @@ -104,13 +104,13 @@ public class UploadController implements UploadResource { var fileStatus = fileStatusService.getStatus(fileId); if (fileStatus.getDeleted() != null) { - throw new FileNotFoundException("File is deleted."); + throw new NotFoundException("File is deleted."); } try { return new BinaryFileResult(fileManagementStorageService.getStoredObjectBytes(dossierId, fileId, FileType.ORIGIN), fileStatus.getFilename()); } catch (StorageObjectDoesNotExist e) { - throw new FileNotFoundException(e.getMessage()); + throw new NotFoundException(e.getMessage()); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileManagementStorageService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileManagementStorageService.java index ad59dcf46..6adc2805f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileManagementStorageService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileManagementStorageService.java @@ -1,24 +1,22 @@ package com.iqser.red.service.file.management.v1.server.service; -import java.io.IOException; -import java.io.InputStream; - -import org.apache.commons.io.IOUtils; -import org.springframework.core.io.InputStreamResource; -import org.springframework.stereotype.Service; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; import com.iqser.red.service.file.management.v1.server.utils.StorageIdUtils; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.service.v1.api.model.FileType; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.SectionGrid; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import com.iqser.red.storage.commons.service.StorageService; - import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.springframework.core.io.InputStreamResource; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.io.InputStream; @Slf4j @Service @@ -62,7 +60,7 @@ public class FileManagementStorageService { inputStreamResource = storageService.getObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.REDACTION_LOG)); } catch (StorageObjectDoesNotExist e) { log.debug("Text not available."); - throw new FileNotFoundException("RedactionLog does not exist"); + throw new NotFoundException("RedactionLog does not exist"); } try { @@ -73,7 +71,6 @@ public class FileManagementStorageService { } - public SectionGrid getSectionGrid(String dossierId, String fileId) { var sectionGrid = storageService.getObject(StorageIdUtils.getStorageId(dossierId, fileId, FileType.SECTION_GRID)); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileService.java index aaf7ce3ef..5cea4a250 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileService.java @@ -6,7 +6,7 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeReque import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*; import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileRequest; import com.iqser.red.service.persistence.service.v1.api.model.FileType; @@ -91,7 +91,7 @@ public class FileService { try { return fileStatusService.getStatus(fileId); - } catch (FileNotFoundException e) { + } catch (NotFoundException e) { // it's a new File. return null; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileStatusService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileStatusService.java index 06c8f5776..e6b054e6c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/FileStatusService.java @@ -15,9 +15,11 @@ import com.iqser.red.service.redaction.v1.model.AnalyzeResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.hibernate.Hibernate; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; +import javax.transaction.Transactional; import java.time.OffsetDateTime; import java.util.List; import java.util.Set; @@ -84,6 +86,7 @@ public class FileStatusService { } + @Transactional public void createStatus(String dossierId, String fileId, String uploader, String filename, int priority) { fileStatusPersistenceService.createStatus(dossierId, fileId, filename, uploader); @@ -91,10 +94,12 @@ public class FileStatusService { } + @Transactional public void setStatusReprocess(String dossierId, String fileId, int priority) { setStatusReprocess(dossierId, fileId, priority, Sets.newHashSet()); } + @Transactional public void setStatusReprocess(String dossierId, String fileId, int priority, Set sectionsToReanalyse) { log.info("Reprocessing file: {} from dossier {}", fileId, dossierId); @@ -125,6 +130,7 @@ public class FileStatusService { } + @Transactional public void setStatusFullReprocess(String dossierId, String fileId, int priority) { File fileStatus = fileStatusPersistenceService.getStatus(fileId); @@ -195,7 +201,8 @@ public class FileStatusService { } - private void addToAnalysisQueue(String dossierId, String fileId, int priority, Set sectionsToReanalyse) { + @Transactional + protected void addToAnalysisQueue(String dossierId, String fileId, int priority, Set sectionsToReanalyse) { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); var fileStatus = fileStatusPersistenceService.getStatus(fileId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/download/DownloadPreparationService.java index 8b42a259c..a579c801a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/file/management/v1/server/service/download/DownloadPreparationService.java @@ -6,7 +6,7 @@ import com.iqser.red.service.file.management.v1.server.service.RedactionLogServi import com.iqser.red.service.file.management.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.FileNotFoundException; +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; @@ -237,7 +237,7 @@ public class DownloadPreparationService { } try { return redactionLogService.getRedactionLog(dossierId, fileId, true); - } catch (FileNotFoundException e) { + } catch (NotFoundException e) { return null; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yml index 2bfd1b203..603471b42 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yml @@ -27,3 +27,5 @@ spring: naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy generate-ddl: true + + open-in-view: true diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/DossierControllerTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/DossierControllerTest.java deleted file mode 100644 index 60064302e..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/DossierControllerTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.controller; - -import org.junit.runner.RunWith; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@WebMvcTest(value = DossierController.class) -public class DossierControllerTest { -// -// private static final String SERVICE_PATH = "/" + SERVICE_NAME; -// -// @Autowired -// private ObjectMapper mapper; -// -// @Autowired -// private MockMvc mockMvc; -// -// @MockBean(name = "mainCassandraSession") -// private CassandraSession cassandraSession; -// -// @MockBean(name = "migrationCassandraSession") -// private CassandraSession migrationCassandraSession; -// -// @MockBean -// private Migrator migrator; -// -// @MockBean -// private FileStatusPersistenceService fileStatusPersistenceService; -// -// @MockBean -// private MessagingConfiguration messagingConfiguration; -// -// @MockBean -// private CleanupDownloadSchedulerConfiguration cleanupDownloadSchedulerConfiguration; -// -// @MockBean -// private DossierPersistenceService dossierPersistenceService; -// -// @MockBean -// private FileStatusService fileStatusService; -// -// @MockBean -// private DossierService dossierService; -// -// @MockBean -// private FileService fileService; -// -// @MockBean -// private ManualRedactionService manualRedactionService; -// -// @Test -// public void testAddDossier() throws Exception { -// -// String userId = "userId"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2", "templateId3")); -// DossierRequest dossierRequest = new DossierRequest("Dossier Name", -// "Dossier Description", -// userId, -// "123", -// Collections.singleton(userId), -// Collections.singleton(userId), -// Sets.newHashSet(), -// Sets.newHashSet(), -// OffsetDateTime.now(), -// templateIds, -// true); -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post(SERVICE_PATH + REST_PATH) -// .content(mapper.writeValueAsString(dossierRequest)) -// .contentType(MediaType.APPLICATION_JSON) -// .servletPath(SERVICE_PATH); -// Dossier expected = Dossier.builder() -// .dossierName(dossierRequest.getDossierName()) -// .description(dossierRequest.getDescription()) -// .reportTemplateIds(templateIds) -// .build(); -// when(dossierService.addDossier(dossierRequest)).thenReturn(expected); -// ResultActions requestResult = mockMvc.perform(request); -// requestResult -// .andExpect(status().isOk()) -// .andExpect(content().contentType(MediaType.APPLICATION_JSON)) -// .andExpect(result -> { -// Dossier dossier = mapper.readValue(result.getResponse().getContentAsString(), Dossier.class); -// assertThat(dossier.getDescription()).isEqualTo(dossierRequest.getDescription()); -// assertThat(dossier.getDossierName()).isEqualTo(dossierRequest.getDossierName()); -// assertThat(dossier.getReportTemplateIds()).isEqualTo(dossierRequest.getReportTemplateIds()); -// }); -// -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/FileStatusControllerTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/FileStatusControllerTest.java deleted file mode 100644 index c2991109d..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/FileStatusControllerTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.controller; - -import org.junit.runner.RunWith; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@WebMvcTest(value = FileStatusController.class) -public class FileStatusControllerTest { -// -// private static final String SERVICE_PATH = "/" + SERVICE_NAME; -// -// @Autowired -// private ObjectMapper mapper; -// -// @Autowired -// private MockMvc mockMvc; -// -// @MockBean(name = "mainCassandraSession") -// private CassandraSession cassandraSession; -// -// @MockBean(name = "migrationCassandraSession") -// private CassandraSession migrationCassandraSession; -// -// @MockBean -// private Migrator migrator; -// -// @MockBean -// private FileStatusPersistenceService fileStatusPersistenceService; -// -// @MockBean -// private MessagingConfiguration messagingConfiguration; -// -// @MockBean -// private CleanupDownloadSchedulerConfiguration cleanupDownloadSchedulerConfiguration; -// -// @MockBean -// private DossierPersistenceService dossierPersistenceService; -// -// @MockBean -// private FileStatusService fileStatusService; -// -// @MockBean -// private DossierService dossierService; -// -// @Autowired -// private ObjectMapper objectMapper; -// -// @MockBean -// private ExcludeFromAnalysisService excludeFromAnalysisService; -// -// @Test -// public void testFileStatusResponse() throws Exception { -// -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get(SERVICE_PATH + "/status/dossier") -// .servletPath(SERVICE_PATH); -// OffsetDateTime now = OffsetDateTime.now().withNano(0); -// File expected = File.builder() -// .dossierId("dossier") -// .fileId("file") -// .filename("filename") -// .status(Status.UNASSIGNED) -// .numberOfPages(100) -// .added(now) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer(null) -// .build(); -// when(fileStatusService.getDossierStatus("dossier")).thenReturn(Collections.singletonList(expected)); -// ResultActions requestResult = mockMvc.perform(request); -// requestResult.andExpect(status().isOk()) -// .andExpect(content().contentType(MediaType.APPLICATION_JSON)) -// .andExpect(result -> { -// List dossierStatus = mapper.readValue(result.getResponse() -// .getContentAsString(), new TypeReference>() { -// }); -// assertThat(dossierStatus).containsOnly(expected); -// }); -// -// } -// -// -// @Test -// public void testFileStatus404() throws Exception { -// -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get(SERVICE_PATH + STATUS_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, "p1", "f1") -// .servletPath(SERVICE_PATH); -// when(fileStatusService.getStatus("p1", "f1")).thenThrow(new FileNotFoundException(String.format(FILE_STATUS_NOT_FOUND_MESSAGE, -// "p1", "f1"))); -// ResultActions requestResult = mockMvc.perform(request); -// requestResult.andExpect(status().isNotFound()); -// -// } -// -// -// @Test -// public void testSetCurrentReviewer() throws Exception { -// -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post(SERVICE_PATH + STATUS_PATH + "/reviewer" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, "p1", "f1") -// .content(objectMapper.writeValueAsString(new CurrentFileReviewerRequest("asass"))) -// .contentType(MediaType.APPLICATION_JSON) -// .servletPath(SERVICE_PATH); -// ResultActions requestResult = mockMvc.perform(request); -// requestResult.andExpect(status().isOk()); -// -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/LicenseReportControllerTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/LicenseReportControllerTest.java deleted file mode 100644 index 2220fe972..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/LicenseReportControllerTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.controller; - -import org.junit.runner.RunWith; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@WebMvcTest(value = LicenseReportController.class) -public class LicenseReportControllerTest { - -// private static final String SERVICE_PATH = "/" + SERVICE_NAME; -// -// @Autowired -// private MockMvc mockMvc; -// -// @Autowired -// private ObjectMapper mapper; -// -// @MockBean -// private LicenseReportService licenseReportService; -// -// @MockBean(name = "mainCassandraSession") -// private CassandraSession cassandraSession; -// -// @MockBean(name = "migrationCassandraSession") -// private CassandraSession migrationCassandraSession; -// -// @MockBean -// private Migrator migrator; -// -// @MockBean -// private FileStatusService fileStatusService; -// -// @MockBean -// private CleanupDownloadSchedulerConfiguration cleanupDownloadSchedulerConfiguration; -// -// -// @Test -// public void testFileStatusResponse() throws Exception { -// -// LicenseReportRequest licenseReportRequest = new LicenseReportRequest(); -// String json = mapper.writeValueAsString(licenseReportRequest); -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post(SERVICE_PATH + "/report/license") -// .param("offset", "0") -// .param("limit", "20") -// .content(json) -// .contentType(MediaType.APPLICATION_JSON) -// .servletPath(SERVICE_PATH); -// LicenseReport licenseReport = new LicenseReport(); -// licenseReport.setRequestId("Some Id!"); -// when(licenseReportService.getLicenseReport(mapper.readValue(json, LicenseReportRequest.class), 0, 20)).thenReturn(licenseReport); -// ResultActions requestResult = mockMvc.perform(request); -// requestResult.andExpect(status().isOk()) -// .andExpect(content().contentType(MediaType.APPLICATION_JSON)) -// .andExpect(result -> { -// LicenseReport actual = mapper.readValue(result.getResponse() -// .getContentAsString(), LicenseReport.class); -// assertThat(actual.getRequestId()).isEqualTo(licenseReport.getRequestId()); -// }); -// -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/ReanalysisControllerTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/ReanalysisControllerTest.java deleted file mode 100644 index 822a30904..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/controller/ReanalysisControllerTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.controller; - -import org.junit.runner.RunWith; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@WebMvcTest(value = ReanalysisController.class) -public class ReanalysisControllerTest { -// -// private static final String SERVICE_PATH = "/" + SERVICE_NAME; -// -// @Autowired -// private ObjectMapper mapper; -// -// @Autowired -// private MockMvc mockMvc; -// -// @MockBean -// private FileStatusService fileStatusService; -// -// @MockBean(name = "mainCassandraSession") -// private CassandraSession cassandraSession; -// -// @MockBean(name = "migrationCassandraSession") -// private CassandraSession migrationCassandraSession; -// -// @MockBean -// private Migrator migrator; -// -// @MockBean -// private CleanupDownloadSchedulerConfiguration cleanupDownloadSchedulerConfiguration; -// -// @MockBean -// private DossierPersistenceService dossierPersistenceService; -// -// @MockBean -// private RulesClient rulesClient; -// -// @MockBean -// private DictionaryClient dictionaryClient; -// -// @MockBean -// private FileManagementStorageService fileManagementStorageService; -// -// @MockBean -// private PDFTronRedactionClient pdfTronRedactionClient; -// -// @MockBean -// private RabbitTemplate rabbitTemplate; -// -// @MockBean -// private IndexingService indexingService; -// -// -// @Test -// public void testReanalysisController() throws Exception { -// -// String dossierId = "p1"; -// MockHttpServletRequestBuilder request = MockMvcRequestBuilders.post(SERVICE_PATH + REANALYZE_PATH + DOSSIER_ID_PATH_PARAM, dossierId) -// .servletPath(SERVICE_PATH); -// when(dossierPersistenceService.getAndValidateDossier(dossierId)).thenReturn(Dossier.builder() -// .dossierName("my dossier") -// .status(DossierStatus.ACTIVE) -// .build()); -// mockMvc.perform(request).andExpect(status().isNoContent()); -// String fileId = "f1"; -// request = MockMvcRequestBuilders.post(SERVICE_PATH + REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, dossierId, fileId) -// .content("[]") -// .contentType(MediaType.APPLICATION_JSON) -// .servletPath(SERVICE_PATH); -// when(fileStatusService.getDossierStatus(Mockito.any())).thenReturn(Lists.newArrayList(File.builder() -// .fileId(fileId) -// .status(Status.UNPROCESSED) -// .build())); -// mockMvc.perform(request).andExpect(status().isNoContent()); -// request = MockMvcRequestBuilders.post(SERVICE_PATH + REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, dossierId, fileId) -// .content("[]") -// .contentType(MediaType.APPLICATION_JSON) -// .servletPath(SERVICE_PATH); -// when(dossierPersistenceService.getAndValidateDossier(dossierId)).thenThrow(new DossierNotFoundException("Exception")); -// mockMvc.perform(request).andExpect(status().isNotFound()); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/AbstractFileManagementServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/AbstractFileManagementServerServiceTest.java index ae65f644f..ec1a031a4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/AbstractFileManagementServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/AbstractFileManagementServerServiceTest.java @@ -1,49 +1,60 @@ package com.iqser.red.service.file.management.v1.server.integration; -import com.iqser.red.commons.persistence.cassandra.AbstractCassandraTest; import com.iqser.red.service.file.management.v1.server.Application; +import com.iqser.red.service.file.management.v1.server.client.RedactionClient; +import com.iqser.red.service.file.management.v1.server.client.SearchClient; +import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; +import com.iqser.red.storage.commons.StorageAutoConfiguration; +import com.iqser.red.storage.commons.service.StorageService; +import org.junit.After; import org.junit.runner.RunWith; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.*; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Import(AbstractFileManagementServerServiceTest.TestConfiguration.class) -public abstract class AbstractFileManagementServerServiceTest extends AbstractCassandraTest { -// -// @Autowired -// private StorageService storageService; -// -// @MockBean -// protected RabbitTemplate rabbitTemplate; -// -// @MockBean -// protected DossierAttributesConfigClient dossierAttributesConfigClient; -// -// @MockBean -// protected FileAttributesConfigClient fileAttributesConfigClient; -// -// @MockBean -// protected PDFTronRedactionClient pdfTronRedactionClient; -// -// -// @Configuration -// @EnableAutoConfiguration(exclude = {StorageAutoConfiguration.class, RabbitAutoConfiguration.class}) -// @ComponentScan("com.iqser.red.service.file.management.v1.server") -// public static class TestConfiguration { -// -// @Bean -// @Primary -// public StorageService inmemoryStorage() { -// return new FileSystemBackedStorageService(); -// } -// -// } -// -// @After -// public void cleanupStorage() { -// ((FileSystemBackedStorageService) this.storageService).clearStorage(); -// } +@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public abstract class AbstractFileManagementServerServiceTest { + + @Autowired + private StorageService storageService; + + @MockBean + protected RabbitTemplate rabbitTemplate; + + @MockBean + protected SearchClient searchClient; + + @MockBean + protected RedactionClient redactionClient; + + @MockBean + protected PDFTronRedactionClient pdfTronRedactionClient; + + @Configuration + @EnableAutoConfiguration(exclude = {StorageAutoConfiguration.class, RabbitAutoConfiguration.class}) + @ComponentScan("com.iqser.red.service.file.management.v1.server") + public static class TestConfiguration { + + @Bean + @Primary + public StorageService inmemoryStorage() { + return new FileSystemBackedStorageService(); + } + + } + + @After + public void cleanupStorage() { + ((FileSystemBackedStorageService) this.storageService).clearStorage(); + } + + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierAttributesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierAttributesTest.java deleted file mode 100644 index 3605e367b..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierAttributesTest.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -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.DossierAttribute; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributePersistenceService; -import com.iqser.red.service.file.management.v1.server.controller.DossierAttributesController; -import com.iqser.red.service.file.management.v1.server.controller.DossierController; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; -import org.assertj.core.util.Sets; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - -public class DossierAttributesTest extends AbstractFileManagementServerServiceTest { - -// -// @Autowired -// private DossierAttributesController dossierAttributesController; -// -// @Autowired -// private DossierAttributePersistenceService dossierAttributePersistenceService; -// -// @Autowired -// private DossierController dossierController; -// -// -// -// @Test -// public void testSetDossierAttributes() { -// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(); -// -// DossierAttributeConfig dossierAttributeConfig = DossierAttributeConfig.builder().id("dossierAttributeId").label("label").editable(true).type(DossierAttributeConfig.DossierAttributeType.TEXT).placeholder("placeholder").build(); -// List dossierAttributesConfigList = new ArrayList<>(); -// dossierAttributesConfigList.add(dossierAttributeConfig); -// -// dossierAttributesConfig.setDossierAttributeConfigs(dossierAttributesConfigList); -// -// when(dossierAttributesConfigClient.getDossierAttributes("ruleSetId")).thenReturn(dossierAttributesConfig); -// -// Dossier project = dossierController.addDossier((new DossierRequest("p2", "pd1", "user", "ruleSetId", -// Collections.singleton("u1"), Collections.singleton("u1"), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime.now(), null, true))); -// -// DossierAttribute dossierAttribute = new DossierAttribute("dossierAttributeId", "dossierAttributeValue"); -// -// DossierAttributes dossierAttributes = new DossierAttributes(); -// dossierAttributes.setDossierAttributeList(Arrays.asList(dossierAttribute)); -// DossierAttributes attributes = dossierAttributesController.setDossierAttributes(project.getDossierId(), dossierAttributes); -// -// List dossierAttributeList = dossierAttributePersistenceService.getDossierAttributes(project.getDossierId()).getDossierAttributeList(); -// assertThat(dossierAttributeList.get(0).getDossierAttributeId()).isEqualTo("dossierAttributeId"); -// assertThat(dossierAttributeList.size()).isEqualTo(1); -// -// assertThat(attributes.getDossierAttributeList().get(0).getDossierAttributeId()).isEqualTo("dossierAttributeId"); -// assertThat(attributes.getDossierAttributeList().size()).isEqualTo(1); -// -// -// DossierAttributeConfig dossierAttributeConfig2 = DossierAttributeConfig.builder().id("dossierAttributeId2").label("label").editable(true).type(DossierAttributeConfig.DossierAttributeType.TEXT).placeholder("placeholder").build(); -// List dossierAttributesConfigList2 = new ArrayList<>(); -// dossierAttributesConfigList2.add(dossierAttributeConfig2); -// dossierAttributesConfig.setDossierAttributeConfigs(dossierAttributesConfigList2); -// when(dossierAttributesConfigClient.getDossierAttributes("ruleSetId")).thenReturn(dossierAttributesConfig); -// -// DossierAttribute dossierAttribute2 = new DossierAttribute("dossierAttributeId2", "dossierAttributeValue2"); -// DossierAttributes dossierAttributes2 = new DossierAttributes(); -// dossierAttributes2.setDossierAttributeList(Arrays.asList(dossierAttribute2)); -// DossierAttributes attributes2 = dossierAttributesController.setDossierAttributes(project.getDossierId(), dossierAttributes2); -// -// assertThat(attributes2.getDossierAttributeList().get(0).getDossierAttributeId()).isEqualTo("dossierAttributeId2"); -// assertThat(attributes2.getDossierAttributeList().size()).isEqualTo(1); -// -// -// } -// -// @Test -// public void testAddOrUpdateDossierAttribute() { -// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(); -// -// DossierAttributeConfig dossierAttributeConfig = DossierAttributeConfig.builder().id("dossierAttributeId").label("label").editable(true).type(DossierAttributeConfig.DossierAttributeType.TEXT).placeholder("placeholder").build(); -// List dossierAttributesConfigList = new ArrayList<>(); -// dossierAttributesConfigList.add(dossierAttributeConfig); -// -// dossierAttributesConfig.setDossierAttributeConfigs(dossierAttributesConfigList); -// -// when(dossierAttributesConfigClient.getDossierAttributes("ruleSetId")).thenReturn(dossierAttributesConfig); -// -// Dossier project = dossierController.addDossier((new DossierRequest("p2", "pd1", "user", "ruleSetId", -// Collections.singleton("u1"), Collections.singleton("u1"), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime.now(), null, true))); -// -// DossierAttribute dossierAttribute = new DossierAttribute("dossierAttributeId", "dossierAttributeValue"); -// -// DossierAttributes dossierAttributes = dossierAttributesController.addOrUpdateDossierAttribute(project.getDossierId(), dossierAttribute); -// -// assertThat(dossierAttributes.getDossierAttributeList().get(0).getDossierAttributeId()).isEqualTo("dossierAttributeId"); -// assertThat(dossierAttributes.getDossierAttributeList().size()).isEqualTo(1); -// -// -// DossierAttributeConfig dossierAttributeConfigUpdate = DossierAttributeConfig.builder().id("dossierAttributeIdUpdate").label("label").editable(true).type(DossierAttributeConfig.DossierAttributeType.TEXT).placeholder("placeholder").build(); -// dossierAttributesConfigList.add(dossierAttributeConfigUpdate); -// -// dossierAttributesConfig.setDossierAttributeConfigs(dossierAttributesConfigList); -// -// when(dossierAttributesConfigClient.getDossierAttributes("ruleSetId")).thenReturn(dossierAttributesConfig); -// -// DossierAttribute dossierAttributeUpdate = new DossierAttribute("dossierAttributeIdUpdate", "dossierAttributeValueUpdate"); -// DossierAttributes dossierAttributesUpdate = dossierAttributesController.addOrUpdateDossierAttribute(project.getDossierId(), dossierAttributeUpdate); -// -// assertThat(dossierAttributesUpdate.getDossierAttributeList().get(1).getDossierAttributeId()).isEqualTo(dossierAttributeUpdate.getDossierAttributeId()); -// assertThat(dossierAttributesUpdate.getDossierAttributeList().get(1).getValue()).isEqualTo(dossierAttributeUpdate.getValue()); -// assertThat(dossierAttributesUpdate.getDossierAttributeList().size()).isEqualTo(2); -// } -// -// @Test -// public void deleteDossierAttributes() { -// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(); -// -// DossierAttributeConfig dossierAttributeConfig = DossierAttributeConfig.builder().id("dossierAttributeId").label("label").editable(true).type(DossierAttributeConfig.DossierAttributeType.TEXT).placeholder("placeholder").build(); -// List dossierAttributesConfigList = new ArrayList<>(); -// dossierAttributesConfigList.add(dossierAttributeConfig); -// -// dossierAttributesConfig.setDossierAttributeConfigs(dossierAttributesConfigList); -// -// when(dossierAttributesConfigClient.getDossierAttributes("ruleSetId")).thenReturn(dossierAttributesConfig); -// -// Dossier project = dossierController.addDossier((new DossierRequest("p2", "pd1", "user", "ruleSetId", -// Collections.singleton("u1"), Collections.singleton("u1"), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime.now(), null, true))); -// -// DossierAttribute dossierAttribute = new DossierAttribute("dossierAttributeId", "dossierAttributeValue"); -// -// DossierAttributes dossierAttributes = new DossierAttributes(); -// dossierAttributes.setDossierAttributeList(Arrays.asList(dossierAttribute)); -// DossierAttributes attributes = dossierAttributesController.setDossierAttributes(project.getDossierId(), dossierAttributes); -// -// dossierAttributesController.deleteDossierAttribute(project.getDossierId(), dossierAttribute.getDossierAttributeId()); -// -// DossierAttributes attributes1 = dossierAttributesController.getDossierAttributes(project.getDossierId()); -// -// assertThat(attributes1.getDossierAttributeList()).isEmpty(); -// } -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierDeleteTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierDeleteTest.java deleted file mode 100644 index 9c25dc36a..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/DossierDeleteTest.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -import com.amazonaws.services.s3.transfer.model.UploadResult; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.commons.persistence.cassandra.CassandraSession; -import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileRequest; -import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.file.management.v1.server.controller.DossierController; -import com.iqser.red.service.file.management.v1.server.controller.UploadController; -import com.iqser.red.service.file.management.v1.server.service.FileStatusService; -import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; -import org.assertj.core.util.Sets; -import org.hibernate.engine.spi.Status; -import org.junit.Before; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.util.*; - -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -public class DossierDeleteTest extends AbstractFileManagementServerServiceTest { -// -// @Autowired -// private DossierController dossierController; -// -// @Autowired -// private UploadController uploadController; -// -// @Autowired -// private FileStatusPersistenceService fileStatusPersistenceService; -// -// @Autowired -// private FileStatusService fileStatusService; -// -// @Autowired -// private CassandraSession cassandraSession; -// -// @Autowired -// private ObjectMapper objectMapper; -// -// @Before -// public void before() { -// PdfTronOptimizeResponse response = new PdfTronOptimizeResponse(); -// response.setDocument(new byte[]{1, 2, 3, 4, 5}); -// when(pdfTronRedactionClient.optimize(any())).thenReturn(response); -// } -// -// @Test -// public void testUploadForDossierAndCleanup() { -// -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// Dossier dossier = dossierController.addDossier(new DossierRequest("p2", "pd1", u1, "123", Collections.singleton(u1), -// Collections.singleton(u1), -// Sets.newHashSet(), -// Sets.newHashSet(), -// OffsetDateTime -// .now(), -// templateIds, -// true)); -// UploadResult uploadResult = uploadController.upload(BinaryFileRequest.builder() -// .data(new byte[]{1, 2, 3, 4, 5}) -// .filename("f1") -// .dossierId(dossier.getDossierId()) -// .build()); -// -// assertThat(fileStatusService.getDossierStatus(dossier.getDossierId())).hasSize(1); -// assertThat(fileStatusPersistenceService.getStatus(dossier.getDossierId(), uploadResult.getFileId())).isNotNull(); -// -// dossierController.delete(dossier.getDossierId()); -// -// assertThat(fileStatusService.getDossierStatus(dossier.getDossierId())).hasSize(1); -// assertThat(Status.DELETED).isEqualTo(fileStatusService.getDossierStatus(dossier.getDossierId()) -// .get(0) -// .getStatus()); -// -// -// } -// -// @Test -// public void testRecreateDossier() { -// -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// -// Dossier dossier = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// dossierController.delete(dossier.getDossierId()); -// -// Dossier dossierRecreated = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// assertThat(dossierRecreated).isNotNull(); -// } -// -// @Test -// public void testGetSoftDeletedDossiers() { -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// -// Dossier dossier = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// String dossierId = dossier.getDossierId(); -// dossierController.delete(dossierId); -// -// assertThat(dossierController.getSoftDeletedDossiers().size()).isEqualTo(1); -// assertThat(dossierController.getSoftDeletedDossiers().get(0).getDossierName()).isEqualTo("p1"); -// assertThat(dossierController.getSoftDeletedDossiers().get(0).getDossierId()).isEqualTo(dossierId); -// -// } -// -// -// @Test -// public void testHardDeleteDossiers() { -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// Dossier dossier = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// String dossierId = dossier.getDossierId(); -// dossierController.delete(dossierId); -// -// -// String u2 = "u2"; -// Set templateIds2 = new HashSet<>(Arrays.asList("templateId3", "templateId4")); -// Dossier dossier2 = dossierController.addDossier(new DossierRequest("p2", "pd2", u2, "1234", -// Collections.singleton(u2), Collections.singleton(u2), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds2, true)); -// -// String dossierId2 = dossier2.getDossierId(); -// dossierController.delete(dossierId2); -// -// assertThat(dossierController.getSoftDeletedDossiers().size()).isEqualTo(2); -// -// Set dossierIdsToHardDelete = new HashSet<>(); -// dossierIdsToHardDelete.add(dossierId); -// dossierIdsToHardDelete.add(dossierId2); -// dossierController.hardDeleteDossiers(dossierIdsToHardDelete); -// -// assertThat(dossierController.getSoftDeletedDossiers().size()).isEqualTo(0); -// } -// -// @Test -// public void testUndeleteDossiers() { -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// Dossier dossier = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// String dossierId = dossier.getDossierId(); -// dossierController.delete(dossierId); -// -// -// String u2 = "u2"; -// Set templateIds2 = new HashSet<>(Arrays.asList("templateId3", "templateId4")); -// Dossier dossier2 = dossierController.addDossier(new DossierRequest("p2", "pd2", u2, "1234", -// Collections.singleton(u2), Collections.singleton(u2), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds2, true)); -// -// String dossierId2 = dossier2.getDossierId(); -// dossierController.delete(dossierId2); -// -// assertThat(dossierController.getSoftDeletedDossiers().size()).isEqualTo(2); -// -// Set dossierIdsToUndelete = new HashSet<>(); -// dossierIdsToUndelete.add(dossierId); -// dossierIdsToUndelete.add(dossierId2); -// dossierController.undeleteDossiers(dossierIdsToUndelete); -// -// assertThat(dossierController.getSoftDeletedDossiers().size()).isEqualTo(0); -// } -// -// -// @Test -// public void testSoftAndUndeleteFileAndDossier() throws InterruptedException { -// String u1 = "u1"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2")); -// Dossier dossier = dossierController.addDossier(new DossierRequest("p1", "pd1", u1, "123", -// Collections.singleton(u1), Collections.singleton(u1), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime -// .now(), templateIds, true)); -// -// -// FileStatusPersistenceService fileStatusPersistenceService = new FileStatusPersistenceService(cassandraSession, objectMapper); -// String dossierId = dossier.getDossierId(); -// String fileId = "fileId"; -// String fileId2 = "fileId2"; -// String fileId3 = "fileId3"; -// fileStatusPersistenceService.createStatus(dossierId, fileId, "filename", "uploader"); -// fileStatusPersistenceService.createStatus(dossierId, fileId2, "filename2", "uploader"); -// fileStatusPersistenceService.createStatus(dossierId, fileId3, "filename3", "uploader3"); -// -// OffsetDateTime now = OffsetDateTime.now().withNano(0); -// -// fileStatusPersistenceService.softDelete(dossierId, fileId, now); -// -// var fileStatus = fileStatusPersistenceService.getStatus(dossierId, fileId); -// -// Thread.sleep(1500); -// dossierController.delete(dossierId); -// -// assertThatThrownBy( () -> dossierController.getDossierById(dossierId)).isInstanceOf(DossierNotFoundException.class); -// -// List deletedDossiers = dossierController.getSoftDeletedDossiers(); -// -// assertThat(deletedDossiers.size()).isEqualTo(1); -// -// Set dossierSet = new HashSet<>(); -// dossierSet.add(dossierId); -// dossierController.undeleteDossiers(dossierSet); -// -// assertThat(dossierController.getSoftDeletedDossiers()).isEmpty(); -// assertThat(dossierController.getDossierById(dossierId)).isNotNull(); -// -// assertThat(fileStatusPersistenceService.getStatus(dossierId).size()).isEqualTo(3); -// assertThat(fileStatusPersistenceService.getStatus(dossierId, fileId).getStatus()).isEqualTo(Status.DELETED); -// -// } -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/End2EndAPITest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/End2EndAPITest.java new file mode 100644 index 000000000..19245c86c --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/End2EndAPITest.java @@ -0,0 +1,96 @@ +package com.iqser.red.service.file.management.v1.server.integration; + +import com.google.common.collect.Sets; +import com.iqser.red.service.file.management.v1.server.controller.*; +import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronOptimizeResponse; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.BinaryFileRequest; +import com.iqser.red.service.persistence.service.v1.api.model.CreateOrUpdateDossierRequest; +import com.iqser.red.service.persistence.service.v1.api.model.CreateOrUpdateDossierTemplateRequest; +import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ViewedPage; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierStatus; +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.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; + +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.List; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import static org.mockito.Mockito.when; + +public class End2EndAPITest extends AbstractFileManagementServerServiceTest { + + @Autowired + private ViewedPagesController viewedPagesController; + @Autowired + private UploadController uploadController; + @Autowired + private DossierController dossierController; + @Autowired + private DossierTemplateController dossierTemplateController; + @Autowired + private ViewedPagesPersistenceService viewedPagesPersistenceService; + @Autowired + private FileStatusController fileStatusController; + + @Before + public void before() { + when(pdfTronRedactionClient.optimize(Mockito.any())).thenReturn(new PdfTronOptimizeResponse("test".getBytes())); + } + + + @Test + public void testViewedPages() { + + + CreateOrUpdateDossierTemplateRequest cru = new CreateOrUpdateDossierTemplateRequest(); + cru.setCreatedBy("1"); + cru.setDateAdded(OffsetDateTime.now()); + cru.setDateModified(OffsetDateTime.now()); + cru.setDownloadFileTypes(Sets.newHashSet(DownloadFileType.ORIGINAL)); + cru.setName("Template 1"); + cru.setDescription("Template 1"); + cru.setRequestingUser("1"); + cru.setValidFrom(OffsetDateTime.now()); + cru.setValidTo(OffsetDateTime.now()); + + DossierTemplate result = dossierTemplateController.createOrUpdateDossierTemplate(cru); + + CreateOrUpdateDossierRequest request = new CreateOrUpdateDossierRequest(); + request.setDate(OffsetDateTime.now()); + request.setApproverIds(Sets.newHashSet("1", "2", "3")); + request.setDossierName("Test Dossier"); + request.setOwnerId("1"); + request.setStatus(DossierStatus.ACTIVE); + request.setDossierTemplateId(result.getId()); + var dossier = dossierController.addDossier(request); + + BinaryFileRequest upload = new BinaryFileRequest("test".getBytes(StandardCharsets.UTF_8), "test.pdf", dossier.getId(), "1"); + JSONPrimitive uploadResult = uploadController.upload(upload); + + var file = fileStatusController.getFileStatus(dossier.getId(), uploadResult.getValue()); + var fileId = file.getId(); + + viewedPagesController.addPage(fileId, "1", 1); + viewedPagesController.addPage(fileId, "1", 2); + viewedPagesController.addPage(fileId, "1", 3); + + viewedPagesController.removePage(fileId, "1", 1); + + List viewedPages = viewedPagesController.getViewedPages(fileId, "1"); + assertThat(viewedPages.stream().map(viewedPage -> viewedPage.getId().getPage())).containsExactlyInAnyOrder(2, 3); + + viewedPagesPersistenceService.deleteForFile(fileId); + viewedPages = viewedPagesController.getViewedPages(fileId, "1"); + assertThat(viewedPages).isEmpty(); + + } + + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ExcludeFromAnalysisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ExcludeFromAnalysisTest.java deleted file mode 100644 index a2e3f71d5..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ExcludeFromAnalysisTest.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -import com.google.common.collect.Sets; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.file.management.v1.server.controller.FileStatusController; -import com.iqser.red.service.file.management.v1.server.service.ExcludeFromAnalysisService; -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 org.junit.Before; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.util.List; -import java.util.Set; - -import static org.assertj.core.api.AssertionsForClassTypes.assertThat; - -public class ExcludeFromAnalysisTest extends AbstractFileManagementServerServiceTest { - -// @Autowired -// private ExcludeFromAnalysisService excludeFromAnalysisService; -// -// @Autowired -// private FileStatusPersistenceService fileStatusPersistenceService; -// -// @Autowired -// private DossierPersistenceService dossierPersistenceService; -// -// @Autowired -// private FileStatusController fileStatusController; -// -// -// @Before -// public void before() { -// var dossier = CreateOrUpdateDossierRequest.builder() -// .dossierName("test") -// .date(OffsetDateTime.now()) -// .ownerId("123") -// .description("test") -// .dossierTemplateId("123") -// .memberIds(Sets.newHashSet("123")).build(); -// dossierPersistenceService.insert(dossier); -// -// } -// -// @Test -// public void testExclusion() { -// -// fileStatusPersistenceService.createStatus("1", "1", "test.pdf", "test"); -// fileStatusPersistenceService.setCurrentReviewer("1", "1", "test", "test"); -// fileStatusPersistenceService.updateStatus("1", "1", Status.UNDER_REVIEW); -// excludeFromAnalysisService.toggleExclusion("1", "1", true); -// -// var status = fileStatusPersistenceService.getStatus("1", "1"); -// assertThat(status.isExcluded()).isEqualTo(true); -// -// excludeFromAnalysisService.toggleExclusion("1", "1", false); -// status = fileStatusPersistenceService.getStatus("1", "1"); -// assertThat(status.isExcluded()).isEqualTo(false); -// assertThat(Status.PROCESSING).isEqualTo(status.getStatus()); -// } -// -// -// @Test -// public void testExcludePage() { -// -// fileStatusPersistenceService.createStatus("1", "1", "test.pdf", "test"); -// -// fileStatusController.excludePages("1", "1", PageExclusionRequest.builder().pageRanges(List.of( -// PageRange.builder().startPage(1).endPage(1).build() -// , PageRange.builder().startPage(3).endPage(7).build())).build()); -// -// -// var status = fileStatusPersistenceService.getStatus("1", "1"); -// assertThat(status.getExcludedPages()).isEqualTo(Set.of(1, 3, 4, 5, 6, 7)); -// -// fileStatusController.includePages("1", "1", PageExclusionRequest.builder().pageRanges(List.of( -// PageRange.builder().startPage(4).endPage(5).build() -// , PageRange.builder().startPage(19).endPage(19).build())).build()); -// status = fileStatusPersistenceService.getStatus("1", "1"); -// assertThat(status.getExcludedPages()).isEqualTo(Set.of(1, 3, 6, 7)); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/FileAttributesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/FileAttributesTest.java deleted file mode 100644 index 92d426738..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/FileAttributesTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -public class FileAttributesTest extends AbstractFileManagementServerServiceTest { - -// @Autowired -// private FileAttributesController fileAttributesController; -// -// @Autowired -// private FileStatusPersistenceService fileStatusPersistenceService; -// -// @Autowired -// private DossierController dossierController; -// -// @Test -// public void testFileAttributes() throws IOException { -// -// FileAttributesConfig configuredFileAttributes = new FileAttributesConfig(); -// configuredFileAttributes.setDelimiter(","); -// configuredFileAttributes.setFilenameMappingColumnHeaderName("Path"); -// configuredFileAttributes.setFileAttributeConfigs((List.of( -// new FileAttributeConfig("RegulatoryUtilityId", "Regulatory Utility", "Regulatory Utility Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder"), -// new FileAttributeConfig("DataEvaluationRecordId", "Data Evaluation Record", "DataEvaluation Record Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder"), -// new FileAttributeConfig("RegulatoryReleasedId", "Regulatory Released", "Regulatory Released Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder")))); -// when(fileAttributesConfigClient.getFileAttributes("123")).thenReturn(configuredFileAttributes); -// -// Dossier dossier = dossierController.addDossier(new DossierRequest("p2", "pd1", "user", "123", Collections.singleton("u1"), -// Collections.singleton("u1"), -// Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime.now(), null, true)); -// -// fileStatusPersistenceService.createStatus(dossier.getId(), "fileId1", "Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the.pdf", "uploader"); -// fileStatusPersistenceService.createStatus(dossier.getId(), "fileId2", "Lambda-cyhalothrin - EU AIR5 - MCA Section 5 - Toxicology.pdf", "uploader"); -// fileStatusPersistenceService.createStatus(dossier.getId(), "fileId3", "Lambda-cyhalothrin - EU AIR5 - LCA Section 5 Reference List.pdf", "uploader"); -// fileStatusPersistenceService.createStatus(dossier.getId(), "fileId4", "Lambda-cyhalothrin - EU AIR5 - LCA Section 4 Reference List.pdf", "uploader"); -// -// ClassPathResource exportSummeryResource = new ClassPathResource("files/export_summary.csv"); -// -// ImportCsvRequest importCsvRequest = ImportCsvRequest.builder() -// .csvFile(IOUtils.toByteArray(exportSummeryResource.getInputStream())) -// .build(); -// -// ImportCsvResponse importCsvResponse = fileAttributesController.importCsv(dossier.getId(), importCsvRequest); -// -// assertThat(importCsvResponse.getAffectedFileIds().size()).isEqualTo(4); -// -// List dossierFileStatus = fileStatusPersistenceService.getStatus(dossier.getId()); -// -// dossierFileStatus.forEach(status -> { -// assertThat(status.getFileAttributes().getAttributeIdToValue().size()).isEqualTo(3); -// }); -// } -// -// -// @Test -// public void testSetFileAttributes() { -// -// FileAttributesConfig configuredFileAttributes = new FileAttributesConfig(); -// configuredFileAttributes.setDelimiter(","); -// configuredFileAttributes.setFilenameMappingColumnHeaderName("Path"); -// configuredFileAttributes.setFileAttributeConfigs((List.of(new FileAttributeConfig("RegulatoryUtilityId", "Regulatory Utility", "Regulatory Utility Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder"), -// new FileAttributeConfig("DataEvaluationRecordId", "DataEvaluation Record", "DataEvaluation Record Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder"), -// new FileAttributeConfig("RegulatoryReleasedId", "Regulatory Released", "Regulatory Released Label", true, false, FileAttributeConfig.FileAttributeType.TEXT, "placeholder")))); -// -// when(fileAttributesConfigClient.getFileAttributes("123")).thenReturn(configuredFileAttributes); -// -// Dossier dossier = dossierController.addDossier(new DossierRequest("p2", "pd1", "user", "123", -// Collections.singleton("u1"), Collections.singleton("u1"), Sets.newHashSet(), Sets.newHashSet(), OffsetDateTime.now(), null, true)); -// -// fileStatusPersistenceService.createStatus(dossier.getId(), "fileId1", "Lambda-cyhalothrin - EU AIR5 - Document A - Statement of the.pdf", "uploader"); -// -// Map attributeIdToValue = new HashMap<>(); -// attributeIdToValue.put("RegulatoryUtilityId", "Something"); -// com.iqser.red.service.file.management.v1.api.model.data.dossier.FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); -// fileAttributesController.setFileAttributes(dossier.getId(), "fileId1", fileAttributes); -// -// File status = fileStatusPersistenceService.getStatus(dossier.getId(), "fileId1"); -// -// assertThat(status.getFileAttributes().getAttributeIdToValue().size()).isEqualTo(1); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ManualRedactionTest.java deleted file mode 100644 index 9fe6d987a..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ManualRedactionTest.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -import com.google.common.collect.Sets; -import com.iqser.red.service.file.management.v1.server.controller.ManualRedactionController; -import com.iqser.red.service.file.management.v1.server.service.FileService; -import com.iqser.red.service.file.management.v1.server.service.ManualRedactionService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.model.*; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.IdRemoval; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualRedactionEntry; -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.Point; -import com.iqser.red.service.redaction.v1.model.Rectangle; -import com.iqser.red.service.redaction.v1.model.Status; -import org.junit.Before; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.util.List; - -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; - -public class ManualRedactionTest extends AbstractFileManagementServerServiceTest { - -// @Autowired -// private ManualRedactionController manualRedactionController; -// @Autowired -// private ManualRedactionService manualRedactionService; -// @Autowired -// private FileStatusPersistenceService fileStatusPersistenceService; -// @Autowired -// private DossierPersistenceService dossierPersistenceService; -// @Autowired -// private FileService fileService; -// -// @Before -// public void before() { -// var dossier = Dossier.builder() -// .dossierName("test") -// .dossierId("dossierId") -// .date(OffsetDateTime.now()) -// .ownerId("123") -// .description("test") -// .dossierTemplateId("123") -// .memberIds(Sets.newHashSet("123")).build(); -// dossierPersistenceService.insert(dossier); -// -// } -// -// @Test -// public void testAddRedaction() { -// -// String dossierId = "dossierId"; -// String fileId = "FileId"; -// -// fileStatusPersistenceService.createStatus(dossierId, fileId, "dummy.pdf", "uploader"); -// -// AddRedactionRequest addRedactionRequest = AddRedactionRequest.builder() -// .user("TEST_USER") -// .type("name") -// .value("O'Loughlin C.K.") -// .reason("Manual Redaction") -// .status(Status.REQUESTED) -// .positions(List.of(new Rectangle(new Point(375.61096f, 241.282f), 7.648041f, 43.72262f, 1), new Rectangle(new Point(384.83517f, 241.282f), 7.648041f, 17.043358f, 1))) -// .comment("This is a comment test") -// .addToDictionary(false) -// .build(); -// -// ManualAddResponse manualAddResponse = manualRedactionController.addAddRedaction(dossierId, fileId, addRedactionRequest); -// -// ManualRedactionEntry manualRedactionEntry = manualRedactionController.getAddRedaction(fileId, manualAddResponse.getAnnotationId()); -// -// assertThat(manualRedactionEntry.getStatus()).isEqualTo(Status.REQUESTED); -// -// manualRedactionController.updateAddRedactionStatus(dossierId, fileId, manualAddResponse.getAnnotationId(), new com.iqser.red.service.file.management.v1.api.model.UpdateStatusRequest(Status.APPROVED, false)); -// -// manualRedactionEntry = manualRedactionController.getAddRedaction(fileId, manualAddResponse.getAnnotationId()); -// -// assertThat(manualRedactionEntry.getStatus()).isEqualTo(Status.APPROVED); -// -// manualRedactionController.addComment(dossierId, fileId, manualAddResponse.getAnnotationId(), CommentRequest.builder() -// .text("Second") -// .user("TEST_USER") -// .build()); -// -// ManualRedactions manualRedactions = manualRedactionController.getManualRedactions(dossierId, fileId); -// -// assertThat(manualRedactions.getComments().get(manualAddResponse.getAnnotationId()).size()).isEqualTo(2); -// -// fileService.softDeleteFile(dossierId, fileId, OffsetDateTime.now()); -// -// manualRedactions = manualRedactionController.getManualRedactions(dossierId, fileId); -// -// assertThat(manualRedactions.getEntriesToAdd()).isEmpty(); -// assertThat(manualRedactions.getIdsToRemove()).isEmpty(); -// -// File fileStatus = fileStatusPersistenceService.getStatus(dossierId, fileId); -// assertThat(fileStatus.getLastManualRedaction()).isNotNull(); -// -// } -// -// @Test -// public void testRemoveRedaction() { -// -// String dossierId = "dossierId"; -// String fileId = "FileId"; -// String annotationId = "annotationId"; -// -// fileStatusPersistenceService.createStatus(dossierId, fileId, "dummy.pdf", "uploader"); -// -// RemoveRedactionRequest removeRedactionRequest = RemoveRedactionRequest.builder() -// .annotationId(annotationId) -// .user("TEST_USER") -// .comment("This is a comment test") -// .removeFromDictionary(false) -// .status(Status.REQUESTED) -// .build(); -// -// ManualAddResponse manualAddResponse = manualRedactionController.addRemoveRedaction(dossierId, fileId, removeRedactionRequest); -// -// IdRemoval idRemoval = manualRedactionController.getRemoveRedaction(fileId, manualAddResponse.getAnnotationId()); -// -// assertThat(idRemoval.getStatus()).isEqualTo(Status.REQUESTED); -// -// manualRedactionController.updateRemoveRedactionStatus(dossierId, fileId, manualAddResponse.getAnnotationId(), new com.iqser.red.service.file.management.v1.api.model.UpdateStatusRequest(Status.DECLINED, false)); -// -// manualRedactionController.addComment(dossierId, fileId, manualAddResponse.getAnnotationId(), CommentRequest.builder() -// .text("Second") -// .user("TEST_USER") -// .build()); -// -// ManualRedactions manualRedactions = manualRedactionController.getManualRedactions(dossierId, fileId); -// -// assertThat(manualRedactions.getComments().get(manualAddResponse.getAnnotationId()).size()).isEqualTo(2); -// assertThat(manualRedactions.getIdsToRemove().iterator().next().getStatus()).isEqualTo(Status.DECLINED); -// -// File fileStatus = fileStatusPersistenceService.getStatus(dossierId, fileId); -// assertThat(fileStatus.getLastManualRedaction()).isNotNull(); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ReportTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ReportTemplateTest.java deleted file mode 100644 index b2f6ecf1d..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ReportTemplateTest.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.ReportTemplate; -import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateDownload; -import com.iqser.red.service.persistence.service.v1.api.model.ReportTemplateUploadRequest; -import com.iqser.red.service.persistence.management.v1.processor.exception.FileNotFoundException; -import com.iqser.red.service.file.management.v1.server.controller.ReportTemplateController; -import com.iqser.red.storage.commons.service.StorageService; -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.IOException; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -public class ReportTemplateTest extends AbstractFileManagementServerServiceTest { - -// -// @Autowired -// private StorageService storageService; -// -// -// @Autowired -// private ReportTemplateController reportTemplateController; -// -// -// @Test -// public void testReportTemplateUpload() throws IOException { -// String dossierTemplateId = "dossierTemplateId"; -// String template = "template"; -// byte[] templateByteArray = template.getBytes(); -// ReportTemplateUploadRequest reportTemplateUploadRequest = ReportTemplateUploadRequest.builder().template(templateByteArray) -// .dossierTemplateId(dossierTemplateId).fileName("templateName").build(); -// -// ReportTemplate reportTemplate = reportTemplateController.uploadTemplate(reportTemplateUploadRequest); -// -// List reportTemplates = reportTemplateController.getAvailableReportTemplates(dossierTemplateId); -// -// String storageId = reportTemplates.get(0).getStorageId(); -// -// byte[] file = IOUtils.toByteArray(storageService.getObject(storageId).getInputStream()); -// assertThat(file).isEqualTo(templateByteArray); -// assertThat(reportTemplate.getStorageId()).isEqualTo(storageId); -// } -// -// @Test -// public void testGetAvailableReportTemplates() { -// String dossierTemplateId = "dossierTemplateId"; -// String template = "template"; -// byte[] templateByteArray = template.getBytes(); -// ReportTemplateUploadRequest reportTemplateUploadRequest = ReportTemplateUploadRequest.builder().template(templateByteArray) -// .dossierTemplateId(dossierTemplateId).fileName("templateName").build(); -// -// ReportTemplate reportTemplate = reportTemplateController.uploadTemplate(reportTemplateUploadRequest); -// -// List reportTemplates = reportTemplateController.getAvailableReportTemplates(reportTemplate.getDossierTemplateId()); -// -// assertThat(reportTemplate.getTemplateId()).isEqualTo(reportTemplates.get(0).getTemplateId()); -// } -// -// @Test -// public void testDownloadReportTemplate() { -// String dossierTemplateId = "dossierTemplateId"; -// String template = "template"; -// byte[] templateByteArray = template.getBytes(); -// ReportTemplateUploadRequest reportTemplateUploadRequest = ReportTemplateUploadRequest.builder().template(templateByteArray) -// .dossierTemplateId(dossierTemplateId).fileName("templateName").build(); -// -// ReportTemplate reportTemplate = reportTemplateController.uploadTemplate(reportTemplateUploadRequest); -// -// ReportTemplateDownload reportTemplateDownload = reportTemplateController.downloadReportTemplate(reportTemplate.getDossierTemplateId(), reportTemplate.getTemplateId()); -// -// assertThat(reportTemplateDownload.getFile()).isEqualTo(templateByteArray); -// } -// -// @Test -// public void testDeleteTemplate() { -// String dossierTemplateId = "dossierTemplateId"; -// String template = "template"; -// byte[] templateByteArray = template.getBytes(); -// ReportTemplateUploadRequest reportTemplateUploadRequest = ReportTemplateUploadRequest.builder().template(templateByteArray) -// .dossierTemplateId(dossierTemplateId).fileName("templateName").build(); -// -// ReportTemplate reportTemplate = reportTemplateController.uploadTemplate(reportTemplateUploadRequest); -// -// reportTemplateController.deleteTemplate(reportTemplate.getDossierTemplateId(), reportTemplate.getTemplateId()); -// -// assertThat(reportTemplateController.getAvailableReportTemplates(reportTemplate.getDossierTemplateId())).isEmpty(); -// assertThatThrownBy(() -> reportTemplateController.downloadReportTemplate(dossierTemplateId, reportTemplate.getTemplateId())).isInstanceOf( -// FileNotFoundException.class); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ViewedPagesTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ViewedPagesTest.java deleted file mode 100644 index 5fe1419e4..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/integration/ViewedPagesTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.integration; - -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ViewedPage; -import com.iqser.red.service.file.management.v1.server.controller.ViewedPagesController; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.List; - -import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; - -public class ViewedPagesTest extends AbstractFileManagementServerServiceTest { - - @Autowired - private ViewedPagesController viewedPagesController; - @Autowired - private ViewedPagesPersistenceService viewedPagesPersistenceService; - - @Test - public void testViewedPages() { - - String fileId = "fileId"; - String role = "reviewer"; - - viewedPagesController.addPage(fileId, role, 1); - viewedPagesController.addPage(fileId, role, 2); - viewedPagesController.addPage(fileId, role, 3); - - viewedPagesController.removePage(fileId, role, 1); - - List viewedPages = viewedPagesController.getViewedPages(fileId, role); - assertThat(viewedPages.stream().map(viewedPage -> viewedPage.getId().getPage())).containsExactlyInAnyOrder(2, 3); - - viewedPagesPersistenceService.deleteForFile(fileId); - viewedPages = viewedPagesController.getViewedPages(fileId, role); - assertThat(viewedPages).isEmpty(); - - } - - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DossierServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DossierServiceTest.java deleted file mode 100644 index dc9ff39d9..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DossierServiceTest.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.service; - -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; -import org.assertj.core.util.Sets; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import java.time.OffsetDateTime; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class DossierServiceTest { -// -// @InjectMocks -// private DossierService dossierService; -// -// @Mock -// private DossierPersistenceService dossierPersistenceService; -// -// @Test -// public void testAddAndUpdateDossier() { -// -// String userId = "user id"; -// Set templateIds = new HashSet<>(Arrays.asList("templateId1", "templateId2", "templateId3")); -// DossierRequest dossierRequest = new DossierRequest("DossierName", -// null, -// userId, -// "123", -// Collections.singleton(userId), -// Collections.singleton(userId), -// Sets.newHashSet(), -// Sets.newHashSet(), -// OffsetDateTime.now(), -// templateIds, -// true); -// Dossier expected = Dossier.builder() -// .dossierName(dossierRequest.getDossierName()) -// .description("") -// .build(); -// when(dossierPersistenceService.findByDossierId(anyString())).thenReturn(expected); -// Dossier dossier = dossierService.addDossier(dossierRequest); -// assertThat(dossier.getDossierName()).isEqualTo(expected.getDossierName()); -// assertThat(dossier.getDescription()).isEqualTo(expected.getDescription()); -// -// String updatedName = "Updated name"; -// dossierRequest.setDossierName(updatedName); -// expected.setDossierName(updatedName); -// expected.setDossierTemplateId("123"); -// when(dossierPersistenceService.findByDossierId(any())).thenReturn(expected); -// assertThat(dossierService.updateDossier(dossierRequest, expected.getDossierId())).isEqualTo(expected); -// -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DownloadCleanupServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DownloadCleanupServiceTest.java deleted file mode 100644 index b6313809b..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/DownloadCleanupServiceTest.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.service; - -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; -import com.iqser.red.service.persistence.service.v1.api.model.data.download.DownloadStatus; -import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierStatus; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; -import com.iqser.red.service.file.management.v1.server.service.download.DownloadCleanupService; -import com.iqser.red.service.file.management.v1.server.settings.FileManagementServiceSettings; -import com.iqser.red.storage.commons.service.StorageService; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import java.time.OffsetDateTime; -import java.util.List; - -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.*; - -@RunWith(MockitoJUnitRunner.class) -public class DownloadCleanupServiceTest { - - -// -// @Mock -// private DossierService dossierService; -// -// @Mock -// private DownloadStatusPersistenceService downloadStatusPersistenceService; -// -// @Mock -// private StorageService storageService; -// -// @Mock -// private FileManagementServiceSettings settings; -// -// @InjectMocks -// private DownloadCleanupService downloadCleanupService; -// -// -// @Test -// public void testDeleteAfterLastDownload() { -// DownloadStatus downloadStatus = new DownloadStatus("userId", -// "storageID", -// "dossierId", -// "filename", -// "mimeType", -// DownloadStatusValue.GENERATING, -// OffsetDateTime.now().minusHours(13), -// OffsetDateTime.now().minusHours(9), -// null, -// 10); -// -// Dossier expected = Dossier.builder() -// .dossierId("p1") -// .dossierName("pName") -// .status(DossierStatus.DELETED) -// .build(); -// -// when(settings.getDownloadCleanupFetchLimit()).thenReturn(200); -// when(settings.getDownloadCleanupDownloadFilesHours()).thenReturn(8); -// -// when(downloadStatusPersistenceService.getStatus(settings.getDownloadCleanupFetchLimit())).thenReturn(List.of(downloadStatus)); -// -// downloadCleanupService.processDocuments(); -// -// verify(storageService, times(1)).deleteObject(downloadStatus.getStorageId()); -// } -// -// @Test -// public void testDeleteWithoutDownload() { -// DownloadStatus downloadStatus = new DownloadStatus("userId", -// "storageID", -// "dossierId", -// "filename", -// "mimeType", -// DownloadStatusValue.READY, -// OffsetDateTime.now().minusHours(73), -// null, -// null, -// 10); -// -// Dossier expected = Dossier.builder() -// .dossierId("p1") -// .dossierName("pName") -// .status(DossierStatus.DELETED) -// .build(); -// -// when(settings.getDownloadCleanupFetchLimit()).thenReturn(200); -// when(settings.getDownloadCleanupNotDownloadFilesHours()).thenReturn(72); -// -// when(downloadStatusPersistenceService.getStatus(settings.getDownloadCleanupFetchLimit())).thenReturn(List.of(downloadStatus)); -// -// downloadCleanupService.processDocuments(); -// -// verify(storageService, times(1)).deleteObject(downloadStatus.getStorageId()); -// } -// -// @Test -// public void testDossierNotExists() { -// -// DownloadStatus downloadStatus = new DownloadStatus("userId", -// "storageID", -// "dossierId", -// "filename", -// "mimeType", -// DownloadStatusValue.GENERATING, -// OffsetDateTime.now().minusHours(2), -// OffsetDateTime.now().minusHours(1), -// null, -// 10); -// -// Dossier expected = Dossier.builder() -// .dossierId("p1") -// .dossierName("pName") -// .status(DossierStatus.DELETED) -// .build(); -// -// when(settings.getDownloadCleanupFetchLimit()).thenReturn(200); -// when(settings.getDownloadCleanupDownloadFilesHours()).thenReturn(8); -// -// when(dossierService.getDossierById(anyString())).thenReturn(expected); -// when(downloadStatusPersistenceService.getStatus(settings.getDownloadCleanupFetchLimit())).thenReturn(List.of(downloadStatus)); -// -// downloadCleanupService.processDocuments(); -// -// verify(storageService, times(1)).deleteObject(downloadStatus.getStorageId()); -// } -// -// @Test -// public void testNoDelete() { -// -// DownloadStatus downloadStatus = new DownloadStatus("userId", -// "storageID", -// "dossierId", -// "filename", -// "mimeType", -// DownloadStatusValue.GENERATING, -// OffsetDateTime.now().minusHours(2), -// OffsetDateTime.now().minusHours(1), -// null, -// 10); -// -// Dossier expected = Dossier.builder() -// .dossierId("p1") -// .dossierName("pName") -// .status(DossierStatus.ACTIVE) -// .build(); -// -// when(settings.getDownloadCleanupFetchLimit()).thenReturn(200); -// when(settings.getDownloadCleanupDownloadFilesHours()).thenReturn(8); -// -// when(dossierService.getDossierById(anyString())).thenReturn(expected); -// when(downloadStatusPersistenceService.getStatus(settings.getDownloadCleanupFetchLimit())).thenReturn(List.of(downloadStatus)); -// -// downloadCleanupService.processDocuments(); -// -// verify(storageService, times(0)).deleteObject(downloadStatus.getStorageId()); -// } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/LicenseReportServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/LicenseReportServiceTest.java deleted file mode 100644 index e07bab322..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/file/management/v1/server/service/LicenseReportServiceTest.java +++ /dev/null @@ -1,310 +0,0 @@ -package com.iqser.red.service.file.management.v1.server.service; - -import org.junit.runner.RunWith; -import org.mockito.junit.MockitoJUnitRunner; - -@RunWith(MockitoJUnitRunner.class) -public class LicenseReportServiceTest { -// -// @InjectMocks -// private LicenseReportService licenseReportService; -// -// @Mock -// private FileStatusService fileStatusService; -// -// @Mock -// private DossierService dossierService; -// -// @Test -// public void testRedactionReportService() { -// -// LicenseReportRequest licenseReportRequest = new LicenseReportRequest(); -// -// LicenseReport licenseReport = licenseReportService.getLicenseReport(licenseReportRequest, 0, 20); -// assertThat(licenseReport.getData()).hasSize(15); -// assertThat(licenseReport.getNumberOfAnalyzedFiles()).isEqualTo(15); -// assertThat(licenseReport.getNumberOfAnalyses()).isEqualTo(13); -// assertThat(licenseReport.getNumberOfAnalyzedPages()).isEqualTo(1020); -// assertThat(licenseReport.getRequestId()).isNotEmpty(); -// assertThat(licenseReport.getNumberOfDossiers()).isEqualTo(5); -// assertThat(licenseReport.getStartDate()).isEqualTo(licenseReportRequest.getStartDate()); -// assertThat(licenseReport.getEndDate()).isEqualTo(licenseReportRequest.getEndDate()); -// assertThat(licenseReport.getNumberOfOcrFiles()).isEqualTo(1); -// assertThat(licenseReport.getNumberOfOcrPages()).isEqualTo(30); -// -// } -// -// @Test -// public void testRedactionReportServiceWithPagination() { -// -// LicenseReportRequest licenseReportRequest = new LicenseReportRequest(); -// -// LicenseReport licenseReport = licenseReportService.getLicenseReport(licenseReportRequest, 0, 10); -// assertThat(licenseReport.getData()).hasSize(10); -// assertThat(licenseReport.getNumberOfAnalyzedFiles()).isEqualTo(15); -// assertThat(licenseReport.getNumberOfAnalyses()).isEqualTo(13); -// assertThat(licenseReport.getNumberOfAnalyzedPages()).isEqualTo(1020); -// assertThat(licenseReport.getRequestId()).isNotEmpty(); -// assertThat(licenseReport.getNumberOfDossiers()).isEqualTo(5); -// assertThat(licenseReport.getStartDate()).isEqualTo(licenseReportRequest.getStartDate()); -// assertThat(licenseReport.getEndDate()).isEqualTo(licenseReportRequest.getEndDate()); -// -// // make sure the service set a request id -// assertThat(licenseReportRequest.getRequestId()).isNotEmpty(); -// -// LicenseReportRequest consecutiveRequest = new LicenseReportRequest(); -// consecutiveRequest.setRequestId(licenseReportRequest.getRequestId()); -// -// licenseReport = licenseReportService.getLicenseReport(consecutiveRequest, 10, 10); -// assertThat(licenseReport.getData()).hasSize(5); -// assertThat(licenseReport.getNumberOfAnalyzedFiles()).isEqualTo(15); -// assertThat(licenseReport.getNumberOfAnalyses()).isEqualTo(13); -// assertThat(licenseReport.getNumberOfAnalyzedPages()).isEqualTo(1020); -// assertThat(licenseReport.getRequestId()).isNotEmpty(); -// assertThat(licenseReport.getNumberOfDossiers()).isEqualTo(5); -// assertThat(licenseReport.getStartDate()).isEqualTo(licenseReportRequest.getStartDate()); -// assertThat(licenseReport.getEndDate()).isEqualTo(licenseReportRequest.getEndDate()); -// -// } -// -// @Before -// public void stubTests() { -// -// List allDossiers = new ArrayList<>(); -// Dossier dossier1 = Dossier.builder() -// .dossierId("dossier1") -// .dossierName("dossier1name") -// .build(); -// Dossier dossier2 = Dossier.builder() -// .dossierId("dossier2") -// .dossierName("dossier2name") -// .build(); -// Dossier dossier3 = Dossier.builder() -// .dossierId("dossier3") -// .dossierName("dossier3name") -// .build(); -// Dossier dossier4 = Dossier.builder() -// .dossierId("dossier4") -// .dossierName("dossier4name") -// .build(); -// Dossier dossier5 = Dossier.builder() -// .dossierId("dossier5") -// .dossierName("dossier5name") -// .build(); -// allDossiers.add(dossier1); -// allDossiers.add(dossier2); -// allDossiers.add(dossier3); -// allDossiers.add(dossier4); -// allDossiers.add(dossier5); -// -// when(dossierService.getAllDossiers()).thenReturn(allDossiers); -// List dossier1Status = new ArrayList<>(); -// File fileStatus1Dossier1 = File.builder() -// .dossierId(dossier1.getDossierId()) -// .fileId("file1dossier1") -// .filename("file1dossier1.exe") -// .status(Status.UNASSIGNED) -// .numberOfPages(100) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(2) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus2Dossier1 = File.builder() -// .dossierId(dossier1.getDossierId()) -// .fileId("file2roject1") -// .filename("file2dossier1.exe") -// .status(Status.UNASSIGNED) -// .numberOfPages(100) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(2) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus3Dossier1 = File.builder() -// .dossierId(dossier1.getDossierId()) -// .fileId("file3dossier1") -// .filename("file3dossier1.exe") -// .status(Status.UNASSIGNED) -// .numberOfPages(100) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(2) -// .currentReviewer("reviewer1") -// .build(); -// dossier1Status.add(fileStatus1Dossier1); -// dossier1Status.add(fileStatus2Dossier1); -// dossier1Status.add(fileStatus3Dossier1); -// List dossier2Status = new ArrayList<>(); -// File fileStatus1Dossier2 = File.builder() -// .dossierId(dossier2.getDossierId()) -// .fileId("file1dossier2") -// .filename("file1dossier2.exe") -// .status(Status.PROCESSING) -// .numberOfPages(120) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(1) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus2Dossier2 = File.builder() -// .dossierId(dossier2.getDossierId()) -// .fileId("file2dossier2") -// .filename("file2dossier2.exe") -// .status(Status.PROCESSING) -// .numberOfPages(120) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(1) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus3Dossier2 = File.builder() -// .dossierId(dossier2.getDossierId()) -// .fileId("file3dossier2") -// .filename("file3dossier2.exe") -// .status(Status.PROCESSING) -// .numberOfPages(120) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(OffsetDateTime.now().minusMinutes(1)) -// .deleted(null) -// .numberOfAnalyses(1) -// .currentReviewer("reviewer1") -// .build(); -// dossier2Status.add(fileStatus1Dossier2); -// dossier2Status.add(fileStatus2Dossier2); -// dossier2Status.add(fileStatus3Dossier2); -// List dossier3Status = new ArrayList<>(); -// File fileStatus1Dossier3 = File.builder() -// .dossierId(dossier3.getDossierId()) -// .fileId("file1dossier3") -// .filename("file1dossier3.exe") -// .status(Status.ERROR) -// .numberOfPages(60) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus2Dossier3 = File.builder() -// .dossierId(dossier3.getDossierId()) -// .fileId("file2dossier3") -// .filename("file2dossier3.exe") -// .status(Status.ERROR) -// .numberOfPages(60) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus3Dossier3 = File.builder() -// .dossierId(dossier3.getDossierId()) -// .fileId("file3dossier3") -// .filename("file3dossier3.exe") -// .status(Status.ERROR) -// .numberOfPages(60) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// dossier3Status.add(fileStatus1Dossier3); -// dossier3Status.add(fileStatus2Dossier3); -// dossier3Status.add(fileStatus3Dossier3); -// List dossier4Status = new ArrayList<>(); -// File fileStatus1Dossier4 = File.builder() -// .dossierId(dossier4.getDossierId()) -// .fileId("file1dossier4") -// .filename("file1dossier4.exe") -// .status(Status.UNPROCESSED) -// .numberOfPages(30) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus2Dossier4 = File.builder() -// .dossierId(dossier4.getDossierId()) -// .fileId("file2dossier4") -// .filename("file2dossier4.exe") -// .status(Status.UNPROCESSED) -// .numberOfPages(30) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus3Dossier4 = File.builder() -// .dossierId(dossier4.getDossierId()) -// .fileId("file3dossier4") -// .filename("file3dossier4.exe") -// .status(Status.UNPROCESSED) -// .numberOfPages(30) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(0) -// .currentReviewer("reviewer1") -// .build(); -// dossier4Status.add(fileStatus1Dossier4); -// dossier4Status.add(fileStatus2Dossier4); -// dossier4Status.add(fileStatus3Dossier4); -// List dossier5Status = new ArrayList<>(); -// File fileStatus1Dossier5 = File.builder() -// .dossierId(dossier5.getDossierId()) -// .fileId("file1dossier5") -// .filename("file1dossier5.exe") -// .status(Status.REPROCESS) -// .numberOfPages(30) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(1) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus2Dossier5 = File.builder() -// .dossierId(dossier5.getDossierId()) -// .fileId("file2dossier5") -// .filename("file2dossier5.exe") -// .status(Status.REPROCESS) -// .numberOfPages(30) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(1) -// .currentReviewer("reviewer1") -// .build(); -// File fileStatus3Dossier5 = File.builder() -// .dossierId(dossier5.getDossierId()) -// .fileId("file3dossier5") -// .filename("file3dossier5.exe") -// .status(Status.UNASSIGNED) -// .numberOfPages(30) -// .lastOCRTime(OffsetDateTime.now()) -// .added(OffsetDateTime.now().minusMinutes(2)) -// .lastUpdated(null) -// .deleted(null) -// .numberOfAnalyses(2) -// .currentReviewer("reviewer1") -// .build(); -// dossier5Status.add(fileStatus1Dossier5); -// dossier5Status.add(fileStatus2Dossier5); -// dossier5Status.add(fileStatus3Dossier5); -// -// when(fileStatusService.getDossierStatus(dossier1.getDossierId())).thenReturn(dossier1Status); -// when(fileStatusService.getDossierStatus(dossier2.getDossierId())).thenReturn(dossier2Status); -// when(fileStatusService.getDossierStatus(dossier3.getDossierId())).thenReturn(dossier3Status); -// when(fileStatusService.getDossierStatus(dossier4.getDossierId())).thenReturn(dossier4Status); -// when(fileStatusService.getDossierStatus(dossier5.getDossierId())).thenReturn(dossier5Status); -// -// } -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml index e32759c83..d29fc432a 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml +++ b/persistence-service-v1/persistence-service-server-v1/src/test/resources/application.yml @@ -1,7 +1,3 @@ -cassandra: - keyspace-name: file_management_service - migrations-location: 'classpath:cassandra/migrations/*.cql' - spring: rabbitmq: host: ${RABBITMQ_HOST:localhost} @@ -21,9 +17,16 @@ spring: cache: maxSize: 60 + redaction-service.url: "http://redaction-service-v1:8080" configuration-service.url: "http://configuration-service-v1:8080" pdftron-redaction-service.url: "http://pdftron-redaction-service-v1:8080" redaction-report-service.url: "http://redaction-report-service-v1:8080" +search-service.url: "http://search-service-v1:8080" +storage: + bucket-name: 'redaction' + endpoint: 'http://localhost:9000' + key: minioadmin + secret: minioadmin