From c53052026035c63df574ce912d1507d7d8df800e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABlle=20FOURNIER?= <gaelle.fournier.work@gmail.com> Date: Tue, 26 May 2020 10:13:52 +0200 Subject: [PATCH] Generate Probative value PDF * remove apache FOP for performance problems * use vitamui xdocreport for pdf generation with update freemarker version * Re-enable probative value export ZIP containing PDF and json Co-authored-by: benemart <benedicte.martinez@cea.fr> --- .../dto/ProbativeOperationDto.java | 9 + .../dto/ProbativeReportDto.java | 8 +- .../referential-internal/pom.xml | 64 +- .../ProbativeValueInternalService.java | 121 ++-- .../src/main/resources/fop/fop-config.xml | 466 -------------- .../resources/fop/probativevaluereport.xsl | 603 ------------------ .../templates/probativevaluereport.ftl.odt | Bin 0 -> 18282 bytes .../ProbativeValueInternalServiceTest.java | 46 +- .../resources/data/provative_report_KO.json | 51 ++ .../data/vitam_got_metadatas_response_ko.json | 84 +++ .../data/vitam_units_response_ko.json | 66 ++ pom.xml | 23 - .../probative-value-preview.component.html | 2 +- 13 files changed, 349 insertions(+), 1194 deletions(-) delete mode 100644 api/api-referential/referential-internal/src/main/resources/fop/fop-config.xml delete mode 100644 api/api-referential/referential-internal/src/main/resources/fop/probativevaluereport.xsl create mode 100644 api/api-referential/referential-internal/src/main/resources/templates/probativevaluereport.ftl.odt create mode 100644 api/api-referential/referential-internal/src/test/resources/data/provative_report_KO.json create mode 100644 api/api-referential/referential-internal/src/test/resources/data/vitam_got_metadatas_response_ko.json create mode 100644 api/api-referential/referential-internal/src/test/resources/data/vitam_units_response_ko.json diff --git a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeOperationDto.java b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeOperationDto.java index 9668c866..74039da2 100644 --- a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeOperationDto.java +++ b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeOperationDto.java @@ -68,5 +68,14 @@ public class ProbativeOperationDto { @JsonProperty("evDateTime") private String evDateTime; + + @JsonProperty("archivalAgreement") + private String archivalAgreement; + + @JsonProperty("profil") + private String profil; + + @JsonProperty("accessContract") + private String accessContract; } diff --git a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeReportDto.java b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeReportDto.java index 1273644d..dd785d1b 100644 --- a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeReportDto.java +++ b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/export/probativevalue/dto/ProbativeReportDto.java @@ -38,6 +38,7 @@ package fr.gouv.vitamui.referential.common.export.probativevalue.dto; import java.util.List; +import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; @@ -61,6 +62,9 @@ public class ProbativeReportDto { @JsonProperty("reportEntries") private List<ReportEntryDto> reportEntries; - @JsonProperty("ReportVersion") - private Integer ReportVersion; + @JsonProperty("reportVersion") + @JsonAlias("ReportVersion") + private Integer reportVersion; + + } \ No newline at end of file diff --git a/api/api-referential/referential-internal/pom.xml b/api/api-referential/referential-internal/pom.xml index c736c0a1..0b62294d 100644 --- a/api/api-referential/referential-internal/pom.xml +++ b/api/api-referential/referential-internal/pom.xml @@ -46,7 +46,7 @@ <groupId>fr.gouv.vitamui</groupId> <artifactId>iam-security</artifactId> </dependency> - + <!-- SPRING BOOT --> <dependency> @@ -106,19 +106,42 @@ <!-- PDF generation --> <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>fop</artifactId> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>fr.opensagres.xdocreport</groupId> + <artifactId>fr.opensagres.odfdom.converter.core</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>fr.opensagres.xdocreport</groupId> + <artifactId>fr.opensagres.xdocreport.converter.odt.odfdom</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>fr.opensagres.xdocreport</groupId> + <artifactId>fr.opensagres.xdocreport.document.odt</artifactId> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>fr.opensagres.xdocreport</groupId> + <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId> + <scope>provided</scope> <exclusions> <exclusion> - <groupId>javax.media</groupId> - <artifactId>jai-core</artifactId> - </exclusion> - <exclusion> - <groupId>com.sun.media</groupId> - <artifactId>jai-codec</artifactId> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>${freemarker.upgraded.version}</version> + </dependency> + <!-- Metrics --> <dependency> @@ -162,10 +185,6 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> </dependency> - <dependency> - <groupId>com.fasterxml.jackson.dataformat</groupId> - <artifactId>jackson-dataformat-xml</artifactId> - </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> @@ -225,6 +244,25 @@ </dependencies> <build> + <testResources> + <testResource> + <directory>src/test/resources</directory> + <filtering>false</filtering> + </testResource> + </testResources> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>false</filtering> + </resource> + <resource> + <directory>src/main/resources/templates</directory> + <filtering>false</filtering> + <excludes> + <exclude>*.odt</exclude> + </excludes> + </resource> + </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalService.java b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalService.java index 6596536d..30d2f878 100644 --- a/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalService.java +++ b/api/api-referential/referential-internal/src/main/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalService.java @@ -50,29 +50,13 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.sax.SAXResult; -import javax.xml.transform.stream.StreamSource; - import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.fop.apps.FOUserAgent; -import org.apache.fop.apps.Fop; -import org.apache.fop.apps.FopFactory; -import org.apache.fop.apps.MimeConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; -import org.xml.sax.SAXException; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.exception.InvalidParseOperationException; @@ -86,10 +70,12 @@ import fr.gouv.vitamui.commons.api.exception.InternalServerException; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; import fr.gouv.vitamui.commons.api.utils.ZipUtils; +import fr.gouv.vitamui.commons.utils.PdfFileGenerator; import fr.gouv.vitamui.commons.vitam.api.access.UnitService; import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto; import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto; import fr.gouv.vitamui.referential.common.export.probativevalue.dto.ItemWithLabelDto; +import fr.gouv.vitamui.referential.common.export.probativevalue.dto.ProbativeOperationDto; import fr.gouv.vitamui.referential.common.export.probativevalue.dto.ProbativeReportDto; import fr.gouv.vitamui.referential.common.export.probativevalue.dto.ReportEntryDto; import fr.gouv.vitamui.referential.common.service.VitamBatchReportService; @@ -101,6 +87,8 @@ import fr.gouv.vitamui.referential.common.service.VitamBatchReportService; @Service public class ProbativeValueInternalService { + private static final String TEMPLATE_PROBATIVEVALUEREPORT_ODT = "templates/probativevaluereport.ftl.odt"; + private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(ProbativeValueInternalService.class); final private VitamBatchReportService vitamBatchReportService; @@ -127,7 +115,6 @@ public class ProbativeValueInternalService { final String workspaceOperationPath, final OutputStream outputStream) { checkWorkspacePath(workspaceOperationPath); getProbativeValueReportJson(vitamContext, operationId, workspaceOperationPath); - generateXml(vitamContext, operationId, workspaceOperationPath); generatePDF(vitamContext, operationId, workspaceOperationPath); generateZip(operationId, workspaceOperationPath, outputStream); @@ -135,8 +122,7 @@ public class ProbativeValueInternalService { private void getProbativeValueReportJson(final VitamContext vitamContext, final String operationId, final String workspaceOperationPath) { - try (InputStream reportStream = vitamBatchReportService.downloadBatchReport(vitamContext, - operationId)) { + try (InputStream reportStream = vitamBatchReportService.downloadBatchReport(vitamContext, operationId)) { File file = new File(workspaceOperationPath, operationId + ".json"); FileUtils.copyInputStreamToFile(reportStream, file); } catch (VitamClientException e) { @@ -149,71 +135,32 @@ public class ProbativeValueInternalService { } - private void generateXml(final VitamContext vitamContext, final String operationId, + private void generatePDF(final VitamContext vitamContext, final String operationId, final String workspaceOperationPath) { + try { File jsonReport = new File(workspaceOperationPath, operationId + ".json"); - File xmlReport = new File(workspaceOperationPath, operationId + ".xml"); ProbativeReportDto report = JsonHandler.getFromFile(jsonReport, ProbativeReportDto.class); reportEntriesConsolidation(vitamContext, report); - XmlMapper xmlMapper = new XmlMapper(); - xmlMapper.enable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION); - xmlMapper.enable(SerializationFeature.INDENT_OUTPUT); - xmlMapper.writer().withRootName("report").writeValue(xmlReport, report); - - } catch (VitamClientException | InvalidParseOperationException | IOException e) { - LOGGER.error(e.getMessage()); - throw new InternalServerException("Unable to create XML data from JSON Probative Value Report", e); - } - } - - private void generatePDF(final VitamContext vitamContext, final String operationId, - final String workspaceOperationPath) { - - File xmlfile = new File(workspaceOperationPath, operationId + ".xml"); - - try (InputStream fopconfigfile = getClass().getClassLoader().getResourceAsStream("fop/fop-config.xml"); - InputStream xsltfile = getClass().getClassLoader().getResourceAsStream("fop/probativevaluereport.xsl");){ - File pdffile = new File(workspaceOperationPath, operationId + ".pdf"); - // configure fopFactory as desired - - final FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI(), fopconfigfile); - - FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); - // configure foUserAgent as desired + try (InputStream odtTemplate = getClass().getClassLoader() + .getResourceAsStream(TEMPLATE_PROBATIVEVALUEREPORT_ODT); + OutputStream pdfOutputStream = new java.io.FileOutputStream(pdffile);) { - // Setup output - try (OutputStream out = new java.io.FileOutputStream(pdffile)) { - - // Construct fop with desired output format - Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); - - // Setup XSLT - TransformerFactory factory = TransformerFactory.newInstance(); - Transformer transformer = factory.newTransformer(new StreamSource(xsltfile)); - - // Set the value of a <param> in the stylesheet - transformer.setParameter("versionParam", "2.0"); - - // Setup input for XSLT transformation - Source src = new StreamSource(xmlfile); - - // Resulting SAX events (the generated FO) must be piped through to FOP - Result res = new SAXResult(fop.getDefaultHandler()); - - // Start XSLT transformation and FOP processing - transformer.transform(src, res); + Map<String, Object> dataMap = new HashMap<>(); + dataMap.put("report", report); + PdfFileGenerator.createPdf(odtTemplate, pdfOutputStream, dataMap); + } catch (Exception e) { + LOGGER.error(e.getMessage()); + throw new InternalServerException("Unable to create PDF from Probative Value Report template ODT", e); } - - } catch (TransformerException | IOException | SAXException e) { - LOGGER.error(e.getMessage()); - throw new InternalServerException("Unable to create PDF from Probative Value Report XML", e); - } finally { - FileUtils.deleteQuietly(xmlfile); + } catch (InvalidParseOperationException | VitamClientException exc) { + LOGGER.error(exc.getMessage()); + throw new InternalServerException("Unable to create PDF from Probative Value Report Json value", exc); } + } private void generateZip(final String operationId, final String workspaceOperationPath, @@ -225,6 +172,7 @@ public class ProbativeValueInternalService { streams.put(operationId + ".json", new FileInputStream(jsonFile)); streams.put(operationId + ".pdf", new FileInputStream(pdfFile)); } catch (FileNotFoundException e) { + LOGGER.error(e.getMessage()); throw new InternalServerException(String.format("Unable to generate ZIP: %s", e.getMessage()), e); } ZipUtils.generate(streams, outputStream); @@ -263,9 +211,30 @@ public class ProbativeValueInternalService { ObjectGroupResponse.class); Optional<QualifiersModel> qualifierObject = objectGroupResponse.getQualifiers().stream() .filter(item -> usage.equals(item.getQualifier())).findFirst(); - Optional<VersionsModel> qualifierVersionObject = qualifierObject.get().getVersions().stream() - .filter(item -> version.equals(String.valueOf(item.getDataVersion()))).findFirst(); - reportEntry.setObjectLabel(qualifierVersionObject.get().getFileInfoModel().getFilename()); + if (qualifierObject.isPresent()) { + Optional<VersionsModel> qualifierVersionObject = qualifierObject.get().getVersions().stream() + .filter(item -> version.equals(String.valueOf(item.getDataVersion()))).findFirst(); + if (qualifierVersionObject.isPresent()) { + reportEntry.setObjectLabel(qualifierVersionObject.get().getFileInfoModel().getFilename()); + } + } + } + + // extract operations infos from JsonNode RightsStatementIdentifier + for (ProbativeOperationDto operation : reportEntry.getOperations()) { + if (operation.getRightsStatementIdentifier() != null) { + if (operation.getRightsStatementIdentifier().has("ArchivalAgreement")) { + operation.setArchivalAgreement( + operation.getRightsStatementIdentifier().get("ArchivalAgreement").asText()); + } + if (operation.getRightsStatementIdentifier().has("Profil")) { + operation.setProfil(operation.getRightsStatementIdentifier().get("Profil").asText()); + } + if (operation.getRightsStatementIdentifier().has("AccessContract")) { + operation.setAccessContract( + operation.getRightsStatementIdentifier().get("AccessContract").asText()); + } + } } } diff --git a/api/api-referential/referential-internal/src/main/resources/fop/fop-config.xml b/api/api-referential/referential-internal/src/main/resources/fop/fop-config.xml deleted file mode 100644 index 959d1acc..00000000 --- a/api/api-referential/referential-internal/src/main/resources/fop/fop-config.xml +++ /dev/null @@ -1,466 +0,0 @@ -<?xml version="1.0"?> -<!-- $Id: fop.xconf 1616312 2014-08-06 19:19:31Z gadams $ --> - -<!-- - -This is an example configuration file for FOP. -This file contains the same settings as the default values -and will have no effect if used unchanged. - -Relative config url's will be resolved relative to -the location of this file. - ---> - -<!-- NOTE: This is the version of the configuration --> -<fop version="1.0"> - - <!-- Base URL for resolving relative URLs --> - <base>.</base> - - <!-- Source resolution in dpi (dots/pixels per inch) for determining the size of pixels in SVG and bitmap images, default: 72dpi --> - <source-resolution>72</source-resolution> - <!-- Target resolution in dpi (dots/pixels per inch) for specifying the target resolution for generated bitmaps, default: 72dpi --> - <target-resolution>72</target-resolution> - - <!-- Default page-height and page-width, in case value is specified as auto --> - <default-page-settings height="11.00in" width="8.50in"/> - - <!-- Information for specific renderers --> - <!-- Uses renderer mime type for renderers --> - <renderers> - <renderer mime="application/pdf"> - <filterList> - <!-- provides compression using zlib flate (default is on) --> - <value>flate</value> - - <!-- encodes binary data into printable ascii characters (default off) - This provides about a 4:5 expansion of data size --> - <!-- <value>ascii-85</value> --> - - <!-- encodes binary data with hex representation (default off) - This filter is not recommended as it doubles the data size --> - <!-- <value>ascii-hex</value> --> - </filterList> - - <fonts> - <!-- embedded fonts --> - <!-- - This information must exactly match the font specified - in the fo file. Otherwise it will use a default font. - - For example, - <fo:inline font-family="Arial" font-weight="bold" font-style="normal"> - Arial-normal-normal font - </fo:inline> - for the font triplet specified by: - <font-triplet name="Arial" style="normal" weight="bold"/> - - If you do not want to embed the font in the pdf document - then do not include the "embed-url" attribute. - The font will be needed where the document is viewed - for it to be displayed properly. - - possible styles: normal | italic | oblique | backslant - possible weights: normal | bold | 100 | 200 | 300 | 400 - | 500 | 600 | 700 | 800 | 900 - (normal = 400, bold = 700) - --> - - <!-- - <font metrics-url="arial.xml" kerning="yes" embed-url="arial.ttf"> - <font-triplet name="Arial" style="normal" weight="normal"/> - <font-triplet name="ArialMT" style="normal" weight="normal"/> - </font> - <font metrics-url="arialb.xml" kerning="yes" embed-url="arialb.ttf"> - <font-triplet name="Arial" style="normal" weight="bold"/> - <font-triplet name="ArialMT" style="normal" weight="bold"/> - </font> - --> - - <!-- auto-detect fonts --> - <auto-detect/> - - </fonts> - - <!-- This option lets you specify additional options on an XML handler --> - <!--xml-handler namespace="http://www.w3.org/2000/svg"> - <stroke-text>false</stroke-text> - </xml-handler--> - - </renderer> - - <renderer mime="application/x-afp"> - <!-- - The bit depth and type of images produced - (this is the default setting) - --> - <images mode="b+w" bits-per-pixel="8"/> - <renderer-resolution>240</renderer-resolution> - <line-width-correction>2.5</line-width-correction> - <resource-group-file>resources.afp</resource-group-file> - - <fonts> - <!-- - Below is an example using raster font configuration using FOP builtin base-14 font metrics. - for Times Roman, Helvetica and Courier. - - Depending on AFP raster and outline font availability on your installation you will - most likely need to modify the configuration provided below. - - See http://xmlgraphics.apache.org/fop/trunk/output.html#afp-configuration - for details of FOP configuration for AFP - --> - - <!-- Times Roman --> - <font> - <afp-font name="Times Roman" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0N20060" base14-font="TimesRoman"/> - <afp-raster-font size="7" characterset="C0N20070" base14-font="TimesRoman"/> - <afp-raster-font size="8" characterset="C0N20080" base14-font="TimesRoman"/> - <afp-raster-font size="9" characterset="C0N20090" base14-font="TimesRoman"/> - <afp-raster-font size="10" characterset="C0N20000" base14-font="TimesRoman"/> - <afp-raster-font size="11" characterset="C0N200A0" base14-font="TimesRoman"/> - <afp-raster-font size="12" characterset="C0N200B0" base14-font="TimesRoman"/> - <afp-raster-font size="14" characterset="C0N200D0" base14-font="TimesRoman"/> - <afp-raster-font size="16" characterset="C0N200F0" base14-font="TimesRoman"/> - <afp-raster-font size="18" characterset="C0N200H0" base14-font="TimesRoman"/> - <afp-raster-font size="20" characterset="C0N200J0" base14-font="TimesRoman"/> - <afp-raster-font size="24" characterset="C0N200N0" base14-font="TimesRoman"/> - <afp-raster-font size="30" characterset="C0N200T0" base14-font="TimesRoman"/> - <afp-raster-font size="36" characterset="C0N200Z0" base14-font="TimesRoman"/> - </afp-font> - <font-triplet name="Times" style="normal" weight="normal"/> - <font-triplet name="TimesRoman" style="normal" weight="normal"/> - <font-triplet name="Times Roman" style="normal" weight="normal"/> - <font-triplet name="Times-Roman" style="normal" weight="normal"/> - <font-triplet name="Times New Roman" style="normal" weight="normal"/> - <font-triplet name="TimesNewRoman" style="normal" weight="normal"/> - <font-triplet name="serif" style="normal" weight="normal"/> - </font> - - <!-- Times Roman Italic --> - <font> - <afp-font name="Times Roman Italic" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0N30060" base14-font="TimesItalic"/> - <afp-raster-font size="7" characterset="C0N30070" base14-font="TimesItalic"/> - <afp-raster-font size="8" characterset="C0N30080" base14-font="TimesItalic"/> - <afp-raster-font size="9" characterset="C0N30090" base14-font="TimesItalic"/> - <afp-raster-font size="10" characterset="C0N30000" base14-font="TimesItalic"/> - <afp-raster-font size="11" characterset="C0N300A0" base14-font="TimesItalic"/> - <afp-raster-font size="12" characterset="C0N300B0" base14-font="TimesItalic"/> - <afp-raster-font size="14" characterset="C0N300D0" base14-font="TimesItalic"/> - <afp-raster-font size="16" characterset="C0N300F0" base14-font="TimesItalic"/> - <afp-raster-font size="18" characterset="C0N300H0" base14-font="TimesItalic"/> - <afp-raster-font size="20" characterset="C0N300J0" base14-font="TimesItalic"/> - <afp-raster-font size="24" characterset="C0N300N0" base14-font="TimesItalic"/> - <afp-raster-font size="30" characterset="C0N300T0" base14-font="TimesItalic"/> - <afp-raster-font size="36" characterset="C0N300Z0" base14-font="TimesItalic"/> - </afp-font> - <font-triplet name="Times" style="italic" weight="normal"/> - <font-triplet name="TimesRoman" style="italic" weight="normal"/> - <font-triplet name="Times Roman" style="italic" weight="normal"/> - <font-triplet name="Times-Roman" style="italic" weight="normal"/> - <font-triplet name="Times New Roman" style="italic" weight="normal"/> - <font-triplet name="TimesNewRoman" style="italic" weight="normal"/> - <font-triplet name="serif" style="italic" weight="normal"/> - </font> - - <!-- Times Roman Bold --> - <font> - <afp-font name="Times Roman Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0N40060" base14-font="TimesBold"/> - <afp-raster-font size="7" characterset="C0N40070" base14-font="TimesBold"/> - <afp-raster-font size="8" characterset="C0N40080" base14-font="TimesBold"/> - <afp-raster-font size="9" characterset="C0N40090" base14-font="TimesBold"/> - <afp-raster-font size="10" characterset="C0N40000" base14-font="TimesBold"/> - <afp-raster-font size="11" characterset="C0N400A0" base14-font="TimesBold"/> - <afp-raster-font size="12" characterset="C0N400B0" base14-font="TimesBold"/> - <afp-raster-font size="14" characterset="C0N400D0" base14-font="TimesBold"/> - <afp-raster-font size="16" characterset="C0N400F0" base14-font="TimesBold"/> - <afp-raster-font size="18" characterset="C0N400H0" base14-font="TimesBold"/> - <afp-raster-font size="20" characterset="C0N400J0" base14-font="TimesBold"/> - <afp-raster-font size="24" characterset="C0N400N0" base14-font="TimesBold"/> - <afp-raster-font size="30" characterset="C0N400T0" base14-font="TimesBold"/> - <afp-raster-font size="36" characterset="C0N400Z0" base14-font="TimesBold"/> - </afp-font> - <font-triplet name="Times" style="normal" weight="bold"/> - <font-triplet name="TimesRoman" style="normal" weight="bold"/> - <font-triplet name="Times Roman" style="normal" weight="bold"/> - <font-triplet name="Times-Roman" style="normal" weight="bold"/> - <font-triplet name="Times New Roman" style="normal" weight="bold"/> - <font-triplet name="TimesNewRoman" style="normal" weight="bold"/> - <font-triplet name="serif" style="normal" weight="bold"/> - </font> - - <!-- Times Roman Italic Bold --> - <font> - <afp-font name="Times Roman Italic Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0N50060" base14-font="TimesBoldItalic"/> - <afp-raster-font size="7" characterset="C0N50070" base14-font="TimesBoldItalic"/> - <afp-raster-font size="8" characterset="C0N50080" base14-font="TimesBoldItalic"/> - <afp-raster-font size="9" characterset="C0N50090" base14-font="TimesBoldItalic"/> - <afp-raster-font size="10" characterset="C0N50000" base14-font="TimesBoldItalic"/> - <afp-raster-font size="11" characterset="C0N500A0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="12" characterset="C0N500B0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="14" characterset="C0N500D0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="16" characterset="C0N500F0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="18" characterset="C0N500H0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="20" characterset="C0N500J0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="24" characterset="C0N500N0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="30" characterset="C0N500T0" base14-font="TimesBoldItalic"/> - <afp-raster-font size="36" characterset="C0N500Z0" base14-font="TimesBoldItalic"/> - </afp-font> - <font-triplet name="Times" style="italic" weight="bold"/> - <font-triplet name="TimesRoman" style="italic" weight="bold"/> - <font-triplet name="Times Roman" style="italic" weight="bold"/> - <font-triplet name="Times-Roman" style="italic" weight="bold"/> - <font-triplet name="Times New Roman" style="italic" weight="bold"/> - <font-triplet name="TimesNewRoman" style="italic" weight="bold"/> - <font-triplet name="serif" style="italic" weight="bold"/> - </font> - - <!-- Helvetica --> - <font> - <afp-font name="Helvetica" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0H20060" base14-font="Helvetica"/> - <afp-raster-font size="7" characterset="C0H20070" base14-font="Helvetica"/> - <afp-raster-font size="8" characterset="C0H20080" base14-font="Helvetica"/> - <afp-raster-font size="9" characterset="C0H20090" base14-font="Helvetica"/> - <afp-raster-font size="10" characterset="C0H20000" base14-font="Helvetica"/> - <afp-raster-font size="11" characterset="C0H200A0" base14-font="Helvetica"/> - <afp-raster-font size="12" characterset="C0H200B0" base14-font="Helvetica"/> - <afp-raster-font size="14" characterset="C0H200D0" base14-font="Helvetica"/> - <afp-raster-font size="16" characterset="C0H200F0" base14-font="Helvetica"/> - <afp-raster-font size="18" characterset="C0H200H0" base14-font="Helvetica"/> - <afp-raster-font size="20" characterset="C0H200J0" base14-font="Helvetica"/> - <afp-raster-font size="24" characterset="C0H200N0" base14-font="Helvetica"/> - <afp-raster-font size="30" characterset="C0H200T0" base14-font="Helvetica"/> - <afp-raster-font size="36" characterset="C0H200Z0" base14-font="Helvetica"/> - </afp-font> - <font-triplet name="Helvetica" style="normal" weight="normal"/> - <font-triplet name="Arial" style="normal" weight="normal"/> - <font-triplet name="sans-serif" style="normal" weight="normal"/> - <font-triplet name="any" style="normal" weight="normal"/> - </font> - - <!-- Helvetica Italic --> - <font> - <afp-font name="Helvetica Italic" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0H30060" base14-font="HelveticaOblique"/> - <afp-raster-font size="7" characterset="C0H30070" base14-font="HelveticaOblique"/> - <afp-raster-font size="8" characterset="C0H30080" base14-font="HelveticaOblique"/> - <afp-raster-font size="9" characterset="C0H30090" base14-font="HelveticaOblique"/> - <afp-raster-font size="10" characterset="C0H30000" base14-font="HelveticaOblique"/> - <afp-raster-font size="11" characterset="C0H300A0" base14-font="HelveticaOblique"/> - <afp-raster-font size="12" characterset="C0H300B0" base14-font="HelveticaOblique"/> - <afp-raster-font size="14" characterset="C0H300D0" base14-font="HelveticaOblique"/> - <afp-raster-font size="16" characterset="C0H300F0" base14-font="HelveticaOblique"/> - <afp-raster-font size="18" characterset="C0H300H0" base14-font="HelveticaOblique"/> - <afp-raster-font size="20" characterset="C0H300J0" base14-font="HelveticaOblique"/> - <afp-raster-font size="24" characterset="C0H300N0" base14-font="HelveticaOblique"/> - <afp-raster-font size="30" characterset="C0H300T0" base14-font="HelveticaOblique"/> - <afp-raster-font size="36" characterset="C0H300Z0" base14-font="HelveticaOblique"/> - </afp-font> - <font-triplet name="Helvetica" style="italic" weight="normal"/> - <font-triplet name="Arial" style="italic" weight="normal"/> - <font-triplet name="sans-serif" style="italic" weight="normal"/> - </font> - - <!-- Helvetica (Semi) Bold --> - <font> - <afp-font name="Helvetica (Semi) Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0H40060" base14-font="HelveticaBold"/> - <afp-raster-font size="7" characterset="C0H40070" base14-font="HelveticaBold"/> - <afp-raster-font size="8" characterset="C0H40080" base14-font="HelveticaBold"/> - <afp-raster-font size="9" characterset="C0H40090" base14-font="HelveticaBold"/> - <afp-raster-font size="10" characterset="C0H40000" base14-font="HelveticaBold"/> - <afp-raster-font size="11" characterset="C0H400A0" base14-font="HelveticaBold"/> - <afp-raster-font size="12" characterset="C0H400B0" base14-font="HelveticaBold"/> - <afp-raster-font size="14" characterset="C0H400D0" base14-font="HelveticaBold"/> - <afp-raster-font size="16" characterset="C0H400F0" base14-font="HelveticaBold"/> - <afp-raster-font size="18" characterset="C0H400H0" base14-font="HelveticaBold"/> - <afp-raster-font size="20" characterset="C0H400J0" base14-font="HelveticaBold"/> - <afp-raster-font size="24" characterset="C0H400N0" base14-font="HelveticaBold"/> - <afp-raster-font size="30" characterset="C0H400T0" base14-font="HelveticaBold"/> - <afp-raster-font size="36" characterset="C0H400Z0" base14-font="HelveticaBold"/> - </afp-font> - <font-triplet name="Helvetica" style="normal" weight="bold"/> - <font-triplet name="Arial" style="normal" weight="bold"/> - <font-triplet name="sans-serif" style="normal" weight="bold"/> - </font> - - <!-- Helvetica Italic (Semi) Bold --> - <font> - <afp-font name="Helvetica Italic (Semi) Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0H50060" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="7" characterset="C0H50070" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="8" characterset="C0H50080" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="9" characterset="C0H50090" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="10" characterset="C0H50000" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="11" characterset="C0H500A0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="12" characterset="C0H500B0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="14" characterset="C0H500D0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="16" characterset="C0H500F0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="18" characterset="C0H500H0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="20" characterset="C0H500J0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="24" characterset="C0H500N0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="30" characterset="C0H500T0" base14-font="HelveticaBoldOblique"/> - <afp-raster-font size="36" characterset="C0H500Z0" base14-font="HelveticaBoldOblique"/> - </afp-font> - <font-triplet name="Helvetica" style="italic" weight="bold"/> - <font-triplet name="Arial" style="italic" weight="bold"/> - <font-triplet name="sans-serif" style="italic" weight="bold"/> - </font> - - <!-- Courier --> - <font> - <afp-font name="Courier" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0420060" base14-font="Courier"/> - <afp-raster-font size="7" characterset="C0420070" base14-font="Courier"/> - <afp-raster-font size="8" characterset="C0420080" base14-font="Courier"/> - <afp-raster-font size="9" characterset="C0420090" base14-font="Courier"/> - <afp-raster-font size="10" characterset="C0420000" base14-font="Courier"/> - <afp-raster-font size="11" characterset="C04200A0" base14-font="Courier"/> - <afp-raster-font size="12" characterset="C04200B0" base14-font="Courier"/> - <afp-raster-font size="14" characterset="C04200D0" base14-font="Courier"/> - <afp-raster-font size="16" characterset="C04200F0" base14-font="Courier"/> - <afp-raster-font size="18" characterset="C04200H0" base14-font="Courier"/> - <afp-raster-font size="20" characterset="C04200J0" base14-font="Courier"/> - <afp-raster-font size="24" characterset="C04200N0" base14-font="Courier"/> - <afp-raster-font size="30" characterset="C04200T0" base14-font="Courier"/> - <afp-raster-font size="36" characterset="C04200Z0" base14-font="Courier"/> - </afp-font> - <font-triplet name="Courier" style="normal" weight="normal"/> - <font-triplet name="monospace" style="normal" weight="normal"/> - </font> - - <!-- Courier Italic --> - <font> - <afp-font name="Courier Italic" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0430060" base14-font="CourierOblique"/> - <afp-raster-font size="7" characterset="C0430070" base14-font="CourierOblique"/> - <afp-raster-font size="8" characterset="C0430080" base14-font="CourierOblique"/> - <afp-raster-font size="9" characterset="C0430090" base14-font="CourierOblique"/> - <afp-raster-font size="10" characterset="C0430000" base14-font="CourierOblique"/> - <afp-raster-font size="11" characterset="C04300A0" base14-font="CourierOblique"/> - <afp-raster-font size="12" characterset="C04300B0" base14-font="CourierOblique"/> - <afp-raster-font size="14" characterset="C04300D0" base14-font="CourierOblique"/> - <afp-raster-font size="16" characterset="C04300F0" base14-font="CourierOblique"/> - <afp-raster-font size="18" characterset="C04300H0" base14-font="CourierOblique"/> - <afp-raster-font size="20" characterset="C04300J0" base14-font="CourierOblique"/> - <afp-raster-font size="24" characterset="C04300N0" base14-font="CourierOblique"/> - <afp-raster-font size="30" characterset="C04300T0" base14-font="CourierOblique"/> - <afp-raster-font size="36" characterset="C04300Z0" base14-font="CourierOblique"/> - </afp-font> - <font-triplet name="Courier" style="italic" weight="normal"/> - <font-triplet name="monospace" style="italic" weight="normal"/> - </font> - - <!-- Courier Bold --> - <font> - <afp-font name="Courier Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0440060" base14-font="CourierBold"/> - <afp-raster-font size="7" characterset="C0440070" base14-font="CourierBold"/> - <afp-raster-font size="8" characterset="C0440080" base14-font="CourierBold"/> - <afp-raster-font size="9" characterset="C0440090" base14-font="CourierBold"/> - <afp-raster-font size="10" characterset="C0440000" base14-font="CourierBold"/> - <afp-raster-font size="11" characterset="C04400A0" base14-font="CourierBold"/> - <afp-raster-font size="12" characterset="C04400B0" base14-font="CourierBold"/> - <afp-raster-font size="14" characterset="C04400D0" base14-font="CourierBold"/> - <afp-raster-font size="16" characterset="C04400F0" base14-font="CourierBold"/> - <afp-raster-font size="18" characterset="C04400H0" base14-font="CourierBold"/> - <afp-raster-font size="20" characterset="C04400J0" base14-font="CourierBold"/> - <afp-raster-font size="24" characterset="C04400N0" base14-font="CourierBold"/> - <afp-raster-font size="30" characterset="C04400T0" base14-font="CourierBold"/> - <afp-raster-font size="36" characterset="C04400Z0" base14-font="CourierBold"/> - </afp-font> - <font-triplet name="Courier" style="normal" weight="bold"/> - <font-triplet name="monospace" style="normal" weight="bold"/> - </font> - - <!-- Courier Italic Bold --> - <font> - <afp-font name="Courier Italic Bold" type="raster" codepage="T1V10500" encoding="Cp500"> - <afp-raster-font size="6" characterset="C0450060" base14-font="CourierBoldOblique"/> - <afp-raster-font size="7" characterset="C0450070" base14-font="CourierBoldOblique"/> - <afp-raster-font size="8" characterset="C0450080" base14-font="CourierBoldOblique"/> - <afp-raster-font size="9" characterset="C0450090" base14-font="CourierBoldOblique"/> - <afp-raster-font size="10" characterset="C0450000" base14-font="CourierBoldOblique"/> - <afp-raster-font size="11" characterset="C04500A0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="12" characterset="C04500B0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="14" characterset="C04500D0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="16" characterset="C04500F0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="18" characterset="C04500H0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="20" characterset="C04500J0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="24" characterset="C04500N0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="30" characterset="C04500T0" base14-font="CourierBoldOblique"/> - <afp-raster-font size="36" characterset="C04500Z0" base14-font="CourierBoldOblique"/> - </afp-font> - <font-triplet name="Courier" style="italic" weight="bold"/> - <font-triplet name="monospace" style="italic" weight="bold"/> - </font> - - <!-- - Configure double-byte (CID Keyed font (Type 0)) AFP fonts with type="CIDKeyed". - - example: - <font> - <afp-font type="CIDKeyed" encoding="UnicodeBigUnmarked" - codepage="T1120000" characterset="CZJHMNU" - base-uri="fonts" /> - <font-triplet name="J-Heisei Mincho" style="normal" weight="normal" /> - </font> - --> - - - </fonts> - </renderer> - - <renderer mime="application/postscript"> - <!-- This option forces the PS renderer to rotate landscape pages --> - <!--auto-rotate-landscape>true</auto-rotate-landscape--> - - <!-- This option lets you specify additional options on an XML handler --> - <!--xml-handler namespace="http://www.w3.org/2000/svg"> - <stroke-text>false</stroke-text> - </xml-handler--> - </renderer> - - <renderer mime="application/vnd.hp-PCL"> - </renderer> - - <!-- MIF does not have a renderer - <renderer mime="application/vnd.mif"> - </renderer> - --> - - <renderer mime="image/svg+xml"> - <format type="paginated"/> - <link value="true"/> - <strokeText value="false"/> - </renderer> - - <renderer mime="application/awt"> - </renderer> - - <renderer mime="image/png"> - <!--transparent-page-background>true</transparent-page-background--> - </renderer> - - <renderer mime="image/tiff"> - <!--transparent-page-background>true</transparent-page-background--> - <!--compression>CCITT T.6</compression--> - </renderer> - - <renderer mime="text/xml"> - </renderer> - - <!-- RTF does not have a renderer - <renderer mime="text/rtf"> - </renderer> - --> - - </renderers> - -</fop> \ No newline at end of file diff --git a/api/api-referential/referential-internal/src/main/resources/fop/probativevaluereport.xsl b/api/api-referential/referential-internal/src/main/resources/fop/probativevaluereport.xsl deleted file mode 100644 index 277f9c66..00000000 --- a/api/api-referential/referential-internal/src/main/resources/fop/probativevaluereport.xsl +++ /dev/null @@ -1,603 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xsl:stylesheet version="1.1" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:fo="http://www.w3.org/1999/XSL/Format" - exclude-result-prefixes="fo"> - <xsl:output method="xml" version="1.0" - omit-xml-declaration="no" indent="yes" /> - <xsl:param name="versionParam" select="'1.0'" /> - - <!-- ========================= --> - <!-- root element: report --> - <!-- ========================= --> - - <xsl:template match="report"> - <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <fo:layout-master-set> - <fo:simple-page-master master-name="simpleA4" - page-height="29.7cm" page-width="21cm" margin-top="3cm" - margin-bottom="3cm" margin-left="2cm" margin-right="2cm" - font-size="14pt"> - <fo:region-body margin-bottom="2cm" margin-top="2cm"/> - <fo:region-before region-name="xsl-region-before" extent="2cm" /> - <fo:region-after region-name="xsl-region-after" extent="2cm" /> - </fo:simple-page-master> - </fo:layout-master-set> - <fo:page-sequence master-reference="simpleA4"> - <xsl:call-template name="globalHeader" /> - <xsl:call-template name="globalFooter" /> - <fo:flow flow-name="xsl-region-body"> - <xsl:apply-templates select="operationSummary" /> - <xsl:apply-templates select="reportSummary" /> - </fo:flow> - </fo:page-sequence> - <fo:page-sequence master-reference="simpleA4"> - <xsl:call-template name="globalHeader" /> - <xsl:call-template name="globalFooter" /> - <fo:flow flow-name="xsl-region-body"> - <xsl:apply-templates select="context" /> - </fo:flow> - </fo:page-sequence> - <xsl:apply-templates select="reportEntries/reportEntries" /> - </fo:root> - </xsl:template> - - <xsl:template name="globalHeader"> - <fo:static-content flow-name="xsl-region-before"> - <fo:block font-size="20pt" font-weight="bold" text-align="center" border-width="1pt" border-style="solid" padding-top="10pt" padding-bottom="8pt"> - RELEVE DE VALEUR PROBANTE - </fo:block> - </fo:static-content> - </xsl:template> - - <xsl:template name="globalFooter"> - <fo:static-content flow-name="xsl-region-after"> - <fo:block text-align="end">Page <fo:page-number/> / <fo:page-number-citation ref-id="TheVeryLastPage"/> </fo:block> - </fo:static-content> - </xsl:template> - - <xsl:template match="operationSummary"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt">== RESUME DE L'OPERATION ==</fo:block> - <fo:table border-width="1pt" border-style="none"> - - <fo:table-column column-width="5.5cm" /> - <fo:table-column /> - - <fo:table-body> - <fo:table-row> - <fo:table-cell padding-top="20pt"> - <fo:block>Tenant</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="20pt"> - <fo:block> - <xsl:value-of select="tenant" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Identifiant de l'opération</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evId" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Type d'opération</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evType" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Statut</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="outcome" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Détail</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="outDetail" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Message</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="outMsg" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - - </fo:table> - - </xsl:template> - - <xsl:template match="reportSummary"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt">== RESUME DU RAPPORT ==</fo:block> - <fo:table border-width="1pt" border-style="none"> - - <fo:table-column column-width="5.5cm" /> - <fo:table-column /> - - <fo:table-body> - <fo:table-row> - <fo:table-cell padding-top="20pt"> - <fo:block>Début</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="20pt"> - <fo:block> - <xsl:value-of select="evStartDateTime" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Fin</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evEndDateTime" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Type</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="reportType" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <xsl:apply-templates select="vitamResults" /> - </fo:table-body> - - </fo:table> - - </xsl:template> - - <xsl:template match="vitamResults"> - <fo:table-row> - <fo:table-cell number-columns-spanned="2" - padding-top="10pt"> - <fo:block>Résultats</fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" padding-top="10pt"> - <fo:block>Succès</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="10pt"> - <fo:block> - <xsl:value-of select="OK" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" padding-top="5pt"> - <fo:block>Erreurs</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="KO" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" padding-top="5pt"> - <fo:block>Avertissements</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="WARNING" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" font-weight="bold" padding-top="5pt"> - <fo:block>Total</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="total" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - - </xsl:template> - - <xsl:template match="context"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt">== REQUETE EFFECTUEE ==</fo:block> - <fo:table border-width="1pt" border-style="none"> - <fo:table-column column-width="5.5cm" /> - <fo:table-column /> - - <fo:table-body> - <fo:table-row> - <fo:table-cell padding-top="20pt"> - <fo:block>Requête</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="20pt"> - <fo:block wrap-option="wrap"> - <xsl:value-of select="dslQuery" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="10pt"> - <fo:block>Usage</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="10pt"> - <fo:block> - <xsl:value-of select="usage" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Version</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="version" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - - </fo:table> - - </xsl:template> - - <xsl:template match="reportEntries/reportEntries"> - - <fo:page-sequence master-reference="simpleA4"> - <xsl:call-template name="globalHeader" /> - <xsl:call-template name="globalFooter" /> - - <fo:flow flow-name="xsl-region-body"> - <fo:block font-size="16pt" font-weight="bold" text-align="center" border-width="1pt" border-style="none" padding-top="10pt" padding-bottom="8pt" text-decoration="underline"> - DETAIL DU RAPPORT NUM <xsl:value-of select="position()"/> - </fo:block> - <xsl:call-template name="reportEntries_reportEntries_resume"/> - <xsl:call-template name="reportEntries_reportEntries_operations"/> - <xsl:call-template name="reportEntries_reportEntries_checks"/> - <xsl:if test="position() = last()"> - <fo:block id="TheVeryLastPage"> </fo:block> - </xsl:if> - </fo:flow> - - </fo:page-sequence> - - </xsl:template> - - <xsl:template name="reportEntries_reportEntries_resume"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt">== RESUME ==</fo:block> - - <fo:block padding-top="10pt">Unités archivistiques analysées</fo:block> - <fo:list-block> - <xsl:for-each select="unitIdWithLabels/unitIdWithLabels"> - <fo:list-item> - <fo:list-item-label start-indent="0.5cm"> - <fo:block font-weight="bold"> • </fo:block> - </fo:list-item-label> - <fo:list-item-body start-indent="1.0cm"> - <fo:block space-after.optimum="14pt"> - <xsl:value-of select="item" /> - <xsl:value-of select="label" /> - </fo:block> - </fo:list-item-body> - </fo:list-item> - </xsl:for-each> - </fo:list-block> - - <fo:block padding-top="10pt">Groupe d'objet analysé</fo:block> - <fo:list-block> - <fo:list-item> - <fo:list-item-label start-indent="0.5cm"> - <fo:block font-weight="bold"> • </fo:block> - </fo:list-item-label> - <fo:list-item-body start-indent="1.0cm"> - <fo:block space-after.optimum="14pt"> - <xsl:value-of select="objectGroupId" /> - </fo:block> - </fo:list-item-body> - </fo:list-item> - </fo:list-block> - - <fo:block padding-top="10pt">Objet analysé</fo:block> - <fo:list-block> - <fo:list-item> - <fo:list-item-label start-indent="0.5cm"> - <fo:block font-weight="bold"> • </fo:block> - </fo:list-item-label> - <fo:list-item-body start-indent="1.0cm"> - <fo:block space-after.optimum="14pt"> - <xsl:value-of select="objectId" /> - <xsl:value-of select="objectLabel" /> - </fo:block> - </fo:list-item-body> - </fo:list-item> - </fo:list-block> - - <fo:table border-width="1pt" border-style="none"> - <fo:table-column column-width="5.5cm" /> - <fo:table-column /> - - <fo:table-body> - <fo:table-row> - <fo:table-cell padding-top="20pt"> - <fo:block>Usage</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="20pt"> - <fo:block> - <xsl:value-of select="substring-before(usageVersion, '_')" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Version</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="substring-after(usageVersion, '_')" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Date de début d'analyse</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evStartDateTime" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Date de fin d'analyse</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evEndDateTime" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Status</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="status" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Version du rapport</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="../../ReportVersion"/> - </fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - </fo:table> - - </xsl:template> - - <xsl:template name="reportEntries_reportEntries_operations"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt" padding-bottom="20pt">== OPERATIONS ==</fo:block> - - <fo:table border-width="1pt" border-style="solid" font-size="8pt"> - <fo:table-column column-width="6cm" border-width="1pt" border-style="solid"/> - <fo:table-column column-width="4cm" border-width="1pt" border-style="solid"/> - <fo:table-column border-width="1pt" border-style="solid"/> - - <fo:table-header> - <fo:table-cell> - <fo:block font-weight="bold" padding-top="5pt" padding-bottom="5pt" text-align="center">Id</fo:block> - </fo:table-cell> - <fo:table-cell> - <fo:block font-weight="bold" padding-top="5pt" padding-bottom="5pt" text-align="center">Date</fo:block> - </fo:table-cell> - <fo:table-cell> - <fo:block font-weight="bold" padding-top="5pt" padding-bottom="5pt" text-align="center">Détail</fo:block> - </fo:table-cell> - </fo:table-header> - - <fo:table-body> - <xsl:apply-templates select="operations/operations" /> - </fo:table-body> - </fo:table> - - - </xsl:template> - - <xsl:template match="operations/operations"> - <fo:table-row border-width="1pt" border-style="solid" margin="2pt"> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="id" /> - </fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="evDateTime" /> - </fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - Type : <xsl:value-of select="evTypeProc" /> - </fo:block> - <xsl:if test="agIdApp != ''"> - <fo:block> - Contexte applicatif : <xsl:value-of select="agIdApp" /> - </fo:block> - </xsl:if> - <xsl:template match="rightsStatementIdentifier"/> - </fo:table-cell> - </fo:table-row> - </xsl:template> - - <xsl:template match="rightsStatementIdentifier"> - <xsl:if test="ArchivalAgreement != ''"> - <fo:block> - ArchivalAgreement : <xsl:value-of select="ArchivalAgreement" /> - </fo:block> - </xsl:if> - <xsl:if test="Profil != ''"> - <fo:block> - Profil : <xsl:value-of select="Profil" /> - </fo:block> - </xsl:if> - <xsl:if test="AccessContract != ''"> - <fo:block> - Contrat d'accès : <xsl:value-of select="AccessContract" /> - </fo:block> - </xsl:if> - </xsl:template> - - <xsl:template name="reportEntries_reportEntries_checks"> - - <fo:block font-size="16pt" font-weight="bold" padding-top="40pt">== VERIFICATIONS ==</fo:block> - <xsl:apply-templates select="checks/checks" /> - - </xsl:template> - - - <xsl:template match="checks/checks"> - <fo:block font-size="12pt" font-weight="bold" padding-top="20pt"> - <xsl:if test="nameLabel != ''"><xsl:value-of select="nameLabel" /> - </xsl:if><xsl:value-of select="name" /> - </fo:block> - <fo:table border-width="1pt" border-style="none"> - <fo:table-column column-width="4cm" /> - <fo:table-column /> - - <fo:table-body> - <fo:table-row> - <fo:table-cell padding-top="10pt"> - <fo:block>Libellé explicite</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="10pt"> - <fo:block> - <xsl:value-of select="details" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Type</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="type" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Source</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="source" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Destination</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="destination" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Action</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="action" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Item</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="item" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt"> - <fo:block>Status</fo:block> - </fo:table-cell> - <fo:table-cell padding-top="5pt"> - <fo:block> - <xsl:value-of select="status" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt" number-columns-spanned="2"> - <fo:block>Source comparable</fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" padding-top="5pt" number-columns-spanned="2"> - <fo:block> - <xsl:value-of select="sourceComparable" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-top="5pt" number-columns-spanned="2"> - <fo:block>Destination comparable</fo:block> - </fo:table-cell> - </fo:table-row> - <fo:table-row> - <fo:table-cell padding-left="20pt" padding-top="5pt" number-columns-spanned="2"> - <fo:block > - <xsl:value-of select="destinationComparable" /> - </fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - </fo:table> - - </xsl:template> - -</xsl:stylesheet> diff --git a/api/api-referential/referential-internal/src/main/resources/templates/probativevaluereport.ftl.odt b/api/api-referential/referential-internal/src/main/resources/templates/probativevaluereport.ftl.odt new file mode 100644 index 0000000000000000000000000000000000000000..c48a7319a7a3a9e8d5965efc76c053bcd9f278e8 GIT binary patch literal 18282 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 Q(&t~<=g3ti`1|hv03^uuA^-pY literal 0 HcmV?d00001 diff --git a/api/api-referential/referential-internal/src/test/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalServiceTest.java b/api/api-referential/referential-internal/src/test/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalServiceTest.java index 4fbeb1c4..f10b40fe 100644 --- a/api/api-referential/referential-internal/src/test/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalServiceTest.java +++ b/api/api-referential/referential-internal/src/test/java/fr/gouv/vitamui/referential/internal/server/probativevalue/ProbativeValueInternalServiceTest.java @@ -37,7 +37,6 @@ package fr.gouv.vitamui.referential.internal.server.probativevalue; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @@ -95,8 +94,8 @@ public class ProbativeValueInternalServiceTest extends AbstractServerIdentityBui } @Test - public void testCreateOK() throws JsonParseException, JsonMappingException, VitamClientException, IOException, - InvalidParseOperationException { + public void shoudl_generate_report_on_probativereport() throws JsonParseException, JsonMappingException, + VitamClientException, IOException, InvalidParseOperationException { File workspace = this.folder.newFolder(); when(vitamProbativeValueService.downloadBatchReport(any(), any())) .thenReturn(buildVitamProbativeReport("data/provative_report_WARNING.json")); @@ -124,13 +123,11 @@ public class ProbativeValueInternalServiceTest extends AbstractServerIdentityBui assertTrue(json.exists()); File pdf = new File(workspace.getAbsolutePath(), operationId + ".pdf"); assertTrue(pdf.exists()); - File xml = new File(workspace.getAbsolutePath(), operationId + ".xml"); - assertFalse(xml.exists()); } @Test - public void testCreateMultipleEntriesOK() throws JsonParseException, JsonMappingException, VitamClientException, - IOException, InvalidParseOperationException { + public void shoudl_generate_report_on_probativereport_multiple_entries() throws JsonParseException, + JsonMappingException, VitamClientException, IOException, InvalidParseOperationException { File workspace = this.folder.newFolder(); when(vitamProbativeValueService.downloadBatchReport(any(), any())) .thenReturn(buildVitamProbativeReport("data/provative_report_WARNING_multiple_entries.json")); @@ -159,14 +156,43 @@ public class ProbativeValueInternalServiceTest extends AbstractServerIdentityBui assertTrue(Files.exists(zipJsonFile)); Path zipPdfFile = zipFs.getPath(operationId + ".pdf"); assertTrue(Files.exists(zipPdfFile)); - File json = new File(workspace.getAbsolutePath(), operationId + ".json"); assertTrue(json.exists()); File pdf = new File(workspace.getAbsolutePath(), operationId + ".pdf"); assertTrue(pdf.exists()); - File xml = new File(workspace.getAbsolutePath(), operationId + ".xml"); - assertFalse(xml.exists()); + } + + @Test + public void shoudl_generate_report_on_probativereport_ko() throws JsonParseException, JsonMappingException, + VitamClientException, IOException, InvalidParseOperationException { + File workspace = this.folder.newFolder(); + when(vitamProbativeValueService.downloadBatchReport(any(), any())) + .thenReturn(buildVitamProbativeReport("data/provative_report_KO.json")); + when(unitService.getByIdIn(any(), any())) + .thenReturn(buildVitamUISearchResponseDto("data/vitam_units_response_ko.json")); + when(unitService.findObjectMetadataById(any(), any())) + .thenReturn(buildGotMetadataResponse("data/vitam_got_metadatas_response_ko.json")); + VitamContext vitamContext = new VitamContext(0); + String operationId = "Test_KO"; + + File zip = new File(workspace.getAbsolutePath(), operationId + ".zip"); + FileOutputStream zipOutputStream = new FileOutputStream(zip); + probativeValueInternalService.exportReport(vitamContext, operationId, workspace.getAbsolutePath(), + zipOutputStream); + zipOutputStream.close(); + + assertTrue(zip.exists()); + FileSystem zipFs = FileSystems.newFileSystem(zip.toPath(), null); + Path zipJsonFile = zipFs.getPath(operationId + ".json"); + assertTrue(Files.exists(zipJsonFile)); + Path zipPdfFile = zipFs.getPath(operationId + ".pdf"); + assertTrue(Files.exists(zipPdfFile)); + + File json = new File(workspace.getAbsolutePath(), operationId + ".json"); + assertTrue(json.exists()); + File pdf = new File(workspace.getAbsolutePath(), operationId + ".pdf"); + assertTrue(pdf.exists()); } private InputStream buildVitamProbativeReport(String filename) diff --git a/api/api-referential/referential-internal/src/test/resources/data/provative_report_KO.json b/api/api-referential/referential-internal/src/test/resources/data/provative_report_KO.json new file mode 100644 index 00000000..e0054bd0 --- /dev/null +++ b/api/api-referential/referential-internal/src/test/resources/data/provative_report_KO.json @@ -0,0 +1,51 @@ +{ + "operationSummary" : { + "tenant" : 1, + "evId" : "aeeaaaaaage2jm63aaxh2alrpep3clqaaaaq", + "evType" : "EXPORT_PROBATIVE_VALUE", + "outcome" : "KO", + "outDetail" : "EXPORT_PROBATIVE_VALUE.KO", + "outMsg" : "!\u00C9chec du processus de cr\u00E9ation du relev\u00E9 de valeur probante!", + "rightsStatementIdentifier" : { + "AccessContract" : "bbbbbbbbbb" + } + }, + "reportSummary" : { + "evStartDateTime" : "2020-04-14T14:37:32.543", + "evEndDateTime" : "2020-04-14T14:37:32.547", + "reportType" : "PROBATIVE_VALUE", + "vitamResults" : { + "OK" : 0, + "KO" : 1, + "WARNING" : 0, + "total" : 1 + } + }, + "context" : { + "dslQuery" : { + "$query" : [ { + "$or" : [ { + "$in" : { + "#id" : [ "aeaqaaaaaee2jm63ab3zkalqqxr3iyaaaaaq" ] + } + } ] + } ], + "$filter" : { }, + "$projection" : { } + }, + "usage" : "BinaryMaster", + "version" : "2" + }, + "reportEntries" : [ { + "unitIds" : [ "aeaqaaaaaee2jm63ab3zkalqqxr3iyaaaaaq" ], + "objectGroupId" : "aebaaaaaaee2jm63ab3zkalqqxr3ioaaaaaq", + "objectId" : "NO_BINARY_ID", + "usageVersion" : "BinaryMaster_2", + "operations" : [ ], + "checks" : [ ], + "evStartDateTime" : "2020-04-14T14:37:32.543", + "evEndDateTime" : "2020-04-14T14:37:32.547", + "status" : "KO" + } ], + "ReportVersion" : 2 +} \ No newline at end of file diff --git a/api/api-referential/referential-internal/src/test/resources/data/vitam_got_metadatas_response_ko.json b/api/api-referential/referential-internal/src/test/resources/data/vitam_got_metadatas_response_ko.json new file mode 100644 index 00000000..859ccd97 --- /dev/null +++ b/api/api-referential/referential-internal/src/test/resources/data/vitam_got_metadatas_response_ko.json @@ -0,0 +1,84 @@ +{ + "httpCode": 200, + "$hits": { + "total": 1, + "offset": 0, + "limit": 0, + "size": 1 + }, + "$results": [ + { + "FileInfo": { + "Filename": "Pereire.txt", + "LastModified": "2017-04-04T08:07:27.825+02:00" + }, + "#id": "aebaaaaaaee2jm63ab3zkalqqxr3ioaaaaaq", + "#nbobjects": 1, + "#qualifiers": [ { + "qualifier": "BinaryMaster", + "#nbc": 1, + "versions": [ + { + "DataObjectGroupId": "aebaaaaaaahl2zz5ab23malq4gw2cnqaaaba", + "DataObjectVersion": "BinaryMaster_1", + "FormatIdentification": { + "FormatLitteral": "Plain Text File", + "MimeType": "text/plain", + "FormatId": "x-fmt/111" + }, + "FileInfo": { + "Filename": "Pereire.txt", + "LastModified": "2017-04-04T08:07:27.825+02:00" + }, + "Size": 6, + "Uri": "Content/ID35.txt", + "MessageDigest": "664ac614a819df2a97d2a5df57dcad91d6ec38b0fffc793e80c56b4553a14ac7a5f0bce3bb71af419b0bb8f151ad3d512867454eeb818e01818a31989c13319b", + "Algorithm": "SHA-512", + "#id": "aeaaaaaaaahl2zz5ab23malq4gw2cnqaaaaq", + "#opi": "aeeaaaaaachf2vysaau5malrcg7nsjqaaaaq", + "#storage": { + "strategyId": "default" + } + } + ] + }], + "#type": "", + "#tenant": 0, + "#unitups": [ + "Identifiantaeaqaaaaaee2jm63ab3zkalqqxr3iyaaaaaq" + ], + "#allunitups": [ + "aeaqaaaaaahifyagaavjialq6exbzsiaaabq", + "aeaqaaaaaahifyagaavjialq6exbzsaaaaba", + "aeaqaaaaaahifyagaavjialq6exbzmyaaaba", + "aeaqaaaaaahifyagaavjialq6exbznyaaaba", + "aeaqaaaaaahifyagaavjialq6exbzoaaaaba", + "aeaqaaaaaahifyagaavjialq6exbznaaaaca", + "aeaqaaaaaahifyagaavjialq6exbzoqaaaba", + "aeaqaaaaaahifyagaavjialq6exbzsyaaaba", + "aeaqaaaaaahifyagaavjialq6exbznaaaaaq", + "aeaqaaaaaee2jm63ab3zkalqqxr3iyaaaaaq" + ], + "#operations": [ + "aeeaaaaaachf2vysaau5malrcg7nsjqaaaaq" + ], + "#opi": "aeeaaaaaachf2vysaau5malrcg7nsjqaaaaq", + "#originating_agency": "RATP", + "#originating_agencies": [ + "RATP" + ], + "#storage": { + "strategyId": "default" + }, + "#version": 1 + } + ], + "$facetResults": [], + "$context": { + "$roots": [], + "$query": [], + "$filter": {}, + "$projection": {}, + "$facets": [] + } +} \ No newline at end of file diff --git a/api/api-referential/referential-internal/src/test/resources/data/vitam_units_response_ko.json b/api/api-referential/referential-internal/src/test/resources/data/vitam_units_response_ko.json new file mode 100644 index 00000000..b3e9942e --- /dev/null +++ b/api/api-referential/referential-internal/src/test/resources/data/vitam_units_response_ko.json @@ -0,0 +1,66 @@ +{ + "httpCode": 200, + "$hits": { + "total": 1, + "offset": 0, + "limit": 0, + "size": 1 + }, + "$results": [ + { + "DescriptionLevel": "Item", + "Title": "Pereire.txt", + "Description": "Cette ArchiveUnit ne déclare aucune règle. Elle hérite de Réaumur un NeedAuthorization à true, une StorageRule avec Copy comme FinalAction, une AppraisalRule avec Keep comme FinalAction, une DisseminationRule avec DIS-00001 comme Rule et 01/01/2000 comme StartDate (venant de Réaumur), une AccessRule avec ACC-00001 comme Rule et 01/01/2000 comme FinalAction (venant de Réaumur) et une ClassificationRule avec CLASS-00001 comme Rule et 03/06/2015 comme StartDate, Confidentiel Défense pour ClassificationLevel, ClassificationOwner0 pour ClassificationOwner, ClassificationAudience0 pour ClassificationAudience, 03/06/2016 comme ClassificationReassasingDate et un NeedReassessingAuthorization à true", + "TransactedDate": "2017-04-04T08:07:27", + "#id": "Identifiantaeaqaaaaaee2jm63ab3zkalqqxr3iyaaaaaq", + "#tenant": 0, + "#object": "aebaaaaaaee2jm63ab3zkalqqxr3ioaaaaaq", + "#unitups": [ + "aeaqaaaaaahifyagaavjialq6exbzoaaaaba" + ], + "#min": 1, + "#max": 6, + "#allunitups": [ + "aeaqaaaaaahifyagaavjialq6exbzsiaaabq", + "aeaqaaaaaahifyagaavjialq6exbzsaaaaba", + "aeaqaaaaaahifyagaavjialq6exbzmyaaaba", + "aeaqaaaaaahifyagaavjialq6exbznyaaaba", + "aeaqaaaaaahifyagaavjialq6exbzoaaaaba", + "aeaqaaaaaahifyagaavjialq6exbznaaaaca", + "aeaqaaaaaahifyagaavjialq6exbzoqaaaba", + "aeaqaaaaaahifyagaavjialq6exbzsyaaaba", + "aeaqaaaaaahifyagaavjialq6exbznaaaaaq" + ], + "#management": {}, + "#unitType": "INGEST", + "#operations": [ + "aeeaaaaaace5zejuabxxcalq6exbnviaaaaq" + ], + "#opi": "aeeaaaaaace5zejuabxxcalq6exbnviaaaaq", + "#originating_agency": "RATP", + "#originating_agencies": [ + "RATP" + ], + "#storage": { + "strategyId": "default" + }, + "#version": 0, + "#sedaVersion": "2.1", + "#implementationVersion": "3.0.1-SNAPSHOT" + } + ], + "$facetResults": [], + "$context": { + "$roots": [], + "$query": [ + { + "$in": { + "#id": [ + "aeaqaaaaaahifyagaavjialq6exbzoiaaaaq" + ] + } + } + ], + "$projection": {} + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 5d5b1462..64a82351 100644 --- a/pom.xml +++ b/pom.xml @@ -698,11 +698,6 @@ <artifactId>jackson-dataformat-csv</artifactId> <version>${jackson.version}</version> </dependency> - <dependency> - <groupId>com.fasterxml.jackson.dataformat</groupId> - <artifactId>jackson-dataformat-xml</artifactId> - <version>${jackson.version}</version> - </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> @@ -803,23 +798,6 @@ <artifactId>jlibs-xsd</artifactId> <version>${jlibs.version}</version> </dependency> - <!-- convert to PDF --> - <!-- Do not reuse Apache FOP since its usage is deprecated --> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>fop</artifactId> - <version>2.4</version> - <exclusions> - <exclusion> - <groupId>javax.media</groupId> - <artifactId>jai-core</artifactId> - </exclusion> - <exclusion> - <groupId>com.sun.media</groupId> - <artifactId>jai-codec</artifactId> - </exclusion> - </exclusions> - </dependency> <!-- Test --> <dependency> @@ -1830,4 +1808,3 @@ </profiles> </project> - diff --git a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-preview/probative-value-preview.component.html b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-preview/probative-value-preview.component.html index 9deb9bb2..5db2359b 100644 --- a/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-preview/probative-value-preview.component.html +++ b/ui/ui-frontend/projects/referential/src/app/probative-value/probative-value-preview/probative-value-preview.component.html @@ -12,7 +12,7 @@ </mat-option> </mat-select> </mat-form-field> - <!-- <button mat-button class="btn btn-primary button-maring" (click)="downloadReport()" [disabled]="!accessContractId">Télécharger le relevé</button> --> + <button mat-button class="btn btn-primary button-maring" (click)="downloadReport()" [disabled]="!accessContractId">Télécharger le relevé</button> </div> <div class="vitamui-sidepanel-body"> <mat-tab-group class="preview-tab-group"> -- GitLab