Pull request #34: RED-455: replace dossier attributes in report
Merge in RED/redaction-report-service from RED-455-16a to master * commit '5be0827d3ab38f5e0465524da5a9d2f5a9e626f1': RED-455: replace dossier attributes in report
This commit is contained in:
commit
a958ac175a
@ -0,0 +1,9 @@
|
|||||||
|
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}")
|
||||||
|
public interface DossierAttributesClient extends DossierAttributesResource {
|
||||||
|
}
|
||||||
@ -0,0 +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;
|
||||||
|
|
||||||
|
|
||||||
|
@FeignClient(name = "DossierAttributesConfigResource", url = "${configuration-service.url}")
|
||||||
|
public interface DossierAttributesConfigClient extends DossierAttributesResource {
|
||||||
|
}
|
||||||
@ -1,10 +1,12 @@
|
|||||||
package com.iqser.red.service.redaction.report.v1.server.service;
|
package com.iqser.red.service.redaction.report.v1.server.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.configuration.v1.api.model.FileAttributesConfig;
|
||||||
import com.iqser.red.service.file.management.v1.api.model.FileStatus;
|
import com.iqser.red.service.file.management.v1.api.model.*;
|
||||||
import com.iqser.red.service.file.management.v1.api.model.Dossier;
|
|
||||||
import com.iqser.red.service.file.management.v1.api.model.ReportTemplate;
|
|
||||||
import com.iqser.red.service.redaction.report.v1.api.model.ReportType;
|
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.FileAttributesClient;
|
||||||
import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient;
|
import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient;
|
||||||
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
|
||||||
@ -32,6 +34,8 @@ public class WordReportGenerationService {
|
|||||||
private final FileAttributesClient fileAttributesClient;
|
private final FileAttributesClient fileAttributesClient;
|
||||||
private final ReportTemplateClient reportTemplateClient;
|
private final ReportTemplateClient reportTemplateClient;
|
||||||
private final ReportStorageService reportStorageService;
|
private final ReportStorageService reportStorageService;
|
||||||
|
private final DossierAttributesClient dossierAttributesClient;
|
||||||
|
private final DossierAttributesConfigClient dossierAttributesConfigClient;
|
||||||
|
|
||||||
public static final String FILE_NAME_PLACEHOLDER = "{{file.name}}";
|
public static final String FILE_NAME_PLACEHOLDER = "{{file.name}}";
|
||||||
public static final String PAGE_PLACEHOLDER = "{{redaction.page}}";
|
public static final String PAGE_PLACEHOLDER = "{{redaction.page}}";
|
||||||
@ -59,10 +63,26 @@ public class WordReportGenerationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public byte[] generateReport(ReportType reportType, List<ReportRedactionEntry> reportEntries, String dossierTemplateId, String templateId, FileStatus fileStatus, Dossier project) {
|
public byte[] generateReport(ReportType reportType, List<ReportRedactionEntry> reportEntries, String dossierTemplateId, String templateId, FileStatus fileStatus, Dossier dossier) {
|
||||||
List<String> placeholders = getDefaultPlaceholders();
|
List<String> placeholders = getDefaultPlaceholders();
|
||||||
|
|
||||||
|
DossierAttributes dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getDossierId());
|
||||||
|
DossierAttributesConfig dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId);
|
||||||
|
|
||||||
|
Map<String,String> dossierAttributesPlaceholder = new HashMap<>(); //KEY:placeholder, VALUE:value
|
||||||
|
|
||||||
|
for(DossierAttribute dossierAttribute: dossierAttributes.getDossierAttributeList()) {
|
||||||
|
for(DossierAttributeConfig attribute: dossierAttributesConfig.getDossierAttributeConfigs()) {
|
||||||
|
if(dossierAttribute.getDossierAttributeId().equals(attribute.getId())) {
|
||||||
|
dossierAttributesPlaceholder.put(attribute.getPlaceholder(), dossierAttribute.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Map<String, String> fileAttributePlaceholders = getFileAttributePlaceholders(dossierTemplateId);
|
Map<String, String> fileAttributePlaceholders = getFileAttributePlaceholders(dossierTemplateId);
|
||||||
placeholders.addAll(fileAttributePlaceholders.keySet());
|
placeholders.addAll(fileAttributePlaceholders.keySet());
|
||||||
|
placeholders.addAll(dossierAttributesPlaceholder.keySet());
|
||||||
|
|
||||||
byte[] template;
|
byte[] template;
|
||||||
|
|
||||||
@ -80,7 +100,7 @@ public class WordReportGenerationService {
|
|||||||
XWPFDocument doc = new XWPFDocument(is);
|
XWPFDocument doc = new XWPFDocument(is);
|
||||||
addTableRows(doc, reportEntries, fileStatus.getFilename());
|
addTableRows(doc, reportEntries, fileStatus.getFilename());
|
||||||
for (String placeholder : placeholders) {
|
for (String placeholder : placeholders) {
|
||||||
String placeholderValue = getPlaceholderValue(placeholder, project, fileStatus, fileAttributePlaceholders);
|
String placeholderValue = getPlaceholderValue(placeholder, dossier, fileStatus, fileAttributePlaceholders, dossierAttributesPlaceholder);
|
||||||
if(placeholderValue != null) {
|
if(placeholderValue != null) {
|
||||||
replaceTextPlaceholders(doc, placeholder, placeholderValue);
|
replaceTextPlaceholders(doc, placeholder, placeholderValue);
|
||||||
}
|
}
|
||||||
@ -109,7 +129,7 @@ public class WordReportGenerationService {
|
|||||||
return fileAttributePlaceholders;
|
return fileAttributePlaceholders;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus, Map<String, String> fileAttributePlaceholders) {
|
private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus, Map<String, String> fileAttributePlaceholders, Map<String, String> dossierAttributesPlaceholders) {
|
||||||
if (placeholder.equals(FORMAT_DATE_ISO_PLACEHOLDER)) {
|
if (placeholder.equals(FORMAT_DATE_ISO_PLACEHOLDER)) {
|
||||||
return OffsetDateTime.now().format(FORMAT_DATE_ISO);
|
return OffsetDateTime.now().format(FORMAT_DATE_ISO);
|
||||||
}
|
}
|
||||||
@ -136,6 +156,9 @@ public class WordReportGenerationService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(dossierAttributesPlaceholders.containsKey(placeholder)) {
|
||||||
|
return dossierAttributesPlaceholders.get(placeholder);
|
||||||
|
}
|
||||||
throw new RuntimeException("unknown placeholder");
|
throw new RuntimeException("unknown placeholder");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,14 +3,11 @@ package com.iqser.red.service.redaction.report.v1.server;
|
|||||||
import com.amazonaws.services.s3.AmazonS3;
|
import com.amazonaws.services.s3.AmazonS3;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig;
|
import com.iqser.red.service.configuration.v1.api.model.*;
|
||||||
import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig;
|
import com.iqser.red.service.file.management.v1.api.model.*;
|
||||||
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.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.redaction.report.v1.api.model.ReportType;
|
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.FileAttributesClient;
|
||||||
import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient;
|
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.configuration.MessagingConfiguration;
|
||||||
@ -32,10 +29,7 @@ import org.springframework.test.context.junit4.SpringRunner;
|
|||||||
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
|
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
|
||||||
@ -74,6 +68,13 @@ public class RedactionReportIntegrationTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private RedactionLogConverterService redactionLogConverterService;
|
private RedactionLogConverterService redactionLogConverterService;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private DossierAttributesConfigClient dossierAttributesConfigClient;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private DossierAttributesClient dossierAttributesClient;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWordReportGeneration() throws IOException {
|
public void testWordReportGeneration() throws IOException {
|
||||||
@ -92,11 +93,18 @@ public class RedactionReportIntegrationTest {
|
|||||||
|
|
||||||
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
List<ReportRedactionEntry> reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping);
|
||||||
|
|
||||||
|
DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}")));
|
||||||
|
when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig);
|
||||||
|
|
||||||
|
DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael")));
|
||||||
|
when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes);
|
||||||
|
|
||||||
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
List<FileAttributeConfig> fileAttributeConfigs = new ArrayList<>();
|
||||||
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}"));
|
||||||
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs);
|
||||||
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig);
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> attributeIdToValue = new HashMap();
|
Map<String, String> attributeIdToValue = new HashMap();
|
||||||
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test");
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user