From eaaf97eb6e1b5327fa6346829cbce0515489106d Mon Sep 17 00:00:00 2001 From: Stefan Schmiedl Date: Wed, 7 Aug 2019 14:53:39 +0200 Subject: [PATCH 1/2] avoid deprecated ZUGFeRDExporter methods In most cases this is achieved by using the corresponding factory methods. Since they have to be set _somehow_, I introduced a new public method `ZUGFeRDExporter.configure` to keep these calls local to the class. This is called once in A3Factory.load(byte[]). The deprecated Exporter setters could now be made private but that could break existing code. --- .../ZUGFeRD/ZUGFeRDExporter.java | 15 ++++++++++- .../ZUGFeRD/ZUGFeRDExporterFromA3Factory.java | 25 ++++--------------- .../org/mustangproject/toecount/Toecount.java | 2 +- .../MustangReaderWriterCustomXMLTest.java | 5 +++- .../ZUGFeRD/MustangReaderWriterEdgeTest.java | 2 +- .../mustangproject/ZUGFeRD/ZF2EdgeTest.java | 3 +-- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java index 5dd999eb..0330c4e4 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java @@ -97,7 +97,7 @@ public class ZUGFeRDExporter implements Closeable { */ protected String producer = "mustangproject"; /** - * Author/Creator attribute for PDF for PDF + * Author/Creator attribute for PDF */ protected String creator = "mustangproject"; /** @@ -709,4 +709,17 @@ public class ZUGFeRDExporter implements Closeable { this.attachZUGFeRDHeaders = attachZUGFeRDHeaders; } + /** + * encapsulate the deprecated setters + * @param zfVersion 1 or 2 + * @param zugferdConformanceLevel BASIC, COMFORT, EN16931, etc. + * @param creator PDF creator + * @param producer PDF producer + */ + public void configure(int zfVersion, ZUGFeRDConformanceLevel zugferdConformanceLevel, String creator, String producer) { + setZUGFeRDVersion(zfVersion); + setZUGFeRDConformanceLevel(zugferdConformanceLevel); + setCreator(creator); + setProducer(producer); + } } diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java index ffed7bb7..483f174f 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java @@ -63,20 +63,9 @@ public class ZUGFeRDExporterFromA3Factory implements IExporterFactory { public ZUGFeRDExporter load(String pdfFilename) throws IOException { ensurePDFIsValidPDFA(new FileDataSource(pdfFilename)); - ZUGFeRDExporter zugFeRDExporter; - PDDocument doc = PDDocument.load(new File(pdfFilename)); - zugFeRDExporter = new ZUGFeRDExporter(doc); - zugFeRDExporter.setZUGFeRDVersion(ZFVersion); - zugFeRDExporter.setZUGFeRDConformanceLevel(zugferdConformanceLevel); - zugFeRDExporter.setCreator(creator); - // Use creator as default for compatibility - zugFeRDExporter.setCreatorTool(creatorTool != null ? creatorTool : creator); - zugFeRDExporter.setProducer(producer); - zugFeRDExporter.setAttachZUGFeRDHeaders(attachZUGFeRDHeaders); - zugFeRDExporter.setPDFA3(ensurePDFisUpgraded); - - return zugFeRDExporter; - + try (FileInputStream pdf = new FileInputStream(pdfFilename)) { + return load(readAllBytes(pdf)); + } } @@ -88,13 +77,9 @@ public class ZUGFeRDExporterFromA3Factory implements IExporterFactory { */ public ZUGFeRDExporter load(byte[] pdfBinary) throws IOException { ensurePDFIsValidPDFA(new ByteArrayDataSource(new ByteArrayInputStream(pdfBinary))); - ZUGFeRDExporter zugFeRDExporter; PDDocument doc = PDDocument.load(pdfBinary); - zugFeRDExporter = new ZUGFeRDExporter(doc); - zugFeRDExporter.setZUGFeRDVersion(ZFVersion); - zugFeRDExporter.setZUGFeRDConformanceLevel(zugferdConformanceLevel); - zugFeRDExporter.setCreator(creator); - zugFeRDExporter.setProducer(producer); + ZUGFeRDExporter zugFeRDExporter = new ZUGFeRDExporter(doc); + zugFeRDExporter.configure(ZFVersion, zugferdConformanceLevel, creator, producer); zugFeRDExporter.setAttachZUGFeRDHeaders(attachZUGFeRDHeaders); zugFeRDExporter.setPDFA3(ensurePDFisUpgraded); diff --git a/src/main/java/org/mustangproject/toecount/Toecount.java b/src/main/java/org/mustangproject/toecount/Toecount.java index 84edf28b..688dcda2 100755 --- a/src/main/java/org/mustangproject/toecount/Toecount.java +++ b/src/main/java/org/mustangproject/toecount/Toecount.java @@ -541,10 +541,10 @@ public class Toecount { // All params are good! continue... ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setProducer("Toecount") + .setZUGFeRDVersion(zfIntVersion) .setCreator(System.getProperty("user.name")).setZUGFeRDConformanceLevel(zfConformanceLevelProfile) .load(pdfName); - ze.setZUGFeRDVersion(zfIntVersion); if (format.equals("fx")) { ze.setFacturX(); } diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java index 42c1a118..e1908c7b 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java @@ -300,7 +300,10 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { try { InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); - ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory().setProducer("My Application").setCreator("Test").setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.BASIC) + ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory() + .setProducer("My Application") + .setCreator("Test") + .setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.BASIC) .load(SOURCE_PDF); /* we have much more information than just in the basic profile (comfort or extended) but it's perfectly valid to provide more information, just not less. */ String ownZUGFeRDXML = "\n" diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java index db00461a..a104fccf 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java @@ -208,9 +208,9 @@ public class MustangReaderWriterEdgeTest extends MustangReaderTestCase { ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory() .setProducer("My Application") .setCreator(System.getProperty("user.name")) + .setZUGFeRDVersion(1) .ignorePDFAErrors() .load(SOURCE_PDF)) { - ze.setZUGFeRDVersion(1); ze.PDFattachZugferdFile(this); String theXML = new String(ze.getProvider().getXML()); assertTrue(theXML.contains(" Date: Thu, 8 Aug 2019 18:38:54 +0200 Subject: [PATCH 2/2] Update ZF2EdgeTest.java I would not want ZF1 in the test for critical cases zugferd v2 cases --- src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java index 52425c6b..f4a69812 100644 --- a/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java +++ b/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java @@ -183,7 +183,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase { ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory() .setProducer("My Application") .setCreator(System.getProperty("user.name")) - .setZUGFeRDVersion(1) + .setZUGFeRDVersion(2) .ignorePDFAErrors() .load(SOURCE_PDF)) { ze.PDFattachZugferdFile(this);