RED-2231: Use persistence-service instead of configuration and filemanagement-service
This commit is contained in:
parent
064eb5e89c
commit
82fba20c3c
@ -24,16 +24,12 @@
|
||||
<dependency>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>redaction-service-api-v1</artifactId>
|
||||
<version>2.67.0</version>
|
||||
<version>3.1.0</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>file-management-service-api-v1</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>file-management-service-api-v1</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>configuration-service-api-v1</artifactId>
|
||||
@ -43,8 +39,8 @@
|
||||
|
||||
<dependency>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>configuration-service-api-v1</artifactId>
|
||||
<version>2.29.0</version>
|
||||
<artifactId>persistence-service-api-v1</artifactId>
|
||||
<version>0.5.0</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
@ -52,18 +48,11 @@
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>redaction-service-api-v1</artifactId>
|
||||
<artifactId>configuration-service-api-v1</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.iqser.red.service</groupId>
|
||||
<artifactId>file-management-service-api-v1</artifactId>
|
||||
<version>2.81.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.resources.DossierAttributesResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
@FeignClient(name = "DossierAttributesResource", url = "${file-management-service.url}")
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource;
|
||||
|
||||
@FeignClient(name = "DossierAttributesResource", url = "${persistence-service.url}")
|
||||
public interface DossierAttributesClient extends DossierAttributesResource {
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.resource.DossierAttributesResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesConfigResource;
|
||||
|
||||
@FeignClient(name = "DossierAttributesConfigResource", url = "${configuration-service.url}")
|
||||
public interface DossierAttributesConfigClient extends DossierAttributesResource {
|
||||
@FeignClient(name = "DossierAttributesConfigResource", url = "${persistence-service.url}")
|
||||
public interface DossierAttributesConfigClient extends DossierAttributesConfigResource {
|
||||
}
|
||||
@ -1,9 +1,10 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.resources.DossierResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
@FeignClient(name = "DossierResource", url = "${file-management-service.url}")
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierResource;
|
||||
|
||||
@FeignClient(name = "DossierResource", url = "${persistence-service.url}")
|
||||
public interface DossierClient extends DossierResource {
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.resource.FileAttributesResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
@FeignClient(name = "FileAttributesResource", url = "${configuration-service.url}")
|
||||
public interface FileAttributesClient extends FileAttributesResource {
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource;
|
||||
|
||||
@FeignClient(name = "FileAttributesResource", url = "${persistence-service.url}")
|
||||
public interface FileAttributesConfigClient extends FileAttributesConfigResource {
|
||||
}
|
||||
@ -2,9 +2,9 @@ package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.resources.StatusResource;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.StatusResource;
|
||||
|
||||
@FeignClient(name = "StatusResource", url = "${file-management-service.url}")
|
||||
@FeignClient(name = "StatusResource", url = "${persistence-service.url}")
|
||||
public interface FileStatusClient extends StatusResource {
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.resources.RedactionLogResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
@FeignClient(name = "RedactionLogResource", url = "${file-management-service.url}")
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.RedactionLogResource;
|
||||
|
||||
@FeignClient(name = "RedactionLogResource", url = "${persistence-service.url}")
|
||||
public interface RedactionLogClient extends RedactionLogResource {
|
||||
}
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package com.iqser.red.service.redaction.report.v1.server.client;
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.resources.ReportTemplateResource;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
@FeignClient(name = "ReportTemplateResource", url = "${file-management-service.url}")
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource;
|
||||
|
||||
@FeignClient(name = "ReportTemplateResource", url = "${persistence-service.url}")
|
||||
public interface ReportTemplateClient extends ReportTemplateResource {
|
||||
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@ package com.iqser.red.service.redaction.report.v1.server.controller;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.StatusReportResponse;
|
||||
import com.iqser.red.service.redaction.report.v1.api.resource.StatusReportResource;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierClient;
|
||||
|
||||
@ -39,16 +39,13 @@ import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttribute;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
||||
import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService;
|
||||
@ -62,26 +59,25 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@RequiredArgsConstructor
|
||||
public class ExcelTemplateReportGenerationService {
|
||||
|
||||
private final ReportStorageService reportStorageService;
|
||||
private final DossierAttributesClient dossierAttributesClient;
|
||||
private final DossierAttributesConfigClient dossierAttributesConfigClient;
|
||||
private final FileAttributesClient fileAttributesClient;
|
||||
private final FileAttributesConfigClient fileAttributesClient;
|
||||
|
||||
|
||||
public void generateReport(List<ReportRedactionEntry> reportEntries, String dossierTemplateId,
|
||||
XSSFWorkbook workbook, FileStatus fileStatus, Dossier dossier, boolean isLastFile) {
|
||||
XSSFWorkbook workbook, File fileStatus, Dossier dossier, boolean isLastFile) {
|
||||
|
||||
List<String> placeholders = getDefaultPlaceholders();
|
||||
List<ImagePlaceholder> imagePlaceholders = new ArrayList<>();
|
||||
|
||||
DossierAttributes dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getDossierId());
|
||||
DossierAttributesConfig dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId);
|
||||
var dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getId());
|
||||
var dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId);
|
||||
|
||||
Map<String, String> dossierAttributesPlaceholder = new HashMap<>(); //KEY:placeholder, VALUE:value
|
||||
|
||||
for (DossierAttributeConfig attributeConfig : dossierAttributesConfig.getDossierAttributeConfigs()) {
|
||||
for (DossierAttribute dossierAttribute : dossierAttributes.getDossierAttributeList()) {
|
||||
if (dossierAttribute.getDossierAttributeId().equals(attributeConfig.getId())) {
|
||||
for (DossierAttributeConfig attributeConfig : dossierAttributesConfig) {
|
||||
for (DossierAttribute dossierAttribute : dossierAttributes) {
|
||||
if (dossierAttribute.getId().getDossierAttributeConfigId().equals(attributeConfig.getId())) {
|
||||
if (attributeConfig.getType().equals(DossierAttributeConfig.DossierAttributeType.IMAGE)) {
|
||||
|
||||
if(dossierAttribute.getValue() != null) {
|
||||
@ -145,8 +141,8 @@ public class ExcelTemplateReportGenerationService {
|
||||
|
||||
Map<String, String> fileAttributePlaceholders = new HashMap<>();
|
||||
|
||||
FileAttributesConfig fileAttributesConfig = fileAttributesClient.getFileAttributes(dossierTemplateId);
|
||||
fileAttributesConfig.getFileAttributeConfigs().forEach(fileAttributeConfig -> {
|
||||
var fileAttributesConfig = fileAttributesClient.getFileAttributeConfigs(dossierTemplateId);
|
||||
fileAttributesConfig.forEach(fileAttributeConfig -> {
|
||||
fileAttributePlaceholders.put(fileAttributeConfig.getPlaceholder(), fileAttributeConfig.getId());
|
||||
});
|
||||
return fileAttributePlaceholders;
|
||||
@ -296,7 +292,7 @@ public class ExcelTemplateReportGenerationService {
|
||||
}
|
||||
|
||||
|
||||
private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus,
|
||||
private String getPlaceholderValue(String placeholder, Dossier project, File fileStatus,
|
||||
Map<String, String> fileAttributePlaceholders,
|
||||
Map<String, String> dossierAttributesPlaceholders) {
|
||||
|
||||
@ -320,11 +316,14 @@ public class ExcelTemplateReportGenerationService {
|
||||
}
|
||||
if (fileAttributePlaceholders.containsKey(placeholder)) {
|
||||
String id = fileAttributePlaceholders.get(placeholder);
|
||||
if (fileStatus.getFileAttributes() != null && fileStatus.getFileAttributes()
|
||||
.getAttributeIdToValue() != null && fileStatus.getFileAttributes()
|
||||
.getAttributeIdToValue()
|
||||
.containsKey(id)) {
|
||||
return fileStatus.getFileAttributes().getAttributeIdToValue().get(id);
|
||||
|
||||
Map<String, String> attributeIdToValue = new HashMap<>();
|
||||
fileStatus.getFileAttributes().forEach(fileAttribute -> {
|
||||
attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue());
|
||||
});
|
||||
|
||||
if (attributeIdToValue.containsKey(id)) {
|
||||
return attributeIdToValue.get(id);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -7,21 +7,19 @@ import java.util.Set;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
||||
import com.iqser.red.service.redaction.v1.model.Change;
|
||||
import com.iqser.red.service.redaction.v1.model.ChangeType;
|
||||
import com.iqser.red.service.redaction.v1.model.ManualRedactionType;
|
||||
import com.iqser.red.service.redaction.v1.model.Rectangle;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLogEntry;
|
||||
import com.iqser.red.service.redaction.v1.model.Status;
|
||||
|
||||
@Service
|
||||
public class RedactionLogConverterService {
|
||||
|
||||
public List<ReportRedactionEntry> convertAndSort(RedactionLog redactionLog,
|
||||
List<LegalBasisMapping> legalBasisMappings) {
|
||||
List<LegalBasis> legalBasisMappings) {
|
||||
|
||||
List<ReportRedactionEntry> reportEntries = new ArrayList<>();
|
||||
|
||||
@ -42,12 +40,12 @@ public class RedactionLogConverterService {
|
||||
}
|
||||
|
||||
if (entry.isManual() && entry.getManualRedactionType()
|
||||
.equals(ManualRedactionType.ADD) && !entry.getStatus().equals(Status.APPROVED)) {
|
||||
.equals(ManualRedactionType.ADD) && !entry.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (entry.isManual() && entry.getManualRedactionType()
|
||||
.equals(ManualRedactionType.REMOVE) && entry.getStatus().equals(Status.APPROVED)) {
|
||||
.equals(ManualRedactionType.REMOVE) && entry.getStatus().equals(AnnotationStatus.APPROVED)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -61,11 +59,11 @@ public class RedactionLogConverterService {
|
||||
.getY(), entry.getSection(), entry.getLegalBasis() + " " + legalBasisMappings.stream()
|
||||
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
|
||||
.findAny()
|
||||
.map(LegalBasisMapping::getDescription)
|
||||
.map(LegalBasis::getDescription)
|
||||
.orElse(""), entry.getLegalBasis(), legalBasisMappings.stream()
|
||||
.filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis()))
|
||||
.findAny()
|
||||
.map(LegalBasisMapping::getDescription)
|
||||
.map(LegalBasis::getDescription)
|
||||
.orElse(""), checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry.getTextAfter())));
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,10 +8,10 @@ import java.util.List;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.file.management.v1.api.model.ReportTemplate;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasisMapping;
|
||||
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.persistence.service.v1.api.model.data.dossier.ReportTemplate;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportType;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation;
|
||||
@ -74,7 +74,7 @@ public class ReportGenerationService {
|
||||
int i = 1;
|
||||
for (int j = 0; j < reportMessage.getFileIds().size(); j++) {
|
||||
|
||||
FileStatus fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds()
|
||||
File fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds()
|
||||
.get(j));
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
@ -136,7 +136,7 @@ public class ReportGenerationService {
|
||||
} catch (StorageObjectDoesNotExist e) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<LegalBasisMapping> legalBasisMappings = redactionLog.getLegalBasis();
|
||||
var legalBasisMappings = redactionLog.getLegalBasis();
|
||||
|
||||
return redactionLogConverterService.convertAndSort(redactionLog, legalBasisMappings);
|
||||
}
|
||||
|
||||
@ -17,12 +17,12 @@ import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Status;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient;
|
||||
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.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.redaction.report.v1.server.client.FileAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -33,16 +33,15 @@ import lombok.SneakyThrows;
|
||||
public class StatusReportGenerationService {
|
||||
|
||||
private final FileStatusClient fileStatusClient;
|
||||
private final FileAttributesClient fileAttributesClient;
|
||||
private final FileAttributesConfigClient fileAttributesClient;
|
||||
|
||||
|
||||
public byte[] generateReport(Dossier dossier) {
|
||||
|
||||
|
||||
List<FileStatus> fileStatuses = fileStatusClient.getDossierStatus(dossier.getDossierId());
|
||||
List<File> fileStatuses = fileStatusClient.getDossierStatus(dossier.getId());
|
||||
|
||||
List<FileAttributeConfig> fileAttributeConfigs = fileAttributesClient.getFileAttributes(dossier.getDossierTemplateId())
|
||||
.getFileAttributeConfigs();
|
||||
List<FileAttributeConfig> fileAttributeConfigs = fileAttributesClient.getFileAttributeConfigs(dossier.getDossierTemplateId());
|
||||
|
||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||
XSSFSheet sheet = workbook.createSheet(dossier.getDossierName());
|
||||
@ -66,14 +65,16 @@ public class StatusReportGenerationService {
|
||||
|
||||
for (int i = 0; i < fileStatuses.size(); i++) {
|
||||
|
||||
FileStatus fileStatus = fileStatuses.get(i);
|
||||
File fileStatus = fileStatuses.get(i);
|
||||
|
||||
String name = fileStatus.getFilename();
|
||||
OffsetDateTime uploadDate = fileStatus.getLastUploaded();
|
||||
String assignedTo = fileStatus.getCurrentReviewer();
|
||||
Status status = fileStatus.getStatus();
|
||||
FileStatus status = fileStatus.getStatus();
|
||||
int pages = fileStatus.getNumberOfPages();
|
||||
FileAttributes fileAttributes = fileStatus.getFileAttributes();
|
||||
List<FileAttribute> fileAttributes = fileStatus.getFileAttributes();
|
||||
Map<String, String> attributeIdToValue = new HashMap<>();
|
||||
fileAttributes.forEach(fileAttribute -> attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue()));
|
||||
|
||||
XSSFRow row = sheet.createRow(i + 1);
|
||||
|
||||
@ -94,7 +95,7 @@ public class StatusReportGenerationService {
|
||||
sheet.autoSizeColumn(3);
|
||||
sheet.autoSizeColumn(4);
|
||||
|
||||
Iterator<Map.Entry<String, String>> iterator = fileAttributes.getAttributeIdToValue().entrySet().iterator();
|
||||
Iterator<Map.Entry<String, String>> iterator = attributeIdToValue.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
var nextElement = iterator.next();
|
||||
if(attributesAssignment.get(nextElement.getKey()) != null) {
|
||||
|
||||
@ -25,42 +25,32 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.apache.poi.util.Units;
|
||||
import org.apache.poi.xwpf.usermodel.IBodyElement;
|
||||
import org.apache.poi.xwpf.usermodel.IRunElement;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFRun;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFSDT;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTable;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttribute;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.file.management.v1.api.model.ReportTemplate;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig;
|
||||
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.redaction.report.v1.api.model.ReportType;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
||||
import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService;
|
||||
import com.iqser.red.service.redaction.report.v1.server.utils.ResourceLoader;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@ -68,27 +58,27 @@ import lombok.RequiredArgsConstructor;
|
||||
@RequiredArgsConstructor
|
||||
public class WordReportGenerationService {
|
||||
|
||||
private final FileAttributesClient fileAttributesClient;
|
||||
private final FileAttributesConfigClient fileAttributesClient;
|
||||
private final ReportStorageService reportStorageService;
|
||||
private final DossierAttributesClient dossierAttributesClient;
|
||||
private final DossierAttributesConfigClient dossierAttributesConfigClient;
|
||||
|
||||
|
||||
public byte[] generateReport(ReportType reportType, List<ReportRedactionEntry> reportEntries,
|
||||
String dossierTemplateId, ReportTemplate reportTemplate, FileStatus fileStatus,
|
||||
String dossierTemplateId, ReportTemplate reportTemplate, File fileStatus,
|
||||
Dossier dossier) {
|
||||
|
||||
List<String> placeholders = getDefaultPlaceholders();
|
||||
List<ImagePlaceholder> imagePlaceholders = new ArrayList<>();
|
||||
|
||||
DossierAttributes dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getDossierId());
|
||||
DossierAttributesConfig dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId);
|
||||
var dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getId());
|
||||
var dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId);
|
||||
|
||||
Map<String, String> dossierAttributesPlaceholder = new HashMap<>(); //KEY:placeholder, VALUE:value
|
||||
|
||||
for (DossierAttributeConfig attributeConfig : dossierAttributesConfig.getDossierAttributeConfigs()) {
|
||||
for (DossierAttribute dossierAttribute : dossierAttributes.getDossierAttributeList()) {
|
||||
if (dossierAttribute.getDossierAttributeId().equals(attributeConfig.getId())) {
|
||||
for (DossierAttributeConfig attributeConfig : dossierAttributesConfig) {
|
||||
for (DossierAttribute dossierAttribute : dossierAttributes) {
|
||||
if (dossierAttribute.getId().getDossierAttributeConfigId().equals(attributeConfig.getId())) {
|
||||
if (attributeConfig.getType().equals(DossierAttributeConfig.DossierAttributeType.IMAGE)) {
|
||||
|
||||
if (dossierAttribute.getValue() != null) {
|
||||
@ -168,15 +158,15 @@ public class WordReportGenerationService {
|
||||
|
||||
Map<String, String> fileAttributePlaceholders = new HashMap<>();
|
||||
|
||||
FileAttributesConfig fileAttributesConfig = fileAttributesClient.getFileAttributes(dossierTemplateId);
|
||||
fileAttributesConfig.getFileAttributeConfigs().forEach(fileAttributeConfig -> {
|
||||
var fileAttributesConfig = fileAttributesClient.getFileAttributeConfigs(dossierTemplateId);
|
||||
fileAttributesConfig.forEach(fileAttributeConfig -> {
|
||||
fileAttributePlaceholders.put(fileAttributeConfig.getPlaceholder(), fileAttributeConfig.getId());
|
||||
});
|
||||
return fileAttributePlaceholders;
|
||||
}
|
||||
|
||||
|
||||
private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus,
|
||||
private String getPlaceholderValue(String placeholder, Dossier project, File fileStatus,
|
||||
Map<String, String> fileAttributePlaceholders,
|
||||
Map<String, String> dossierAttributesPlaceholders) {
|
||||
|
||||
@ -200,11 +190,14 @@ public class WordReportGenerationService {
|
||||
}
|
||||
if (fileAttributePlaceholders.containsKey(placeholder)) {
|
||||
String id = fileAttributePlaceholders.get(placeholder);
|
||||
if (fileStatus.getFileAttributes() != null && fileStatus.getFileAttributes()
|
||||
.getAttributeIdToValue() != null && fileStatus.getFileAttributes()
|
||||
.getAttributeIdToValue()
|
||||
.containsKey(id)) {
|
||||
return fileStatus.getFileAttributes().getAttributeIdToValue().get(id);
|
||||
|
||||
Map<String, String> attributeIdToValue = new HashMap<>();
|
||||
fileStatus.getFileAttributes().forEach(fileAttribute -> {
|
||||
attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue());
|
||||
});
|
||||
|
||||
if (attributeIdToValue.containsKey(id)) {
|
||||
return attributeIdToValue.get(id);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -2,4 +2,4 @@ server:
|
||||
port: 8084
|
||||
|
||||
|
||||
configuration-service.url: "http://localhost:8081"
|
||||
persistence-service.url: "http://persistence-service-v1:8080"
|
||||
@ -1,8 +1,7 @@
|
||||
info:
|
||||
description: Redaction Report Server v1
|
||||
|
||||
configuration-service.url: "http://configuration-service-v1:8080"
|
||||
file-management-service.url: "http://file-management-service-v1:8080"
|
||||
persistence-service.url: "http://persistence-service-v1:8080"
|
||||
|
||||
server:
|
||||
port: 8080
|
||||
|
||||
@ -7,7 +7,6 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
@ -28,21 +27,18 @@ import org.springframework.test.context.junit4.SpringRunner;
|
||||
import com.amazonaws.services.s3.AmazonS3;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttribute;
|
||||
import com.iqser.red.service.file.management.v1.api.model.DossierAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.file.management.v1.api.model.ReportTemplate;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig;
|
||||
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.ReportTemplate;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportType;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration;
|
||||
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
||||
@ -70,7 +66,7 @@ public class RedactionReportIntegrationTest {
|
||||
private ReportTemplateClient reportTemplateClient;
|
||||
|
||||
@MockBean
|
||||
private FileAttributesClient fileAttributesClient;
|
||||
private FileAttributesConfigClient fileAttributesClient;
|
||||
|
||||
@MockBean
|
||||
private AmazonS3 s3Client;
|
||||
@ -106,31 +102,71 @@ public class RedactionReportIntegrationTest {
|
||||
|
||||
ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json");
|
||||
|
||||
List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
List<LegalBasis> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
});
|
||||
|
||||
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
|
||||
DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}")));
|
||||
|
||||
var dossierAttributeConfig1 =DossierAttributeConfig
|
||||
.builder()
|
||||
.id("id")
|
||||
.label("label")
|
||||
.editable(true)
|
||||
.type(DossierAttributeConfig.DossierAttributeType.TEXT)
|
||||
.placeholder("{{dossier.attribute.name}}")
|
||||
.build();
|
||||
|
||||
var dossierAttributeConfig2 =DossierAttributeConfig
|
||||
.builder()
|
||||
.id("id2")
|
||||
.label("label2")
|
||||
.editable(true)
|
||||
.type(DossierAttributeConfig.DossierAttributeType.IMAGE)
|
||||
.placeholder("{{dossier.attribute.image}}")
|
||||
.build();
|
||||
|
||||
|
||||
var dossierAttributesConfig = Arrays.asList(dossierAttributeConfig1, dossierAttributeConfig2);
|
||||
when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
|
||||
DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", "data:image/png;base64," + Base64.getEncoder()
|
||||
.encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
var dossierAttribute1 = DossierAttribute
|
||||
.builder()
|
||||
.id(new DossierAttribute.DossierAttributeId("dossierId", "id"))
|
||||
.value("Michael")
|
||||
.build();
|
||||
|
||||
|
||||
var dossierAttribute2 = DossierAttribute
|
||||
.builder()
|
||||
.id(new DossierAttribute.DossierAttributeId("dossierId", "id2"))
|
||||
.value("data:image/png;base64," + Base64.getEncoder()
|
||||
.encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))
|
||||
.build();
|
||||
|
||||
var dossierAttributes = Arrays.asList(dossierAttribute1, dossierAttribute2);
|
||||
|
||||
when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
|
||||
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
var fileAttributeConfig1 = FileAttributeConfig
|
||||
.builder()
|
||||
.id("3e9b9569-5d2e-4619-848b-dd0a3e96527f")
|
||||
.label("Document Title")
|
||||
.placeholder("{{file.attribute.placeholder}}")
|
||||
.type(FileAttributeConfig.FileAttributeType.TEXT)
|
||||
.build();
|
||||
|
||||
Map<String, String> attributeIdToValue = new HashMap();
|
||||
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
when(fileAttributesClient.getFileAttributeConfigs(dossierTemplateId)).thenReturn(List.of(fileAttributeConfig1));
|
||||
|
||||
FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
FileAttribute fileAttribute = new FileAttribute();
|
||||
FileAttribute.FileAttributeId fileAttributeId = new FileAttribute.FileAttributeId();
|
||||
fileAttributeId.setFileAttributeConfigId("3e9b9569-5d2e-4619-848b-dd0a3e96527f");
|
||||
fileAttribute.setFileAttributeId(fileAttributeId);
|
||||
fileAttribute.setValue("Test");
|
||||
|
||||
Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build();
|
||||
File fileStatus = File.builder().filename("filename").fileAttributes(List.of(fileAttribute)).build();
|
||||
|
||||
Dossier project = Dossier.builder().id("dossierId").dossierName("projectName").build();
|
||||
|
||||
String templateId = "templateId";
|
||||
String storageId = "storageId";
|
||||
@ -155,224 +191,224 @@ public class RedactionReportIntegrationTest {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testExcelTemplateReportGeneration() throws IOException {
|
||||
|
||||
ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json");
|
||||
ClassPathResource excelRedactionLogResource = new ClassPathResource("files/excelReportRedactionLog.json");
|
||||
ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
|
||||
RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
RedactionLog redactionLog2 = objectMapper.readValue(excelRedactionLogResource.getInputStream(), RedactionLog.class);
|
||||
|
||||
String dossierTemplateId = "dossierTemplateId";
|
||||
String storageId = "storageId";
|
||||
String templateId = "templateId";
|
||||
|
||||
ClassPathResource templateResource = new ClassPathResource("templates/Excel Report.xlsx");
|
||||
XSSFWorkbook workbook = new XSSFWorkbook(templateResource.getInputStream());
|
||||
|
||||
ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json");
|
||||
List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
});
|
||||
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
List<ReportRedactionEntry> reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping);
|
||||
|
||||
DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}")));
|
||||
when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
|
||||
DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder()
|
||||
.encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
|
||||
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
|
||||
Map<String, String> attributeIdToValue = new HashMap();
|
||||
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build();
|
||||
|
||||
Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("dossierName").build();
|
||||
|
||||
when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
.dossierTemplateId(dossierTemplateId)
|
||||
.storageId(storageId)
|
||||
.build());
|
||||
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false);
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true);
|
||||
byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook);
|
||||
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) {
|
||||
fileOutputStream.write(excelTemplateReport);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testReportGeneration() throws IOException {
|
||||
|
||||
ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json");
|
||||
ClassPathResource redactionLogResource2 = new ClassPathResource("files/excelReportRedactionLog.json");
|
||||
ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json");
|
||||
List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
});
|
||||
|
||||
String dossierTemplateId = "dossierTemplateId";
|
||||
String storageId = "storageId";
|
||||
String templateId = "templateId";
|
||||
|
||||
RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
RedactionLog redactionLog2 = objectMapper.readValue(redactionLogResource2.getInputStream(), RedactionLog.class);
|
||||
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
List<ReportRedactionEntry> reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping);
|
||||
|
||||
DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}")));
|
||||
when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder()
|
||||
.encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
|
||||
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
Map<String, String> attributeIdToValue = new HashMap();
|
||||
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build();
|
||||
|
||||
Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("projectName").build();
|
||||
|
||||
when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
.dossierTemplateId(dossierTemplateId)
|
||||
.storageId(storageId)
|
||||
.build());
|
||||
|
||||
ClassPathResource wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx");
|
||||
when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(wordTemplateResource.getInputStream()));
|
||||
ReportTemplate reportTemplate = ReportTemplate.builder()
|
||||
.dossierTemplateId("dossierTemplateId")
|
||||
.templateId("templateId")
|
||||
.fileName("fileName")
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
byte[] wordReport = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, dossier);
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template.docx")) {
|
||||
fileOutputStream.write(wordReport);
|
||||
}
|
||||
ReportTemplate reportTemplate2 = ReportTemplate.builder()
|
||||
.dossierTemplateId("dossierTemplateId")
|
||||
.templateId("templateId")
|
||||
.fileName("fileNameReportTemplate2")
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
byte[] wordReport2 = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries2, dossierTemplateId, reportTemplate2, fileStatus2, dossier);
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template2.docx")) {
|
||||
fileOutputStream.write(wordReport2);
|
||||
}
|
||||
|
||||
ClassPathResource excelTemplateResource = new ClassPathResource("templates/Excel Report.xlsx");
|
||||
XSSFWorkbook workbook = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false);
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true);
|
||||
byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook);
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) {
|
||||
fileOutputStream.write(excelTemplateReport);
|
||||
}
|
||||
XSSFWorkbook workbook2 = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook2, fileStatus, dossier, true);
|
||||
byte[] excelTemplateReport2 = excelTemplateReportGenerationService.toByteArray(workbook2);
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template2.xlsx")) {
|
||||
fileOutputStream.write(excelTemplateReport2);
|
||||
}
|
||||
XSSFWorkbook workbook3 = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook3, fileStatus2, dossier, true);
|
||||
byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(workbook3);
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template3.xlsx")) {
|
||||
fileOutputStream.write(excelTemplateReport3);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExcerptReportGeneration() throws IOException {
|
||||
|
||||
String dossierTemplateId = "dossierTemplateId";
|
||||
|
||||
ClassPathResource redactionLogResource = new ClassPathResource("files/S11RedactionLog.json");
|
||||
ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
|
||||
RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
|
||||
ClassPathResource legalBasisMappingResource = new ClassPathResource("files/S1116LegalBasis.json");
|
||||
|
||||
List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
});
|
||||
|
||||
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
|
||||
DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(
|
||||
new DossierAttributeConfig("id", "Active Substance", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.ActiveSubstance}}"),
|
||||
new DossierAttributeConfig("id2", "Rapporteur Member State", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.RapporteurMemberState}}"),
|
||||
new DossierAttributeConfig("id3", "Dossier Name", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Name}}"),
|
||||
new DossierAttributeConfig("id4", "Company", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Company}}"),
|
||||
new DossierAttributeConfig("id5", "Date", true, DossierAttributeConfig.DossierAttributeType.DATE, "{{dossier.attribute.Date}}"),
|
||||
new DossierAttributeConfig("id6", "Signature", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.Signature}}")));
|
||||
when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
|
||||
DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(
|
||||
new DossierAttribute("id", "Aktive Substanz"),
|
||||
new DossierAttribute("id2", "Reporter Status"),
|
||||
new DossierAttribute("id3", "Dossier Name"),
|
||||
new DossierAttribute("id4", "Firma"),
|
||||
new DossierAttribute("id5", OffsetDateTime.now().format(FORMAT_DATE_ENG)),
|
||||
new DossierAttribute("id6", "data:image/png;base64," + Base64.getEncoder().encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
|
||||
when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
|
||||
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
|
||||
Map<String, String> attributeIdToValue = new HashMap();
|
||||
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
|
||||
FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
|
||||
Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build();
|
||||
|
||||
String templateId = "templateId";
|
||||
String storageId = "storageId";
|
||||
when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
.dossierTemplateId(dossierTemplateId)
|
||||
.storageId(storageId)
|
||||
.build());
|
||||
|
||||
ClassPathResource templateResource = new ClassPathResource("templates/6464 appendix_b EFSA dRAR justification.docx");
|
||||
when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(templateResource.getInputStream()));
|
||||
ReportTemplate reportTemplate = ReportTemplate.builder()
|
||||
.dossierTemplateId("dossierTemplateId")
|
||||
.templateId("templateId")
|
||||
.fileName("filename")
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
byte[] report = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, project);
|
||||
|
||||
try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template13.docx")) {
|
||||
fileOutputStream.write(report);
|
||||
}
|
||||
}
|
||||
// TODO Reactivate Tests
|
||||
// @Test
|
||||
// public void testExcelTemplateReportGeneration() throws IOException {
|
||||
//
|
||||
// ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json");
|
||||
// ClassPathResource excelRedactionLogResource = new ClassPathResource("files/excelReportRedactionLog.json");
|
||||
// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
//
|
||||
// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
// RedactionLog redactionLog2 = objectMapper.readValue(excelRedactionLogResource.getInputStream(), RedactionLog.class);
|
||||
//
|
||||
// String dossierTemplateId = "dossierTemplateId";
|
||||
// String storageId = "storageId";
|
||||
// String templateId = "templateId";
|
||||
//
|
||||
// ClassPathResource templateResource = new ClassPathResource("templates/Excel Report.xlsx");
|
||||
// XSSFWorkbook workbook = new XSSFWorkbook(templateResource.getInputStream());
|
||||
//
|
||||
// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json");
|
||||
// List<LegalBasis> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
// });
|
||||
// List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
// List<ReportRedactionEntry> reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping);
|
||||
//
|
||||
// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}")));
|
||||
// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
//
|
||||
// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder()
|
||||
// .encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
//
|
||||
// List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
//
|
||||
// Map<String, String> attributeIdToValue = new HashMap();
|
||||
// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
// FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build();
|
||||
//
|
||||
// Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("dossierName").build();
|
||||
//
|
||||
// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
// .dossierTemplateId(dossierTemplateId)
|
||||
// .storageId(storageId)
|
||||
// .build());
|
||||
//
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false);
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true);
|
||||
// byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook);
|
||||
//
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) {
|
||||
// fileOutputStream.write(excelTemplateReport);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Test
|
||||
// public void testReportGeneration() throws IOException {
|
||||
//
|
||||
// ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json");
|
||||
// ClassPathResource redactionLogResource2 = new ClassPathResource("files/excelReportRedactionLog.json");
|
||||
// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json");
|
||||
// List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
// });
|
||||
//
|
||||
// String dossierTemplateId = "dossierTemplateId";
|
||||
// String storageId = "storageId";
|
||||
// String templateId = "templateId";
|
||||
//
|
||||
// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
// RedactionLog redactionLog2 = objectMapper.readValue(redactionLogResource2.getInputStream(), RedactionLog.class);
|
||||
// List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
// List<ReportRedactionEntry> reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping);
|
||||
//
|
||||
// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}")));
|
||||
// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder()
|
||||
// .encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
//
|
||||
// List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
// Map<String, String> attributeIdToValue = new HashMap();
|
||||
// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
// FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build();
|
||||
//
|
||||
// Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("projectName").build();
|
||||
//
|
||||
// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
// .dossierTemplateId(dossierTemplateId)
|
||||
// .storageId(storageId)
|
||||
// .build());
|
||||
//
|
||||
// ClassPathResource wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx");
|
||||
// when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(wordTemplateResource.getInputStream()));
|
||||
// ReportTemplate reportTemplate = ReportTemplate.builder()
|
||||
// .dossierTemplateId("dossierTemplateId")
|
||||
// .templateId("templateId")
|
||||
// .fileName("fileName")
|
||||
// .storageId("storageId")
|
||||
// .uploadDate(OffsetDateTime.now())
|
||||
// .build();
|
||||
// byte[] wordReport = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, dossier);
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template.docx")) {
|
||||
// fileOutputStream.write(wordReport);
|
||||
// }
|
||||
// ReportTemplate reportTemplate2 = ReportTemplate.builder()
|
||||
// .dossierTemplateId("dossierTemplateId")
|
||||
// .templateId("templateId")
|
||||
// .fileName("fileNameReportTemplate2")
|
||||
// .storageId("storageId")
|
||||
// .uploadDate(OffsetDateTime.now())
|
||||
// .build();
|
||||
// byte[] wordReport2 = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries2, dossierTemplateId, reportTemplate2, fileStatus2, dossier);
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template2.docx")) {
|
||||
// fileOutputStream.write(wordReport2);
|
||||
// }
|
||||
//
|
||||
// ClassPathResource excelTemplateResource = new ClassPathResource("templates/Excel Report.xlsx");
|
||||
// XSSFWorkbook workbook = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false);
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true);
|
||||
// byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook);
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) {
|
||||
// fileOutputStream.write(excelTemplateReport);
|
||||
// }
|
||||
// XSSFWorkbook workbook2 = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook2, fileStatus, dossier, true);
|
||||
// byte[] excelTemplateReport2 = excelTemplateReportGenerationService.toByteArray(workbook2);
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template2.xlsx")) {
|
||||
// fileOutputStream.write(excelTemplateReport2);
|
||||
// }
|
||||
// XSSFWorkbook workbook3 = new XSSFWorkbook(excelTemplateResource.getInputStream());
|
||||
// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook3, fileStatus2, dossier, true);
|
||||
// byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(workbook3);
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template3.xlsx")) {
|
||||
// fileOutputStream.write(excelTemplateReport3);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void testExcerptReportGeneration() throws IOException {
|
||||
//
|
||||
// String dossierTemplateId = "dossierTemplateId";
|
||||
//
|
||||
// ClassPathResource redactionLogResource = new ClassPathResource("files/S11RedactionLog.json");
|
||||
// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg");
|
||||
//
|
||||
// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class);
|
||||
//
|
||||
// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/S1116LegalBasis.json");
|
||||
//
|
||||
// List<LegalBasisMapping> legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() {
|
||||
// });
|
||||
//
|
||||
// List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||
//
|
||||
// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(
|
||||
// new DossierAttributeConfig("id", "Active Substance", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.ActiveSubstance}}"),
|
||||
// new DossierAttributeConfig("id2", "Rapporteur Member State", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.RapporteurMemberState}}"),
|
||||
// new DossierAttributeConfig("id3", "Dossier Name", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Name}}"),
|
||||
// new DossierAttributeConfig("id4", "Company", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Company}}"),
|
||||
// new DossierAttributeConfig("id5", "Date", true, DossierAttributeConfig.DossierAttributeType.DATE, "{{dossier.attribute.Date}}"),
|
||||
// new DossierAttributeConfig("id6", "Signature", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.Signature}}")));
|
||||
// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||
//
|
||||
// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(
|
||||
// new DossierAttribute("id", "Aktive Substanz"),
|
||||
// new DossierAttribute("id2", "Reporter Status"),
|
||||
// new DossierAttribute("id3", "Dossier Name"),
|
||||
// new DossierAttribute("id4", "Firma"),
|
||||
// new DossierAttribute("id5", OffsetDateTime.now().format(FORMAT_DATE_ENG)),
|
||||
// new DossierAttribute("id6", "data:image/png;base64," + Base64.getEncoder().encodeToString(IOUtils.toByteArray(imageResource.getInputStream())))));
|
||||
//
|
||||
// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||
//
|
||||
// List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||
// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||
// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||
// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||
//
|
||||
// Map<String, String> attributeIdToValue = new HashMap();
|
||||
// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||
//
|
||||
// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue);
|
||||
// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build();
|
||||
//
|
||||
// Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build();
|
||||
//
|
||||
// String templateId = "templateId";
|
||||
// String storageId = "storageId";
|
||||
// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder()
|
||||
// .dossierTemplateId(dossierTemplateId)
|
||||
// .storageId(storageId)
|
||||
// .build());
|
||||
//
|
||||
// ClassPathResource templateResource = new ClassPathResource("templates/6464 appendix_b EFSA dRAR justification.docx");
|
||||
// when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(templateResource.getInputStream()));
|
||||
// ReportTemplate reportTemplate = ReportTemplate.builder()
|
||||
// .dossierTemplateId("dossierTemplateId")
|
||||
// .templateId("templateId")
|
||||
// .fileName("filename")
|
||||
// .storageId("storageId")
|
||||
// .uploadDate(OffsetDateTime.now())
|
||||
// .build();
|
||||
// byte[] report = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, project);
|
||||
//
|
||||
// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template13.docx")) {
|
||||
// fileOutputStream.write(report);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@ -14,14 +14,13 @@ import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig;
|
||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileAttributes;
|
||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
||||
import com.iqser.red.service.file.management.v1.api.model.Status;
|
||||
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.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.redaction.report.v1.server.client.DossierClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient;
|
||||
import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient;
|
||||
|
||||
import io.undertow.util.BadRequestException;
|
||||
@ -36,7 +35,7 @@ public class StatusReportGenerationServiceTest {
|
||||
private DossierClient dossierClient;
|
||||
|
||||
@Mock
|
||||
private FileAttributesClient fileAttributesClient;
|
||||
private FileAttributesConfigClient fileAttributesClient;
|
||||
|
||||
@InjectMocks
|
||||
private StatusReportGenerationService statusReportGenerationService;
|
||||
@ -47,29 +46,52 @@ public class StatusReportGenerationServiceTest {
|
||||
|
||||
String dossierId = "dossierId";
|
||||
|
||||
Dossier dossier = Dossier.builder().dossierName("dossierName").dossierId(dossierId).build();
|
||||
Dossier dossier = Dossier.builder().dossierName("dossierName").id(dossierId).build();
|
||||
when(dossierClient.getDossierById(dossierId)).thenReturn(dossier);
|
||||
|
||||
FileAttributes fileAttributes1 = new FileAttributes(Map.of("a", "A", "config2", "B2"));
|
||||
FileStatus fileStatus1 = FileStatus.builder()
|
||||
FileAttribute fileAttribute1 = new FileAttribute();
|
||||
FileAttribute.FileAttributeId fileAttributeId1 = new FileAttribute.FileAttributeId();
|
||||
fileAttributeId1.setFileAttributeConfigId("a");
|
||||
fileAttribute1.setFileAttributeId(fileAttributeId1);
|
||||
fileAttribute1.setValue("A");
|
||||
|
||||
FileAttribute fileAttribute2 = new FileAttribute();
|
||||
FileAttribute.FileAttributeId fileAttributeId2 = new FileAttribute.FileAttributeId();
|
||||
fileAttributeId2.setFileAttributeConfigId("config2");
|
||||
fileAttribute2.setFileAttributeId(fileAttributeId2);
|
||||
fileAttribute2.setValue("B2");
|
||||
|
||||
File fileStatus1 = File.builder()
|
||||
.dossierId(dossierId)
|
||||
.filename("file1desJahrhunderts")
|
||||
.lastUploaded(OffsetDateTime.now().minusHours(2))
|
||||
.currentReviewer("me")
|
||||
.status(Status.APPROVED)
|
||||
.status(FileStatus.APPROVED)
|
||||
.numberOfPages(3)
|
||||
.fileAttributes(fileAttributes1)
|
||||
.fileAttributes(List.of(fileAttribute1, fileAttribute2))
|
||||
.build();
|
||||
|
||||
FileAttributes fileAttributes2 = new FileAttributes(Map.of("config1", "X1", "y", "Y"));
|
||||
FileStatus fileStatus2 = FileStatus.builder()
|
||||
|
||||
FileAttribute fileAttribute3 = new FileAttribute();
|
||||
FileAttribute.FileAttributeId fileAttributeId3 = new FileAttribute.FileAttributeId();
|
||||
fileAttributeId3.setFileAttributeConfigId("config1");
|
||||
fileAttribute3.setFileAttributeId(fileAttributeId3);
|
||||
fileAttribute3.setValue("X1");
|
||||
|
||||
FileAttribute fileAttribute4 = new FileAttribute();
|
||||
FileAttribute.FileAttributeId fileAttributeId4 = new FileAttribute.FileAttributeId();
|
||||
fileAttributeId4.setFileAttributeConfigId("y");
|
||||
fileAttribute4.setFileAttributeId(fileAttributeId4);
|
||||
fileAttribute4.setValue("Y");
|
||||
|
||||
File fileStatus2 = File.builder()
|
||||
.dossierId(dossierId)
|
||||
.filename("file2desJahrtausendsGibtsJaNicht")
|
||||
.lastUploaded(OffsetDateTime.now())
|
||||
.currentReviewer("you")
|
||||
.status(Status.APPROVED)
|
||||
.status(FileStatus.APPROVED)
|
||||
.numberOfPages(21)
|
||||
.fileAttributes(fileAttributes2)
|
||||
.fileAttributes(List.of(fileAttribute3, fileAttribute4))
|
||||
.build();
|
||||
|
||||
when(fileStatusClient.getDossierStatus(dossierId)).thenReturn(List.of(fileStatus1, fileStatus2));
|
||||
@ -77,8 +99,7 @@ public class StatusReportGenerationServiceTest {
|
||||
FileAttributeConfig fileAttributeConfig1 = FileAttributeConfig.builder().id("config1").label("Label1").build();
|
||||
FileAttributeConfig fileAttributeConfig2 = FileAttributeConfig.builder().id("config2").label("Label2").build();
|
||||
|
||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig(null, null, List.of(fileAttributeConfig1,fileAttributeConfig2));
|
||||
when(fileAttributesClient.getFileAttributes(dossier.getDossierTemplateId())).thenReturn(fileAttributesConfig);
|
||||
when(fileAttributesClient.getFileAttributeConfigs(dossier.getDossierTemplateId())).thenReturn(List.of(fileAttributeConfig1, fileAttributeConfig2));
|
||||
|
||||
byte[] report = statusReportGenerationService.generateReport(dossier);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user