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