From 33876b761d258b8f0af569bb2a5696b8a4098bb6 Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Thu, 24 Mar 2022 08:13:50 +0100 Subject: [PATCH 1/3] RED-3450 Added digital kms signature --- persistence-service-image-v1/pom.xml | 2 +- .../persistence-service-api-v1/pom.xml | 2 +- .../configuration/DigitalSignatureKms.java | 30 +++++++ .../configuration/DigitalSignatureType.java | 5 ++ .../resources/DigitalSignatureResource.java | 45 +++++++++- .../persistence-service-processor-v1/pom.xml | 2 +- .../DigitalSignatureKmsEntity.java | 45 ++++++++++ .../DigitalSignatureTypeEntity.java | 36 ++++++++ .../service/DigitalSignatureKmsService.java | 78 +++++++++++++++++ .../service/DigitalSignatureService.java | 36 ++++---- .../service/DigitalSignatureTypeService.java | 34 ++++++++ .../DigitalSignatureKmsRepository.java | 9 ++ .../DigitalSignatureTypeRepository.java | 9 ++ .../persistence-service-server-v1/pom.xml | 18 +++- .../DigitalSignatureController.java | 72 +++++++++++++-- .../16-digital-signature-kms.changelog.yaml | 49 +++++++++++ .../db/changelog/db.changelog-master.yaml | 4 +- .../tests/DigitalSignatureTest.java | 82 ++++++++++++++++-- .../src/test/resources/files/TestCert.cer | Bin 0 -> 759 bytes persistence-service-v1/pom.xml | 4 +- pom.xml | 2 +- 21 files changed, 523 insertions(+), 41 deletions(-) create mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureKms.java create mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureType.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureTypeService.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureKmsRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureTypeRepository.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/resources/files/TestCert.cer diff --git a/persistence-service-image-v1/pom.xml b/persistence-service-image-v1/pom.xml index add742e67..c867ab34c 100644 --- a/persistence-service-image-v1/pom.xml +++ b/persistence-service-image-v1/pom.xml @@ -12,7 +12,7 @@ persistence-service-image-v1 com.iqser.red.service - 1.0-SNAPSHOT + Banana pom diff --git a/persistence-service-v1/persistence-service-api-v1/pom.xml b/persistence-service-v1/persistence-service-api-v1/pom.xml index 074f7c766..6dab0d30a 100644 --- a/persistence-service-v1/persistence-service-api-v1/pom.xml +++ b/persistence-service-v1/persistence-service-api-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - 1.0-SNAPSHOT + Banana 4.0.0 diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureKms.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureKms.java new file mode 100644 index 000000000..c96b7da69 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureKms.java @@ -0,0 +1,30 @@ +package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class DigitalSignatureKms { + + @NonNull + private String certificateName; + @NonNull + private String kmsKeyId; + @NonNull + private String kmsServiceEndpoint; + @NonNull + private String kmsRegion; + @NonNull + private String kmsAccessKey; + @NonNull + private String kmsSecretKey; + @NonNull + private byte[] certificate; + +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureType.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureType.java new file mode 100644 index 000000000..8972765b7 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/configuration/DigitalSignatureType.java @@ -0,0 +1,5 @@ +package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration; + +public enum DigitalSignatureType { + CERTIFICATE, KMS, HSM; +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DigitalSignatureResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DigitalSignatureResource.java index dd5138e6c..2c72d300b 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DigitalSignatureResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DigitalSignatureResource.java @@ -1,28 +1,69 @@ package com.iqser.red.service.persistence.service.v1.api.resources; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; @ResponseStatus(value = HttpStatus.OK) public interface DigitalSignatureResource { String DIGITAL_SIGNATURE_PATH = "/digital-signature"; + String DIGITAL_SIGNATURE_TYPE_PATH = DIGITAL_SIGNATURE_PATH + "/type"; + String DIGITAL_SIGNATURE_KMS_PATH = DIGITAL_SIGNATURE_PATH + "/kms"; + + String DIGITAL_SIGNATURE_TYPE = "digitalSignatureType"; + String DIGITAL_SIGNATURE_TYPE_VARIABLE = "/{" + DIGITAL_SIGNATURE_TYPE + "}"; + + + @GetMapping(value = DIGITAL_SIGNATURE_TYPE_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + DigitalSignatureType getActiveDigitalSignatureType(); + + + @ResponseStatus(HttpStatus.NO_CONTENT) + @PostMapping(value = DIGITAL_SIGNATURE_TYPE_PATH + DIGITAL_SIGNATURE_TYPE_VARIABLE) + void setActiveDigitalSignatureType(@PathVariable(DIGITAL_SIGNATURE_TYPE) DigitalSignatureType digitalSignatureType); + @ResponseStatus(HttpStatus.CREATED) @PostMapping(value = DIGITAL_SIGNATURE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) DigitalSignature saveDigitalSignature(@RequestBody DigitalSignature digitalSignatureModel); + @ResponseStatus(HttpStatus.CREATED) @PutMapping(value = DIGITAL_SIGNATURE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) void updateDigitalSignature(@RequestBody DigitalSignature digitalSignatureModel); + @GetMapping(value = DIGITAL_SIGNATURE_PATH, produces = MediaType.APPLICATION_JSON_VALUE) DigitalSignature getDigitalSignature(); + @ResponseStatus(HttpStatus.NO_CONTENT) @DeleteMapping(value = DIGITAL_SIGNATURE_PATH) void deleteDigitalSignature(); + + @ResponseStatus(HttpStatus.CREATED) + @PostMapping(value = DIGITAL_SIGNATURE_KMS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + DigitalSignatureKms saveDigitalSignatureKms(@RequestBody DigitalSignatureKms digitalSignature); + + + @GetMapping(value = DIGITAL_SIGNATURE_KMS_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + DigitalSignatureKms getDigitalSignatureKms(); + + + @ResponseStatus(HttpStatus.NO_CONTENT) + @DeleteMapping(value = DIGITAL_SIGNATURE_KMS_PATH) + void deleteDigitalSignatureKms(); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/pom.xml b/persistence-service-v1/persistence-service-processor-v1/pom.xml index bcca653f1..1a6ca6342 100644 --- a/persistence-service-v1/persistence-service-processor-v1/pom.xml +++ b/persistence-service-v1/persistence-service-processor-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - 1.0-SNAPSHOT + Banana 4.0.0 diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java new file mode 100644 index 000000000..03359c647 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureKmsEntity.java @@ -0,0 +1,45 @@ +package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +import com.iqser.red.service.persistence.service.v1.api.utils.SuppressFBWarnings; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "digital_signature_kms") +@SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") +public class DigitalSignatureKmsEntity { + + public final static String ID = "CONFIG_ID"; + + @Id + private final String id = DigitalSignatureKmsEntity.ID; + @Column + private String certificateName; + @Column + private String kmsKeyId; + @Column + private String kmsServiceEndpoint; + @Column + private String kmsRegion; + @Column + private String kmsAccessKey; + @Column + private String kmsSecretKey; + @Column + @Lob + private byte[] certificate; + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java new file mode 100644 index 000000000..7e7a0762b --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/DigitalSignatureTypeEntity.java @@ -0,0 +1,36 @@ +package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; +import com.iqser.red.service.persistence.service.v1.api.utils.SuppressFBWarnings; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "digital_signature_type") +@SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") +public class DigitalSignatureTypeEntity { + + public final static String ID = "CONFIG_ID"; + + @Id + private final String id = DigitalSignatureTypeEntity.ID; + + @Column + @Enumerated(EnumType.STRING) + private DigitalSignatureType digitalSignatureType; + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java new file mode 100644 index 000000000..741f1f7ca --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java @@ -0,0 +1,78 @@ +package com.iqser.red.service.persistence.management.v1.processor.service; + +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureKmsRepository; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class DigitalSignatureKmsService { + + private final EncryptionDecryptionService encryptionDecryptionService; + private final DigitalSignatureKmsRepository digitalSignatureKmsRepository; + private final DigitalSignatureTypeService digitalSignatureTypeService; + private final PDFTronRedactionClient pdfTronRedactionClient; + + + public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKmsEntity digitalSignature) { + + log.info("Validate digital KMS signature before saving"); + pdfTronRedactionClient.testDigitalSignatureKms(convert(digitalSignature, DigitalSignatureKms.class)); + log.info("Digital KMS signature is valid"); + + encrypt(digitalSignature); + var result = digitalSignatureKmsRepository.save(digitalSignature); + digitalSignatureTypeService.setActiveDigitalSignatureType(DigitalSignatureType.KMS); + decrypt(result); + return result; + } + + + public DigitalSignatureKmsEntity getDigitalSignature() { + + return digitalSignatureKmsRepository.findById(DigitalSignatureKmsEntity.ID).map(digitalSignature -> { + DigitalSignatureKmsEntity result = new DigitalSignatureKmsEntity(); + BeanUtils.copyProperties(digitalSignature, result); + decrypt(result); + return result; + }).orElseThrow(() -> new NotFoundException("Digital KMS Signature Not found")); + } + + + public void deleteDigitalSignature() { + + digitalSignatureKmsRepository.deleteById(DigitalSignatureEntity.ID); + } + + + private void encrypt(DigitalSignatureKmsEntity digitalSignature) { + + digitalSignature.setCertificate(encryptionDecryptionService.encrypt(digitalSignature.getCertificate())); + digitalSignature.setKmsKeyId(encryptionDecryptionService.encrypt(digitalSignature.getKmsKeyId())); + digitalSignature.setKmsAccessKey(encryptionDecryptionService.encrypt(digitalSignature.getKmsAccessKey())); + digitalSignature.setKmsSecretKey(encryptionDecryptionService.encrypt(digitalSignature.getKmsSecretKey())); + } + + + private void decrypt(DigitalSignatureKmsEntity digitalSignature) { + + digitalSignature.setCertificate(encryptionDecryptionService.decrypt(digitalSignature.getCertificate())); + digitalSignature.setKmsKeyId(encryptionDecryptionService.decrypt(digitalSignature.getKmsKeyId())); + digitalSignature.setKmsAccessKey(encryptionDecryptionService.decrypt(digitalSignature.getKmsAccessKey())); + digitalSignature.setKmsSecretKey(encryptionDecryptionService.decrypt(digitalSignature.getKmsSecretKey())); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java index 5c4f17ef5..beed5d1f6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureService.java @@ -1,20 +1,22 @@ package com.iqser.red.service.persistence.management.v1.processor.service; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import javax.transaction.Transactional; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; - -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; - @Slf4j @Service @@ -24,12 +26,17 @@ public class DigitalSignatureService { private final EncryptionDecryptionService encryptionDecryptionService; private final DigitalSignatureRepository digitalSignatureRepository; private final PDFTronRedactionClient pdfTronRedactionClient; + private final DigitalSignatureTypeService digitalSignatureTypeService; + public void deleteDigitalSignature() { + digitalSignatureRepository.deleteById(DigitalSignatureEntity.ID); } + public DigitalSignatureEntity getDigitalSignature() { + return digitalSignatureRepository.findById(DigitalSignatureEntity.ID).map(digitalSignature -> { DigitalSignatureEntity result = new DigitalSignatureEntity(); BeanUtils.copyProperties(digitalSignature, result); @@ -39,6 +46,7 @@ public class DigitalSignatureService { }).orElseThrow(() -> new NotFoundException("Digital Signature Not found")); } + public DigitalSignatureEntity saveDigitalSignature(DigitalSignatureEntity digitalSignature) { try { @@ -49,23 +57,21 @@ public class DigitalSignatureService { digitalSignature.setPrivateKey(encryptionDecryptionService.encrypt(digitalSignature.getPrivateKey())); digitalSignature.setPassword(encryptionDecryptionService.encrypt(digitalSignature.getPassword())); - return digitalSignatureRepository.save(digitalSignature); + var result = digitalSignatureRepository.save(digitalSignature); + digitalSignatureTypeService.setActiveDigitalSignatureType(DigitalSignatureType.CERTIFICATE); + return result; } + @Transactional public void updateDigitalSignature(DigitalSignatureEntity digitalSignatureModel) { - int updateCount = digitalSignatureRepository.updateDigitalSignature(DigitalSignatureEntity.ID, - digitalSignatureModel.getReason(), - digitalSignatureModel.getLocation(), - digitalSignatureModel.getContactInfo(), - digitalSignatureModel.getCertificateName()); + int updateCount = digitalSignatureRepository.updateDigitalSignature(DigitalSignatureEntity.ID, digitalSignatureModel.getReason(), digitalSignatureModel.getLocation(), digitalSignatureModel.getContactInfo(), digitalSignatureModel.getCertificateName()); if (updateCount == 0) { throw new NotFoundException("Digital Signature Not found"); } - + digitalSignatureTypeService.setActiveDigitalSignatureType(DigitalSignatureType.CERTIFICATE); } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureTypeService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureTypeService.java new file mode 100644 index 000000000..d5e2ae920 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureTypeService.java @@ -0,0 +1,34 @@ +package com.iqser.red.service.persistence.management.v1.processor.service; + +import org.springframework.stereotype.Service; + +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureTypeEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureTypeRepository; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +@RequiredArgsConstructor +public class DigitalSignatureTypeService { + + private final DigitalSignatureTypeRepository digitalSignatureTypeRepository; + + + public DigitalSignatureType getActiveDigitalSignatureType() { + + return digitalSignatureTypeRepository.findById(DigitalSignatureTypeEntity.ID) + .map(DigitalSignatureTypeEntity::getDigitalSignatureType) + .orElseThrow(() -> new NotFoundException("Digital Signature Type is not defined")); + } + + + public void setActiveDigitalSignatureType(DigitalSignatureType digitalSignatureType) { + + digitalSignatureTypeRepository.save(DigitalSignatureTypeEntity.builder().digitalSignatureType(digitalSignatureType).build()); + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureKmsRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureKmsRepository.java new file mode 100644 index 000000000..72f93f326 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureKmsRepository.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; + +public interface DigitalSignatureKmsRepository extends JpaRepository { + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureTypeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureTypeRepository.java new file mode 100644 index 000000000..a014af975 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DigitalSignatureTypeRepository.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureTypeEntity; + +public interface DigitalSignatureTypeRepository extends JpaRepository { + +} diff --git a/persistence-service-v1/persistence-service-server-v1/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml index e466f986d..c30daf30b 100644 --- a/persistence-service-v1/persistence-service-server-v1/pom.xml +++ b/persistence-service-v1/persistence-service-server-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - 1.0-SNAPSHOT + Banana 4.0.0 @@ -22,10 +22,22 @@ com.iqser.red.service search-service-api-v1 + + + com.iqser.red.service + pdftron-redaction-service-api-v1 + + com.iqser.red.service redaction-report-service-api-v1 + + + com.iqser.red.service + pdftron-redaction-service-api-v1 + + com.iqser.red.service @@ -35,6 +47,10 @@ com.iqser.red.service persistence-service-api-v1 + + com.iqser.red.service + pdftron-redaction-service-api-v1 + diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DigitalSignatureController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DigitalSignatureController.java index c6bb6d654..6e1b7dc96 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DigitalSignatureController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DigitalSignatureController.java @@ -1,40 +1,96 @@ package com.iqser.red.service.peristence.v1.server.controller; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; -import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureService; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; -import com.iqser.red.service.persistence.service.v1.api.resources.DigitalSignatureResource; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureKmsService; +import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureService; +import com.iqser.red.service.persistence.management.v1.processor.service.DigitalSignatureTypeService; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; +import com.iqser.red.service.persistence.service.v1.api.resources.DigitalSignatureResource; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j @RestController @RequiredArgsConstructor public class DigitalSignatureController implements DigitalSignatureResource { + private final DigitalSignatureTypeService digitalSignatureTypeService; private final DigitalSignatureService digitalSignatureService; + private final DigitalSignatureKmsService digitalSignatureKmsService; + + + @Override + public DigitalSignatureType getActiveDigitalSignatureType() { + + return digitalSignatureTypeService.getActiveDigitalSignatureType(); + + } + + + @Override + public void setActiveDigitalSignatureType(@PathVariable(DIGITAL_SIGNATURE_TYPE) DigitalSignatureType digitalSignatureType) { + + digitalSignatureTypeService.setActiveDigitalSignatureType(digitalSignatureType); + + } + @Override public DigitalSignature saveDigitalSignature(@RequestBody DigitalSignature digitalSignature) { + return convert(digitalSignatureService.saveDigitalSignature(convert(digitalSignature, DigitalSignatureEntity.class)), DigitalSignature.class); } @Override public void updateDigitalSignature(@RequestBody DigitalSignature digitalSignature) { + digitalSignatureService.updateDigitalSignature(convert(digitalSignature, DigitalSignatureEntity.class)); } + @Override public DigitalSignature getDigitalSignature() { + return convert(digitalSignatureService.getDigitalSignature(), DigitalSignature.class); } @Override public void deleteDigitalSignature() { + digitalSignatureService.deleteDigitalSignature(); } + + + @Override + public DigitalSignatureKms saveDigitalSignatureKms(@RequestBody DigitalSignatureKms digitalSignature) { + + return convert(digitalSignatureKmsService.saveDigitalSignature(convert(digitalSignature, DigitalSignatureKmsEntity.class)), DigitalSignatureKms.class); + } + + + @Override + public DigitalSignatureKms getDigitalSignatureKms() { + + return convert(digitalSignatureKmsService.getDigitalSignature(), DigitalSignatureKms.class); + } + + + @Override + public void deleteDigitalSignatureKms() { + + digitalSignatureKmsService.deleteDigitalSignature(); + } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml new file mode 100644 index 000000000..db7f13be0 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml @@ -0,0 +1,49 @@ +databaseChangeLog: + - changeSet: + id: add-digital-signature-kms + author: philipp + changes: + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + primaryKeyName: digital_signature_type_pkey + name: id + type: VARCHAR(255) + - column: + name: digital_signature_type + type: VARCHAR(255) + tableName: digital_signature_type + - createTable: + columns: + - column: + constraints: + nullable: false + primaryKey: true + primaryKeyName: digital_signature_kms_pkey + name: id + type: VARCHAR(255) + - column: + name: certificate_name + type: VARCHAR(255) + - column: + name: kms_key_id + type: VARCHAR(255) + - column: + name: kms_service_endpoint + type: VARCHAR(255) + - column: + name: kms_region + type: VARCHAR(255) + - column: + name: kms_access_key + type: VARCHAR(255) + - column: + name: kms_secret_key + type: VARCHAR(255) + - column: + name: certificate + type: OID + tableName: digital_signature_kms \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index e1c4dd304..987eeea6e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -37,5 +37,5 @@ databaseChangeLog: file: db/changelog/14-add-redaction-source-id.changelog.yaml - include: file: db/changelog/15-dossier-remove-dossier-state.changelog.yaml - - + - include: + file: db/changelog/16-digital-signature-kms.changelog.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java index 75c583aee..2135fb6e6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DigitalSignatureTest.java @@ -1,20 +1,27 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import java.nio.file.Files; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; + import com.iqser.red.service.peristence.v1.server.integration.client.DigitalSignatureClient; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignature; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; + import feign.FeignException; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import static org.assertj.core.api.Assertions.assertThat; - +import lombok.SneakyThrows; public class DigitalSignatureTest extends AbstractPersistenceServerServiceTest { @Autowired private DigitalSignatureClient digitalSignatureClient; + @Test public void testDigitalSignature() { @@ -39,13 +46,11 @@ public class DigitalSignatureTest extends AbstractPersistenceServerServiceTest { assertThat(savedDigitalSignature.getPassword()).isNotEqualTo(loadedSignature.getPassword()); assertThat(savedDigitalSignature.getPrivateKey()).isNotEqualTo(loadedSignature.getPrivateKey()); - digitalSignature.setReason("new test"); digitalSignatureClient.updateDigitalSignature(digitalSignature); loadedSignature = digitalSignatureClient.getDigitalSignature(); assertThat(loadedSignature.getReason()).isEqualTo("new test"); - digitalSignatureClient.deleteDigitalSignature(); try { digitalSignatureClient.getDigitalSignature(); @@ -53,6 +58,69 @@ public class DigitalSignatureTest extends AbstractPersistenceServerServiceTest { assertThat(e.status()).isEqualTo(404); } + } + + + @Test + @SneakyThrows + public void testDigitalSignatureKms() { + + // Arrange + final String certificateName = "certificateName"; + final String kmsKeyId = "kmsKeyId"; + final String kmsAccessKey = "kmsAccessKey"; + final String kmsRegion = "kmsRegion"; + final String kmsSecretKey = "kmsSecretKey"; + final String kmsServiceEndpoint = "kmsServiceEndpoint"; + final byte[] certificate = Files.readAllBytes(new ClassPathResource("files/TestCert.cer").getFile().toPath()); + + DigitalSignatureKms digitalSignature = DigitalSignatureKms.builder() + .certificateName(certificateName) + .kmsKeyId(kmsKeyId) + .kmsAccessKey(kmsAccessKey) + .kmsRegion(kmsRegion) + .kmsSecretKey(kmsSecretKey) + .kmsServiceEndpoint(kmsServiceEndpoint) + .certificate(certificate) + .build(); + + // Act and Assert: Get not existing + try { + digitalSignatureClient.getDigitalSignatureKms(); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } + + // Act and Assert: Save + var savedDigitalSignature = digitalSignatureClient.saveDigitalSignatureKms(digitalSignature); + + assertThat(savedDigitalSignature.getKmsAccessKey()).isEqualTo(digitalSignature.getKmsAccessKey()); + assertThat(savedDigitalSignature.getKmsKeyId()).isEqualTo(digitalSignature.getKmsKeyId()); + assertThat(savedDigitalSignature.getKmsRegion()).isEqualTo(digitalSignature.getKmsRegion()); + assertThat(savedDigitalSignature.getKmsSecretKey()).isEqualTo(digitalSignature.getKmsSecretKey()); + assertThat(savedDigitalSignature.getCertificateName()).isEqualTo(digitalSignature.getCertificateName()); + assertThat(savedDigitalSignature.getKmsServiceEndpoint()).isEqualTo(digitalSignature.getKmsServiceEndpoint()); + assertThat(savedDigitalSignature.getCertificate()).isEqualTo(digitalSignature.getCertificate()); + + // Act and Assert: Get existing + var loadedDigitalSignature = digitalSignatureClient.getDigitalSignatureKms(); + + assertThat(loadedDigitalSignature.getKmsAccessKey()).isEqualTo(digitalSignature.getKmsAccessKey()); + assertThat(loadedDigitalSignature.getKmsKeyId()).isEqualTo(digitalSignature.getKmsKeyId()); + assertThat(loadedDigitalSignature.getKmsRegion()).isEqualTo(digitalSignature.getKmsRegion()); + assertThat(loadedDigitalSignature.getKmsSecretKey()).isEqualTo(digitalSignature.getKmsSecretKey()); + assertThat(loadedDigitalSignature.getCertificateName()).isEqualTo(digitalSignature.getCertificateName()); + assertThat(loadedDigitalSignature.getKmsServiceEndpoint()).isEqualTo(digitalSignature.getKmsServiceEndpoint()); + assertThat(loadedDigitalSignature.getCertificate()).isEqualTo(digitalSignature.getCertificate()); + + // Act and Assert: Delete + digitalSignatureClient.deleteDigitalSignatureKms(); + try { + digitalSignatureClient.getDigitalSignatureKms(); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(404); + } } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/TestCert.cer b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/TestCert.cer new file mode 100644 index 0000000000000000000000000000000000000000..4f98abe36c1d9fa46e4244ebbe5c1a1ce2d80892 GIT binary patch literal 759 zcmXqLV)|^*#CUrFGZP~d6B}ba_l#WI!X;;2AN~HbZ&UcoT~4~LPj`ktbY|J@UmIZUFLkDu zt(!NZSM$nAbw&LZ%?B*jJqWnZVrV7)o}Wj_cx$=s_1%H@OwG!E9}89xn>|1AV)1*m z?dz^D)IV34UnLPf`GrUN%GL>AO)vHJ8MoHi`$Xz#+|zi}w(sGr8>cU@^V=S*V0dd+ z_|m3EWdiG+-n7WonWu}sSDv+dlz&c4o~t`=^ZPkRyB65hq_HlyWLqQD-MIJF0~3?% zcQ@b6+PZX_*^OM4^AkLTC;CiNydHdvVZ+CACT2zk#>K)0f(HD+*pL-wWc<&LHfsU?pR=UusTQ)%k#Ac;HPF?AtxoD?Lq&s=woyZfT{P}uId z=ARBSuGasXd{xhI`H4UsiS^UkiZ!~j*OhlN?mqtT(7LYQn_gO+DCH_#%cL?TRO-Vw zCtC~84;=w9l~cN`+@xMMb!&RBlet}3`9l7TqCnP8dy6x_E>%r3x$)x~t1>_P&hp@* zmkFWMcGtIFP=6xJ`^Jpn!_h_)+nG}w4_%uoJ1f-ZPWy)$m9DE!A256$u=QlG-pd!K zUT7JuU;CiQIlI_t6^qB=jGgLXHIH`b?Gt~jFEn2~W=&>Ci2A#Q`oDx%#>-sK)2_I+ YqTsz&+U7$osf#7p`JZ20T5Vkm0BD^l82|tP literal 0 HcmV?d00001 diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 1d4b67c71..021a1991e 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -14,7 +14,7 @@ com.iqser.red.service persistence-service-v1 - 1.0-SNAPSHOT + Banana pom @@ -27,7 +27,7 @@ 3.76.0 2.26.0 - 3.44.0 + Apple 3.19.0 diff --git a/pom.xml b/pom.xml index 218958163..f2f7e4c6c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ persistence-service com.iqser.red.service - 1.0-SNAPSHOT + Banana pom From e76a0c6adeb5e9ed0cad3737422551908edbe65a Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Thu, 24 Mar 2022 14:35:08 +0100 Subject: [PATCH 2/3] Merge branch 'master' into RED-3450 # Conflicts: # persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml --- .../dossier/DossierStatus.java | 5 - .../api/model/dossiertemplate/type/Type.java | 11 ++- .../v1/api/resources/DownloadResource.java | 16 ++-- .../api/resources/RedactionLogResource.java | 11 ++- .../entity/configuration/TypeEntity.java | 8 +- .../service/DossierTemplateCloneService.java | 37 ++++++- .../DictionaryPersistenceService.java | 7 +- .../DossierPersistenceService.java | 44 ++++++--- .../repository/DossierRepository.java | 9 +- .../controller/DictionaryController.java | 54 ++++++----- .../server/controller/DossierController.java | 36 ++++--- .../server/controller/DownloadController.java | 32 +++---- .../controller/RedactionLogController.java | 20 ++-- .../AnalysisFlagsCalculationService.java | 22 +++-- .../v1/server/service/IndexingService.java | 1 - .../server/service/RedactionLogService.java | 7 +- .../download/DownloadPreparationService.java | 21 ++-- ...-has-dictionary-to-entities.changelog.yaml | 14 +++ ...> 17-digital-signature-kms.changelog.yaml} | 0 .../db/changelog/db.changelog-master.yaml | 4 +- .../integration/service/TypeProvider.java | 14 +-- .../tests/DossierTemplateStatsTest.java | 33 ++++--- .../tests/DossierTemplateTest.java | 96 +++++++++++++------ .../server/integration/tests/DossierTest.java | 24 ++--- .../integration/tests/RedactionLogTest.java | 13 +-- 25 files changed, 344 insertions(+), 195 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml rename persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/{16-digital-signature-kms.changelog.yaml => 17-digital-signature-kms.changelog.yaml} (100%) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java deleted file mode 100644 index 53efd6b52..000000000 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier; - -public enum DossierStatus { - ACTIVE, DELETED, ARCHIVED; -} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java index 881961a23..1eacad378 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java @@ -1,14 +1,15 @@ package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type; +import java.util.ArrayList; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonIgnore; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.ArrayList; -import java.util.List; - @Data @Builder @NoArgsConstructor @@ -32,10 +33,14 @@ public class Type { private List entries = new ArrayList<>(); private List falsePositiveEntries = new ArrayList<>(); private List falseRecommendationEntries = new ArrayList<>(); + private boolean hasDictionary; + private boolean systemManaged; + // For auto-mappers @JsonIgnore public String getTypeId() { + return this.id; } diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java index bba222ef2..4d308ee51 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java @@ -1,13 +1,18 @@ package com.iqser.red.service.persistence.service.v1.api.resources; +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseStatus; + import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; - -import java.util.List; @ResponseStatus(value = HttpStatus.OK) public interface DownloadResource { @@ -19,7 +24,6 @@ public interface DownloadResource { @PostMapping(value = REST_PATH + "/prepare", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) JSONPrimitive prepareDownload(@RequestBody DownloadRequest request); - @GetMapping(value = REST_PATH + "/status/{" + USER_ID + "}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) List getDownloadStatus(@PathVariable(USER_ID) String userId); diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java index f6db5e13c..877128da5 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java @@ -1,7 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.resources; -import com.iqser.red.service.redaction.v1.model.RedactionLog; -import com.iqser.red.service.redaction.v1.model.SectionGrid; +import java.util.List; + import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; @@ -9,7 +9,8 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; -import java.util.List; +import com.iqser.red.service.redaction.v1.model.RedactionLog; +import com.iqser.red.service.redaction.v1.model.SectionGrid; @ResponseStatus(value = HttpStatus.OK) public interface RedactionLogResource { @@ -23,10 +24,12 @@ public interface RedactionLogResource { String DOSSIER_ID_PARAM = "dossierId"; String DOSSIER_ID_PATH_PARAM = "/{" + DOSSIER_ID_PARAM + "}"; + @GetMapping(value = REDACTION_LOG_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions); + @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions, + @RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives); @GetMapping(value = SECTION_GRID_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) SectionGrid getSectionGrid(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java index e070caf68..ed7eea583 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java @@ -58,14 +58,18 @@ public class TypeEntity { private long version; @Column private boolean addToDictionaryAction; + @Column + private boolean hasDictionary; + @Column + private boolean systemManaged; @Fetch(FetchMode.SUBSELECT) - @BatchSize(size=500) + @BatchSize(size = 500) @OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY) private List entries = new ArrayList<>(); @Fetch(FetchMode.SUBSELECT) - @BatchSize(size=500) + @BatchSize(size = 500) @OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY) private List falsePositiveEntries = new ArrayList<>(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 30ac3a422..49d59aa67 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -8,6 +8,7 @@ import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -24,14 +25,18 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.storage.commons.service.StorageService; import lombok.RequiredArgsConstructor; @@ -48,11 +53,13 @@ public class DossierTemplateCloneService { private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; private final DictionaryPersistenceService dictionaryPersistenceService; + private final EntryPersistenceService entryPersistenceService; private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; private final ReportTemplatePersistenceService reportTemplatePersistenceService; private final WatermarkService watermarkService; private final ColorsService colorsService; private final StorageService storageService; + private final DossierStatusPersistenceService dossierStatusPersistenceService; public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) { @@ -86,7 +93,7 @@ public class DossierTemplateCloneService { dossierTemplateRepository.save(clonedDossierTemplate); //set dictionaries - clonedDossierTemplate.setDossierTypes(cloneDictionaries(dossierTemplate.getId(), clonedDossierTemplate.getId())); + clonedDossierTemplate.setDossierTypes(cloneDictionariesWithEntries(dossierTemplate.getId(), clonedDossierTemplate.getId())); //set dossier attributes cloneDossierAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId()); @@ -105,6 +112,9 @@ public class DossierTemplateCloneService { //set colors cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId()); + //set dossier status + cloneDossierStates(dossierTemplate.getId(), clonedDossierTemplate.getId()); + dossierTemplateRepository.save(clonedDossierTemplate); }, () -> { @@ -126,14 +136,19 @@ public class DossierTemplateCloneService { } - private List cloneDictionaries(String dossierTemplateId, String clonedDossierTemplateId) { + private List cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); for (TypeEntity t : types) { - TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); + TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null, t.isHasDictionary(), t.isSystemManaged()); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); + for (DictionaryEntryType det : DictionaryEntryType.values()) { + var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, null); + List entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList()); + entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det); + } } return clonedTypes; } @@ -234,4 +249,20 @@ public class DossierTemplateCloneService { colorsService.saveColors(clonedColors); } + + private void cloneDossierStates(String dossierTemplateId, String clonedDossierTemplateId) { + + var states = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); + for (var state : states) { + var clonedState = CreateOrUpdateDossierStatusRequest.builder() + .name(state.getName()) + .description(state.getDescription()) + .color(state.getColor()) + .dossierTemplateId(clonedDossierTemplateId) + .rank(state.getRank()) + .build(); + dossierStatusPersistenceService.createOrUpdateDossierStatus(clonedState); + } + } + } 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 23058dc7f..7247f3a47 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 @@ -35,8 +35,9 @@ public class DictionaryPersistenceService { private final EntryRepository entryRepository; - public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive, boolean isRecommendation, - String description, boolean addToDictionaryAction, String label, String dossierId) { + public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive, + boolean isRecommendation, String description, boolean addToDictionaryAction, String label, String dossierId, boolean hasDictionary, + boolean systemManaged) { checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId); @@ -55,6 +56,8 @@ public class DictionaryPersistenceService { .addToDictionaryAction(addToDictionaryAction) .label(label) .version(1) + .hasDictionary(hasDictionary) + .systemManaged(systemManaged) .build(); return typeRepository.save(t); 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 3f11d28fd..0df67bf72 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 @@ -1,5 +1,20 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; + +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +import javax.transaction.Transactional; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; @@ -9,20 +24,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange; + import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; @Service @RequiredArgsConstructor @@ -90,11 +93,22 @@ public class DossierPersistenceService { } + public DossierEntity getActiveOrArchivedDossier(String dossierId) { + + var dossier = findByDossierId(dossierId); + + if (dossier == null || dossier.getHardDeletedTime() != null || dossier.getSoftDeletedTime() != null) { + throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId)); + } + + return dossier; + } + + public DossierEntity getAndValidateDossier(String dossierId) { // check whether the dossierId exists and is not deleted var dossier = findByDossierId(dossierId); - if (dossier == null || dossier.getSoftDeletedTime() != null || dossier.getHardDeletedTime() != null - || dossier.getArchivedTime() != null) { + if (dossier == null || dossier.getSoftDeletedTime() != null || dossier.getHardDeletedTime() != null || dossier.getArchivedTime() != null) { throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId)); } return dossier; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java index 32be7bb9a..9f0a2fe15 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java @@ -1,14 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; +import java.time.OffsetDateTime; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import java.time.OffsetDateTime; -import java.util.List; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; public interface DossierRepository extends JpaRepository { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java index da3e0f75d..6264b39a9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java @@ -1,5 +1,25 @@ package com.iqser.red.service.peristence.v1.server.controller; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.transaction.Transactional; + +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import com.iqser.red.service.peristence.v1.server.TextNormalizationUtilities; import com.iqser.red.service.peristence.v1.server.service.StopwordService; import com.iqser.red.service.peristence.v1.server.validation.DictionaryValidator; @@ -16,26 +36,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ty import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; import com.iqser.red.service.persistence.service.v1.api.resources.DictionaryResource; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.transaction.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.function.Predicate; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; -import static java.util.stream.Collectors.toList; -import static java.util.stream.Collectors.toSet; @RestController @RequiredArgsConstructor @@ -70,6 +73,9 @@ public class DictionaryController implements DictionaryResource { // To check whether the type exists, type should not be added into database implicitly by addEntry. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if (!typeResult.isHasDictionary()) { + throw new BadRequestException("Entity type does not have a dictionary"); + } var currentVersion = getCurrentVersion(typeResult); @@ -202,9 +208,7 @@ public class DictionaryController implements DictionaryResource { } String color = typeRequest.getHexColor(); validateColor(color); - return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest - .getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest - .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId()), Type.class); + return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest.getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest.getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId(), typeRequest.isHasDictionary(), typeRequest.isSystemManaged()), Type.class); } @@ -213,14 +217,14 @@ public class DictionaryController implements DictionaryResource { // NotFoundException would be thrown if the type not found in database. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if (typeResult.isSystemManaged()) { + throw new BadRequestException("Can not delete system managed entity type"); + } var currentVersion = getCurrentVersion(typeResult); dictionaryPersistenceService.deleteType(typeId); - List existing = entryPersistenceService.getEntries(typeId, DictionaryEntryType.ENTRY, null) - .stream() - .map(BaseDictionaryEntry::getValue) - .collect(toList()); + List existing = entryPersistenceService.getEntries(typeId, DictionaryEntryType.ENTRY, null).stream().map(BaseDictionaryEntry::getValue).collect(toList()); entryPersistenceService.deleteEntries(typeId, existing, currentVersion + 1, DictionaryEntryType.ENTRY); dictionaryPersistenceService.incrementVersion(typeId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java index 5e46e62f8..09dc66294 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java @@ -1,5 +1,20 @@ package com.iqser.red.service.peristence.v1.server.controller; +import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import javax.transaction.Transactional; + +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import com.iqser.red.service.peristence.v1.server.service.DossierService; import com.iqser.red.service.peristence.v1.server.service.FileService; import com.iqser.red.service.peristence.v1.server.service.FileStatusService; @@ -8,26 +23,17 @@ import com.iqser.red.service.peristence.v1.server.utils.DossierMapper; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.*; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierInformation; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.resources.DossierResource; import com.iqser.red.service.search.v1.model.IndexMessageType; + import feign.Param; 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.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.transaction.Transactional; -import java.time.OffsetDateTime; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; @Slf4j @RestController @@ -143,7 +149,7 @@ public class DossierController implements DossierResource { var archivedDossiers = convert(dossierService.getAllDossiers() .stream() - .filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null) + .filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null && p.getSoftDeletedTime() == null) .collect(Collectors.toList()), Dossier.class, new DossierMapper()); archivedDossiers.sort((dossier1, dossier2) -> dossier2.getArchivedTime().compareTo(dossier1.getArchivedTime())); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java index 658f91e67..1f6be3a28 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java @@ -1,5 +1,16 @@ package com.iqser.red.service.peristence.v1.server.controller; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfiguration; @@ -14,18 +25,11 @@ import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimiti import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus; import com.iqser.red.service.persistence.service.v1.api.resources.DownloadResource; + import lombok.RequiredArgsConstructor; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -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.util.Set; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import lombok.extern.slf4j.Slf4j; +@Slf4j @RestController @RequiredArgsConstructor public class DownloadController implements DownloadResource { @@ -42,15 +46,11 @@ public class DownloadController implements DownloadResource { var mimeType = "application/zip"; var existingFileStatuses = fileStatusPersistenceService.getStatusesForDossier(request.getDossierId()); - String downloadFilename = buildName(request.getDossierId(), request.getFileIds(), request.getUserId(), mimeType, existingFileStatuses); - String storageId = StorageIdUtils.getStorageId(request.getUserId(), request.getDossierId(), downloadFilename); - - var dossier = dossierPersistenceService.getAndValidateDossier(request.getDossierId()); + var dossier = dossierPersistenceService.getActiveOrArchivedDossier(request.getDossierId()); downloadStatusPersistenceService.createStatus(request.getUserId(), storageId, dossier, downloadFilename, mimeType, request.getFileIds(), dossier.getDownloadFileTypes()); - addToDownloadQueue(DownloadJob.builder().storageId(storageId).userId(request.getUserId()).build(), 1); return new JSONPrimitive<>(storageId); @@ -92,7 +92,7 @@ public class DownloadController implements DownloadResource { private String buildName(String dossierId, List fileIds, String userId, String mimeType, List existingFileStatuses) { - var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); + var dossier = dossierPersistenceService.getActiveOrArchivedDossier(dossierId); Set existingFilenames = downloadStatusPersistenceService.getStatusesByUser(userId) .stream() diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java index 437bf5669..d4bd7abcb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java @@ -1,15 +1,17 @@ package com.iqser.red.service.peristence.v1.server.controller; +import java.util.List; + +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import com.iqser.red.service.peristence.v1.server.service.RedactionLogService; import com.iqser.red.service.persistence.service.v1.api.resources.RedactionLogResource; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.SectionGrid; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import java.util.List; +import lombok.RequiredArgsConstructor; @RestController @RequiredArgsConstructor @@ -18,12 +20,12 @@ public class RedactionLogController implements RedactionLogResource { private final RedactionLogService redactionLogService; - public RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @PathVariable(FILE_ID) String fileId, + public RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions) { + @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions, + @RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives) { - return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions); + return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions, includeFalsePositives); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index 9f0740614..ffdb23d9f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -1,5 +1,13 @@ package com.iqser.red.service.peristence.v1.server.service; +import java.time.OffsetDateTime; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ViewedPageEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; @@ -8,15 +16,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do import com.iqser.red.service.redaction.v1.model.ChangeType; import com.iqser.red.service.redaction.v1.model.ManualRedactionType; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; - -import java.time.OffsetDateTime; -import java.util.Map; -import java.util.stream.Collectors; @Slf4j @Service @@ -34,7 +36,7 @@ public class AnalysisFlagsCalculationService { long startTime = System.currentTimeMillis(); var file = fileStatusPersistenceService.getStatus(fileId); - var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true); + var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true, false); var viewedPagesForCurrentAssignee = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee()); @@ -76,11 +78,11 @@ public class AnalysisFlagsCalculationService { lastModification = lastChange.getDateTime(); } - if (!hasRedactions && entry.isRedacted()) { + if (!hasRedactions && entry.isRedacted() && !entry.isRecommendation()) { hasRedactions = true; } - if (!hasHints && entry.isHint() && !type.equals("false_positive")) { + if (!hasHints && entry.isHint()) { hasHints = true; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java index cdf34a922..02a0f0b99 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java @@ -15,7 +15,6 @@ import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfigu import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.search.v1.model.IndexMessage; import com.iqser.red.service.search.v1.model.IndexMessageType; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java index e7d3c9a98..d2b5b1e97 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java @@ -26,13 +26,13 @@ public class RedactionLogService { private final FileStatusService fileStatusService; - public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions) { + public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions, boolean includeFalsePositives) { - return getRedactionLog(dossierId, fileId, null, withManualRedactions); + return getRedactionLog(dossierId, fileId, null, withManualRedactions, includeFalsePositives); } - public RedactionLog getRedactionLog(String dossierId, String fileId, List excludedTypes, boolean withManualRedactions) { + public RedactionLog getRedactionLog(String dossierId, String fileId, List excludedTypes, boolean withManualRedactions, boolean includeFalsePositives) { var fileStatus = fileStatusService.getStatus(fileId); @@ -52,6 +52,7 @@ public class RedactionLogService { .manualRedactions(manualRedactions) .dossierTemplateId(dossier.getDossierTemplateId()) .excludedPages(fileStatus.getExcludedPages()) + .includeFalsePositives(includeFalsePositives) .build()); } catch (FeignException e) { if (e.status() == HttpStatus.NOT_FOUND.value()) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java index 6f12faad5..08cd0f04e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java @@ -1,5 +1,12 @@ package com.iqser.red.service.peristence.v1.server.service.download; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.transaction.Transactional; + +import org.springframework.stereotype.Service; + import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionRequest; import com.iqser.red.service.peristence.v1.server.client.RedactionClient; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; @@ -11,7 +18,11 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier. import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity; 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.management.v1.processor.service.persistence.DossierPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.audit.AddNotificationRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; @@ -20,13 +31,9 @@ import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; import com.iqser.red.service.redaction.v1.model.AnnotateRequest; import com.iqser.red.service.redaction.v1.model.RedactionLog; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; -import java.util.Map; -import java.util.stream.Collectors; @Slf4j @Service @@ -228,7 +235,7 @@ public class DownloadPreparationService { return null; } try { - return redactionLogService.getRedactionLog(dossierId, fileId, true); + return redactionLogService.getRedactionLog(dossierId, fileId, true, false); } catch (NotFoundException e) { return null; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml new file mode 100644 index 000000000..78cd55f7d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml @@ -0,0 +1,14 @@ +databaseChangeLog: + - changeSet: + id: add-has-dictionary + author: dom + changes: + - addColumn: + columns: + - column: + name: has_dictionary + type: BOOLEAN + - column: + name: system_managed + type: BOOLEAN + tableName: entity \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/17-digital-signature-kms.changelog.yaml similarity index 100% rename from persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-digital-signature-kms.changelog.yaml rename to persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/17-digital-signature-kms.changelog.yaml diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index 987eeea6e..7ba172e7b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -38,4 +38,6 @@ databaseChangeLog: - include: file: db/changelog/15-dossier-remove-dossier-state.changelog.yaml - include: - file: db/changelog/16-digital-signature-kms.changelog.yaml \ No newline at end of file + file: db/changelog/16-added-has-dictionary-to-entities.changelog.yaml + - include: + file: db/changelog/17-digital-signature-kms.changelog.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java index c967d1356..0b7237267 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -1,13 +1,14 @@ package com.iqser.red.service.peristence.v1.server.integration.service; +import static org.assertj.core.api.Assertions.assertThat; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import static org.assertj.core.api.Assertions.assertThat; @Service public class TypeProvider { @@ -29,12 +30,13 @@ public class TypeProvider { type.setRecommendation(false); type.setCaseInsensitive(true); type.setDossierTemplateId(dossierTemplate.getId()); + type.setHasDictionary(true); + type.setSystemManaged(false); type.setDossierId(dossier != null ? dossier.getId() : null); var createdType = dictionaryClient.addType(type); - - var loadedType = dictionaryClient.getDictionaryForType(createdType.getId(),null); + var loadedType = dictionaryClient.getDictionaryForType(createdType.getId(), null); assertThat(loadedType).isNotNull(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 2cf1cb100..3c9060d09 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -1,5 +1,18 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; @@ -14,18 +27,6 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ty import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummary; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static org.assertj.core.api.Assertions.assertThat; public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTest { private static final String TYPE_ID_1 = "type1"; @@ -73,6 +74,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType).isNotNull(); @@ -93,6 +96,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); var entries2 = new ArrayList(); entries2.add("entry1"); @@ -113,6 +118,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate3.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType3).isNotNull(); @@ -136,6 +143,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .description("Something") .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate5.getId()) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType5).isNotNull(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 52231e876..40f392d45 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -2,9 +2,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; 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; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; @@ -12,15 +9,13 @@ import java.util.Collections; import java.util.List; import org.junit.Test; -import org.mockito.Mock; -import org.mockito.Mockito; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; @@ -28,20 +23,8 @@ import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkCl import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; -import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; -import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; @@ -50,10 +33,12 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; import feign.FeignException; @@ -87,6 +72,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @Autowired private WatermarkClient watermarkClient; + @Autowired + private DossierStatusClient dossierStatusClient; + @Test public void testDossierTemplate() { @@ -145,8 +133,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); Type type = Type.builder() - .id("t.id") - .type("t.getType()") + .type("t") .dossierTemplateId(dossierTemplate.getId()) .hexColor("#ddddd") .recommendationHexColor("#cccccc") @@ -162,8 +149,35 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build())) .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build())) .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build())) + .hasDictionary(true) + .systemManaged(false) .build(); - dictionaryClient.addType(type); + Type type2 = Type.builder() + .type("t2") + .dossierTemplateId(dossierTemplate.getId()) + .hexColor("#12345") + .recommendationHexColor("#6789a") + .rank(1002) + .isHint(false) + .isRecommendation(false) + .isCaseInsensitive(false) + .description("t2.getDescription()") + .addToDictionaryAction(true) + .label("t2.getLabel()") + .dossierId(null) + .version(23) + .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t2.getType()").build())) + .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t2.getType()").build())) + .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t2.getType()").build())) + .hasDictionary(true) + .systemManaged(false) + .build(); + var createdType1 = dictionaryClient.addType(type); + var createdType2 = dictionaryClient.addType(type2); + var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(), null); + var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(), null); + dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY); + dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE); dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder() .dossierTemplateId(dossierTemplate.getId()) .editable(false) @@ -172,8 +186,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .type(DossierAttributeType.TEXT) .placeholder("placeholderDossier") .build())); - fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder() - .dossierTemplateId(dossierTemplate.getId()) + fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder().dossierTemplateId(dossierTemplate.getId()) .delimiter("") .filenameMappingColumnHeaderName("filenameMappingColumnHeaderName") .build()); @@ -200,7 +213,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .storageId("storageId") .uploadDate(OffsetDateTime.now()) .build(); - reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build()); + reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder() + .template("some text".getBytes(StandardCharsets.UTF_8)) + .dossierTemplateId(dossierTemplate.getId()) + .fileName("Report Template") + .activeByDefault(true) + .multiFileReport(false) + .build()); watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder() .dossierTemplateId(dossierTemplate.getId()) .fontSize(10) @@ -225,6 +244,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .manualRedactionColor("#bbbbbb") .build(); dictionaryClient.setColors(dossierTemplate.getId(), col); + var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() + .name("dossStatus1") + .description("ds description") + .color("#115599") + .rank(456) + .dossierTemplateId(dossierTemplate.getId()) + .build(); + dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); @@ -242,12 +269,25 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user"); assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user"); - assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); - assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); - assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); - assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); + assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()) + .get(0) + .getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); + assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()) + .get(0) + .getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); + assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()) + .getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); + assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()) + .get(0) + .getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText()); assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd()); + assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()) + .get(0) + .getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); + assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId())) + .get(0) + .getDescription()).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())).get(0).getDescription()); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java index 0212a0fc7..652bc719e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java @@ -1,5 +1,16 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import java.time.OffsetDateTime; +import java.util.List; +import java.util.Set; + +import org.junit.Test; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; + import com.google.common.collect.Sets; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; @@ -13,17 +24,8 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier; + import feign.FeignException; -import org.junit.Test; -import org.springframework.beans.BeanUtils; -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.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; public class DossierTest extends AbstractPersistenceServerServiceTest { @@ -182,7 +184,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { assertThat(dossierClient.getAllDossiers(true, false)).hasSize(2); assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1); assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); - assertThat(dossierClient.getArchivedDossiers()).hasSize(2); + assertThat(dossierClient.getArchivedDossiers()).hasSize(1); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1); dossierInformation = dossierClient.getDossierInformation(); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java index e4dd1b093..7e10d0e07 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java @@ -1,13 +1,14 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient; import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import static org.assertj.core.api.Assertions.assertThat; public class RedactionLogTest extends AbstractPersistenceServerServiceTest { @@ -27,8 +28,8 @@ public class RedactionLogTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); assertThat(redactionLogClient.getSectionGrid(dossier.getId(), file.getId())).isNotNull(); - assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,true)).isNotNull(); - assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,false)).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null, true, false)).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null, false, false)).isNotNull(); } } From 56084c6d6e28f8d9a3b02b0dc3337e8da78d582b Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Thu, 24 Mar 2022 14:48:32 +0100 Subject: [PATCH 3/3] RED-3450 Changed versions and disabled testing signature for release --- persistence-service-image-v1/pom.xml | 2 +- persistence-service-v1/persistence-service-api-v1/pom.xml | 2 +- .../persistence-service-processor-v1/pom.xml | 2 +- .../v1/processor/service/DigitalSignatureKmsService.java | 5 +---- persistence-service-v1/persistence-service-server-v1/pom.xml | 2 +- persistence-service-v1/pom.xml | 4 ++-- pom.xml | 2 +- 7 files changed, 8 insertions(+), 11 deletions(-) diff --git a/persistence-service-image-v1/pom.xml b/persistence-service-image-v1/pom.xml index c867ab34c..add742e67 100644 --- a/persistence-service-image-v1/pom.xml +++ b/persistence-service-image-v1/pom.xml @@ -12,7 +12,7 @@ persistence-service-image-v1 com.iqser.red.service - Banana + 1.0-SNAPSHOT pom diff --git a/persistence-service-v1/persistence-service-api-v1/pom.xml b/persistence-service-v1/persistence-service-api-v1/pom.xml index 6dab0d30a..074f7c766 100644 --- a/persistence-service-v1/persistence-service-api-v1/pom.xml +++ b/persistence-service-v1/persistence-service-api-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - Banana + 1.0-SNAPSHOT 4.0.0 diff --git a/persistence-service-v1/persistence-service-processor-v1/pom.xml b/persistence-service-v1/persistence-service-processor-v1/pom.xml index 1a6ca6342..bcca653f1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/pom.xml +++ b/persistence-service-v1/persistence-service-processor-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - Banana + 1.0-SNAPSHOT 4.0.0 diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java index 741f1f7ca..77d2a8d1d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java @@ -1,7 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; - import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -10,7 +8,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureKmsRepository; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; import lombok.RequiredArgsConstructor; @@ -30,7 +27,7 @@ public class DigitalSignatureKmsService { public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKmsEntity digitalSignature) { log.info("Validate digital KMS signature before saving"); - pdfTronRedactionClient.testDigitalSignatureKms(convert(digitalSignature, DigitalSignatureKms.class)); +// pdfTronRedactionClient.testDigitalSignatureKms(convert(digitalSignature, DigitalSignatureKms.class)); log.info("Digital KMS signature is valid"); encrypt(digitalSignature); diff --git a/persistence-service-v1/persistence-service-server-v1/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml index c30daf30b..71b942fc0 100644 --- a/persistence-service-v1/persistence-service-server-v1/pom.xml +++ b/persistence-service-v1/persistence-service-server-v1/pom.xml @@ -6,7 +6,7 @@ persistence-service-v1 com.iqser.red.service - Banana + 1.0-SNAPSHOT 4.0.0 diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 3d74e9485..882ba98d4 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -14,7 +14,7 @@ com.iqser.red.service persistence-service-v1 - Banana + 1.0-SNAPSHOT pom @@ -27,7 +27,7 @@ 3.86.0 2.26.0 - Apple + 3.52.0 3.19.0 diff --git a/pom.xml b/pom.xml index f2f7e4c6c..218958163 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ persistence-service com.iqser.red.service - Banana + 1.0-SNAPSHOT pom