From 6662f987f6faaa62dafd27dfd0172f4c99c3ebc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Mon, 10 Jun 2019 11:57:20 +0200 Subject: [PATCH] format output, some exception logging corrections --- History.md | 8 + doc/MustangWriter.java | 6 +- pom.xml | 635 +++++++++--------- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 55 +- .../ZUGFeRD/ZUGFeRDImporter.java | 13 +- .../org/mustangproject/toecount/Toecount.java | 28 +- 6 files changed, 397 insertions(+), 348 deletions(-) diff --git a/History.md b/History.md index 960ca8cc..615a200c 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,12 @@ +1.7.2 +===== + +Support BuyerReference (r+w), as well as SpecifiedLegalOrganization (w) and DefinedTradeContact (w) +use dom4j to format output xml document +corrected some exception logging glitches + + 1.7.1 ===== 2019-05-26 diff --git a/doc/MustangWriter.java b/doc/MustangWriter.java index 91c2cfe1..500923dc 100644 --- a/doc/MustangWriter.java +++ b/doc/MustangWriter.java @@ -5,12 +5,15 @@ import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; +import java.util.logging.Level; +import java.util.logging.Logger; import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTransaction; +import org.mustangproject.ZUGFeRD.ZUGFeRD2PullProvider; import org.mustangproject.ZUGFeRD.ZUGFeRDExporter; import org.mustangproject.ZUGFeRD.ZUGFeRDExporterFromA1Factory; @@ -32,8 +35,7 @@ public class MustangWriter implements IZUGFeRDExportableTransaction { ze.export("./MustangGnuaccountingBeispielRE-20171118_506new.pdf"); System.out.println("Done."); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(MustangWriter.class.getName()).log(Level.SEVERE, null, e1); } } diff --git a/pom.xml b/pom.xml index 2cd5f02c..e8b226d1 100644 --- a/pom.xml +++ b/pom.xml @@ -1,325 +1,332 @@ - - 4.0.0 - org.mustangproject.ZUGFeRD - mustang - 1.7.2-SNAPSHOT - jar - Mustang - The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs + + 4.0.0 + org.mustangproject.ZUGFeRD + mustang + 1.7.2-SNAPSHOT + jar + Mustang + The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs - http://www.mustangproject.org/ - - scm:git:https://github.com/ZUGFeRD/mustangproject.git - scm:git:https://github.com/ZUGFeRD/mustangproject.git - https://github.com/ZUGFeRD/mustangproject - mustang-1.5.2 - - - - sonatype-oss-public - https://oss.sonatype.org/content/groups/public/ - - true - - - true - - - - - - internal.repo - Temporary Staging Repository - file://${project.build.directory}/mvn-repo - - - - UTF-8 - github - -Xdoclint:none - - 1.8 - 1.8 - 1.8 - - - - - net.sf.saxon - Saxon-HE - 9.8.0-11 - - - com.sun.xml.bind - jaxb-impl - 2.2.11 - - - com.sun.xml.bind - jaxb-core - 2.2.11 - - - org.glassfish.jaxb - jaxb-runtime - 2.2.11 - - - org.apache.pdfbox - preflight - 2.0.12 - - - org.apache.pdfbox - pdfbox - 2.0.12 - - - junit - junit - 4.12 - test - - - com.helger - ph-schematron - 5.0.4 - test - - - org.xmlunit - xmlunit-core - 2.6.2 - test - - - - com.sanityinc - jargs - 2.0-SNAPSHOT - + http://www.mustangproject.org/ + + scm:git:https://github.com/ZUGFeRD/mustangproject.git + scm:git:https://github.com/ZUGFeRD/mustangproject.git + https://github.com/ZUGFeRD/mustangproject + mustang-1.5.2 + + + + sonatype-oss-public + https://oss.sonatype.org/content/groups/public/ + + true + + + true + + + + + + internal.repo + Temporary Staging Repository + file://${project.build.directory}/mvn-repo + + + + UTF-8 + github + -Xdoclint:none + + 1.8 + 1.8 + 1.8 + + + + + net.sf.saxon + Saxon-HE + 9.8.0-11 + + + com.sun.xml.bind + jaxb-impl + 2.2.11 + + + com.sun.xml.bind + jaxb-core + 2.2.11 + + + org.glassfish.jaxb + jaxb-runtime + 2.2.11 + + + org.apache.pdfbox + preflight + 2.0.12 + + + org.apache.pdfbox + pdfbox + 2.0.12 + + + org.dom4j + dom4j + 2.1.1 + + + junit + junit + 4.12 + test + + + com.helger + ph-schematron + 5.0.4 + test + + + org.xmlunit + xmlunit-core + 2.6.2 + test + + + + com.sanityinc + jargs + 2.0-SNAPSHOT + - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.3 - - - - + org.apache.maven.plugins + maven-release-plugin + 2.5.3 + + + + - - - org.apache.maven.plugins - maven-compiler-plugin - 3.6.1 - - - - true - org.mustangproject.toecount.Toecount - - - - jar-with-dependencies - - - - 1.8 - 1.8 - - + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + + + true + org.mustangproject.toecount.Toecount + + + + jar-with-dependencies + + + + 1.8 + 1.8 + + - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.0.1 - + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.1 + - org.mustangproject.ZUGFeRD.model.* + org.mustangproject.ZUGFeRD.model.* - - - - maven-deploy-plugin - 2.8.2 - - internal.repo::default::file://${project.build.directory}/mvn-repo - - - - - com.github.github - site-maven-plugin - 0.12 - - Maven artifacts for ${project.version} - - true - - ${project.build.directory}/mvn-repo - - refs/heads/mvn-repo - - - **/* - - true - mustangproject - - ZUGFeRD - - - - - - - site - - deploy - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.4.3 - - - - org.mustangproject.toecount.Toecount - - - true - + + + + maven-deploy-plugin + 2.8.2 + + internal.repo::default::file://${project.build.directory}/mvn-repo + + + + + com.github.github + site-maven-plugin + 0.12 + + Maven artifacts for ${project.version} + + true + + ${project.build.directory}/mvn-repo + + refs/heads/mvn-repo + + + **/* + + true + mustangproject + + ZUGFeRD + + + + + + + site + + deploy + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.4.3 + + + + org.mustangproject.toecount.Toecount + + + true + - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - log4j:log4j - - ** - - - - commons-logging:commons-logging - - ** - - - - com.sun.xml.bind:jaxb-impl - - ** - - - - com.sun.xml.bind:jaxb-core - - ** - - - - - - - package - - shade - - - - - - - - - - - - - org.codehaus.mojo - templating-maven-plugin - 1.0.0 - - - filtering-java-templates - - filter-sources - - - - - - org.codehaus.mojo - jaxb2-maven-plugin - 2.3.1 - - - xjc - - xjc - - - - - 2.1 - org.mustangproject.ZUGFeRD.model - - src/main/resources/schema/ZUGFeRD1p0.xsd - - - - - - - - User List - https://groups.google.com/forum/?hl=de#!forum/mustangproject - - - - - Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - A business-friendly OSS license - - - - - Jochen Stärk - jstaerk@usegroup.de - - architect - developer - - - - Alexander Schmidt - schmidt.alexander@mail.de - - developer - - - + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + log4j:log4j + + ** + + + + commons-logging:commons-logging + + ** + + + + com.sun.xml.bind:jaxb-impl + + ** + + + + com.sun.xml.bind:jaxb-core + + ** + + + + + + + package + + shade + + + + + + + + + + + + + org.codehaus.mojo + templating-maven-plugin + 1.0.0 + + + filtering-java-templates + + filter-sources + + + + + + org.codehaus.mojo + jaxb2-maven-plugin + 2.3.1 + + + xjc + + xjc + + + + + 2.1 + org.mustangproject.ZUGFeRD.model + + src/main/resources/schema/ZUGFeRD1p0.xsd + + + + + + + + User List + https://groups.google.com/forum/?hl=de#!forum/mustangproject + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + A business-friendly OSS license + + + + + Jochen Stärk + jstaerk@usegroup.de + + architect + developer + + + + Alexander Schmidt + schmidt.alexander@mail.de + + developer + + + diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index f8d01465..1516f3fb 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -18,6 +18,10 @@ *********************************************************************** */ package org.mustangproject.ZUGFeRD; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.text.DecimalFormat; @@ -25,6 +29,15 @@ import java.text.DecimalFormatSymbols; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.XMLWriter; +import org.mustangproject.toecount.Toecount; public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { @@ -121,7 +134,28 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { @Override public byte[] getXML() { - return zugferdData; + + byte[] res = zugferdData; + + StringWriter sw = new StringWriter(); + Document document=null; + try { + document = DocumentHelper.parseText(new String(zugferdData)); + } catch (DocumentException e1) { + Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e1); + } + try { + OutputFormat format = OutputFormat.createPrettyPrint(); + XMLWriter writer = new XMLWriter(sw, format); + writer.write(document); + res = sw.toString().getBytes("UTF-8"); + + } catch (IOException e) { + Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e); + } + + return res; + } private BigDecimal getTotalGross() { @@ -292,13 +326,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { xml = xml + " \n" //$NON-NLS-1$ // + " 4000001123452\n" + " " + trans.getOwnOrganisationName() + "\n"; //$NON-NLS-1$ //$NON-NLS-2$ - if (trans.getOwnOrganization()!=null) { - - xml = xml + " \n" + - " "+trans.getOwnOrganization().getID()+"\n" + - " "+trans.getOwnOrganization().getName()+"\n" + - " "; - + if (trans.getOwnOrganization() != null) { + + xml = xml + " \n" + " " + + trans.getOwnOrganization().getID() + "\n" + " " + + trans.getOwnOrganization().getName() + "\n" + + " "; + } if (trans.getOwnContact() != null) { xml = xml + "\n" + " " + trans.getOwnContact().getName() @@ -401,7 +435,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { } } /* - * xml+= " + " \n" + + * xml+= " + " \n" + * " false\n" + * " 10\n" + * " 1.00\n" + @@ -485,8 +519,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { zugferdData = zugferdRaw; } } catch (UnsupportedEncodingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); } // $NON-NLS-1$ } diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index b437067a..9b24ef11 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -32,6 +32,7 @@ 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; @@ -46,6 +47,8 @@ import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import java.io.*; import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; public class ZUGFeRDImporter { @@ -69,7 +72,7 @@ public class ZUGFeRDImporter { extractLowLevel(bis); bis.close(); } catch (IOException e) { - e.printStackTrace(); + Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } } @@ -78,7 +81,7 @@ public class ZUGFeRDImporter { try { extractLowLevel(pdfStream); } catch (IOException e) { - e.printStackTrace(); + Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } } @@ -161,7 +164,7 @@ public class ZUGFeRDImporter { try { transformer = tf.newTransformer(); } catch (TransformerConfigurationException e) { - e.printStackTrace(); + Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); } transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); StringWriter writer = new StringWriter(); @@ -190,10 +193,10 @@ public class ZUGFeRDImporter { XPath xpath = xpathFact.newXPath(); result = xpath.evaluate(xpathStr, document); } catch (ParserConfigurationException e) { - e.printStackTrace(); + Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } catch (IOException | SAXException | TransformerException | XPathExpressionException e) { - e.printStackTrace(); + Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); throw new ZUGFeRDExportException(e); } return result; diff --git a/src/main/java/org/mustangproject/toecount/Toecount.java b/src/main/java/org/mustangproject/toecount/Toecount.java index c1143fc2..d45a26ce 100755 --- a/src/main/java/org/mustangproject/toecount/Toecount.java +++ b/src/main/java/org/mustangproject/toecount/Toecount.java @@ -139,8 +139,8 @@ public class Toecount { try { input = buffer.readLine(); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); + } if (input.isEmpty()) { @@ -176,8 +176,8 @@ public class Toecount { try { selectedName = buffer.readLine(); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); + } if (selectedName.isEmpty()) { @@ -193,8 +193,7 @@ public class Toecount { try { selectedAnswer = buffer.readLine(); } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); } if (!selectedAnswer.equals("Y") && !selectedAnswer.equals("y")) { System.err.println("Aborted by user"); @@ -326,7 +325,7 @@ public class Toecount { System.exit(2); } } catch (Exception e) { - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); System.exit(-1); } @@ -454,8 +453,7 @@ public class Toecount { try { format = getStringFromUser("Format (fx=Factur-X, zf=ZUGFeRD,)", "zf", "fx|zf"); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); } } else { System.out.println("Format set to " + format); @@ -466,8 +464,7 @@ public class Toecount { try { zfVersion = getStringFromUser("Version (1 or 2)", "1", "1|2"); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); } } else { System.out.println("Version set to " + zfVersion); @@ -485,8 +482,8 @@ public class Toecount { "E", "M|m|W|w|B|b|C|c|E|e|X|x|"); } } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); + } } else { System.out.println("Profile set to " + zfProfile); @@ -550,9 +547,8 @@ public class Toecount { System.out.println("Written to " + outName); } catch (IOException e) { - e.printStackTrace(); - // } catch (JAXBException e) { - // e.printStackTrace(); + Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); + } }