From 9ee90ddf5c949fb34362498efe10b1a06ff16fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Thu, 22 Aug 2019 20:54:00 +0200 Subject: [PATCH] add zugferdimporter.getversion, add total amount in metrics --- pom.xml | 4 +- .../ZUGFeRD/ZUGFeRDExporter.java | 39 +++++++++-- .../ZUGFeRD/ZUGFeRDImporter.java | 26 +++---- .../mustangproject/toecount/FileChecker.java | 3 + .../org/mustangproject/toecount/StatRun.java | 12 +++- .../org/mustangproject/toecount/Toecount.java | 38 +++++------ .../ZUGFeRD/MustangReaderWriterEdgeTest.java | 7 ++ .../mustangproject/ZUGFeRD/ZF2EdgeTest.java | 67 ++++++++++++++----- 8 files changed, 134 insertions(+), 62 deletions(-) diff --git a/pom.xml b/pom.xml index 77463aa8..890c4876 100644 --- a/pom.xml +++ b/pom.xml @@ -68,12 +68,12 @@ javax.xml.bind jaxb-api - 2.2.11 + 2.3.0 javax.activation activation - 1.1 + 1.1.1 diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java index 0330c4e4..efd93c22 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java @@ -111,7 +111,7 @@ public class ZUGFeRDExporter implements Closeable { private PDDocument doc; int ZFVersion; - private HashMap additionalXMLs = new HashMap(); + private HashMap additionalFiles = new HashMap(); private boolean disableAutoClose; @@ -130,10 +130,21 @@ public class ZUGFeRDExporter implements Closeable { init(); } - public void addAdditonalXML(String filename, byte[] xml) { - additionalXMLs.put(filename, xml); + /** + * Adds additional file attachments into the ZF + * @param filename + * @param filecontent + */ + public void addAdditionalFile(String filename, byte[] xml) { + additionalFiles.put(filename, xml); + } + /*** + * internal helper function: get namespace for given zugferd or factur-x version + * @param ver + * @return + */ public String getNamespaceForVersion(int ver) { if (isFacturX) { return "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"; @@ -147,6 +158,11 @@ public class ZUGFeRDExporter implements Closeable { } } + /*** + * internal helper: returns the namespace prefix for the given zf/fx version number + * @param ver + * @return + */ public String getPrefixForVersion(int ver) { if (isFacturX) { return "fx"; @@ -155,6 +171,11 @@ public class ZUGFeRDExporter implements Closeable { } } + /*** + * internal helper: return the name of the file attachment for the given zf/fx version + * @param ver + * @return + */ public String getFilenameForVersion(int ver) { if (isFacturX) { return "factur-x.xml"; @@ -374,8 +395,8 @@ public class ZUGFeRDExporter implements Closeable { PDFAttachGenericFile(doc, filename, "Alternative", "Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)", "text/xml", xmlProvider.getXML()); - for (String filenameAdditional : additionalXMLs.keySet()) { - PDFAttachGenericFile(doc, filenameAdditional, "Supplement", "ZUGFeRD extension/additional data", "text/xml", additionalXMLs.get(filenameAdditional)); + for (String filenameAdditional : additionalFiles.keySet()) { + PDFAttachGenericFile(doc, filenameAdditional, "Supplement", "ZUGFeRD extension/additional data", "text/xml", additionalFiles.get(filenameAdditional)); } } @@ -518,7 +539,7 @@ public class ZUGFeRDExporter implements Closeable { } /** - * Sets the ZUGFeRD conformance level (override). + * Sets the ZUGFeRD profile. * * @param zUGFeRDConformanceLevel the new conformance level * @deprecated Use {@link ZUGFeRDExporterFromA1Factory} instead @@ -532,7 +553,7 @@ public class ZUGFeRDExporter implements Closeable { } /** - * Sets the ZUGFeRD conformance level (override). + * Sets the ZUGFeRD profile. * * @param zUGFeRDConformanceLevel the new conformance level * @deprecated Use {@link #setConformanceLevel(PDFAConformanceLevel)} instead @@ -572,6 +593,10 @@ public class ZUGFeRDExporter implements Closeable { XMPSchemaPDFAExtensions pdfaex = new XMPSchemaPDFAExtensions(this, metadata, ZFVersion, attachZUGFeRDHeaders); pdfaex.setZUGFeRDVersion(ZFVersion); metadata.addSchema(pdfaex); + for (String filenameAdditional : additionalFiles.keySet()) { + XMPSchemaPDFAExtensionsAdditionalData pdfaexadd = new XMPSchemaPDFAExtensionsAdditionalData(metadata); + metadata.addSchema(pdfaexadd); + } } diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index e748332c..117d0e5d 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -32,7 +32,6 @@ import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode; import org.apache.pdfbox.pdmodel.common.PDNameTreeNode; import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification; import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile; -import org.mustangproject.toecount.Toecount; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -163,21 +162,6 @@ public class ZUGFeRDImporter { } } - private void prettyPrint(Document document) throws TransformerException { - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer transformer = null; - try { - transformer = tf.newTransformer(); - } catch (TransformerConfigurationException e) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); - } - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - StringWriter writer = new StringWriter(); - transformer.transform(new DOMSource(document), new StreamResult(writer)); - String output = writer.getBuffer().toString();//.replaceAll("\n|\r", ""); - System.err.println(output); - } - private Document getDocument() { return document; } private void setDocument() throws ParserConfigurationException, IOException, SAXException { @@ -368,6 +352,16 @@ public class ZUGFeRDImporter { } + public int getVersion() throws Exception { + if (!containsMeta) throw new Exception("Not yet parsed"); + if (getUTF8().contains("