diff --git a/library/pom.xml b/library/pom.xml index 0354e8ea..51998e0f 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -44,7 +44,7 @@ github -Xdoclint:none - 11 + 8 true @@ -169,8 +169,8 @@ - 11 - 11 + 8 + 8 @@ -331,7 +331,7 @@ - 11 + 8 adopt diff --git a/library/src/main/java/org/mustangproject/Contact.java b/library/src/main/java/org/mustangproject/Contact.java index a85e61c5..dc1cdfd9 100644 --- a/library/src/main/java/org/mustangproject/Contact.java +++ b/library/src/main/java/org/mustangproject/Contact.java @@ -5,6 +5,9 @@ import com.fasterxml.jackson.annotation.JsonInclude; import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact; import org.w3c.dom.Node; import org.w3c.dom.NodeList; + +import java.util.Arrays; +import java.util.HashSet; import java.util.Set; /*** @@ -115,7 +118,7 @@ public class Contact implements IZUGFeRDExportableContact { String localName = currentItemNode.getLocalName(); if (localName != null) { - Set nameElements = Set.of("PersonName"/*CII*/, "Name"/*UBL*/); + Set nameElements = new HashSet<>(Arrays.asList("PersonName"/*CII*/, "Name"/*UBL*/)); if (localName != null && nameElements.contains(localName) && currentItemNode.getFirstChild()!=null) { setName(currentItemNode.getFirstChild().getNodeValue()); diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index b71fbd48..73e75ae8 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -335,7 +335,7 @@ public class Item implements IZUGFeRDExportableItem { return this; } - @Deprecated(since = "2.14.0") + @Deprecated() public Item addReferencedLineID(String s) { return addBuyerOrderReferencedDocumentLineID(s); } diff --git a/library/src/main/java/org/mustangproject/TradeParty.java b/library/src/main/java/org/mustangproject/TradeParty.java index 72cd1959..e4e4e7d3 100644 --- a/library/src/main/java/org/mustangproject/TradeParty.java +++ b/library/src/main/java/org/mustangproject/TradeParty.java @@ -1,8 +1,6 @@ package org.mustangproject; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -163,7 +161,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty { NodeList taxSchemechilds = partyTaxScheme.item(partyTaxSchemeIndex).getChildNodes(); for (int taxSchemechildsIndex = 0; taxSchemechildsIndex < taxSchemechilds.getLength(); taxSchemechildsIndex++) { if (taxSchemechilds.item(taxSchemechildsIndex).getLocalName() != null) { - Set taxSchemeTypes = Set.of("FC", "NOVAT"); + Set taxSchemeTypes = new HashSet<>(Arrays.asList("FC", "NOVAT")); String textContent = taxSchemechilds.item(taxSchemechildsIndex).getTextContent(); if (textContent != null && taxSchemeTypes.contains(textContent)) { setTaxID(CompanyId); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java index 8b823e5f..9a9b5340 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/TransactionCalculator.java @@ -282,7 +282,7 @@ public class TransactionCalculator implements IAbsoluteValueProvider { itemVATAmount.setVatExemptionReasonText(reasonText); } final Optional currentVatAmount = this.getCurrentVatAmount(vatAmounts, currentItem.getProduct().getTaxCategoryCode(), percent); - if (currentVatAmount.isEmpty()) { + if (!currentVatAmount.isPresent()) { vatAmounts.add(itemVATAmount); } else { this.mergeAdding(currentVatAmount.get(), itemVATAmount); @@ -299,7 +299,7 @@ public class TransactionCalculator implements IAbsoluteValueProvider { final BigDecimal chargeBasis = currentCharge.getTotalAmount(this); final VATAmount chargeVatAmount = new VATAmount(chargeBasis, chargeBasis.multiply(taxPercent.divide(new BigDecimal(100))), vatCategoryCode, vatDueDateTypeCode, taxPercent); - if (currentChargeVatAmount.isEmpty()) { + if (!currentChargeVatAmount.isPresent()) { vatAmounts.add(chargeVatAmount); } else { this.mergeAdding(currentChargeVatAmount.get(), chargeVatAmount); @@ -319,7 +319,7 @@ public class TransactionCalculator implements IAbsoluteValueProvider { allowanceNegativeBasis.multiply(taxPercent.divide(new BigDecimal(100))), currentAllowance.getCategoryCode() != null ? currentAllowance.getCategoryCode() : "S", vatDueDateTypeCode, taxPercent); - if (currentAllowanceVatAmount.isEmpty()) { + if (!currentAllowanceVatAmount.isPresent()) { vatAmounts.add(allowanceVATAmount); } else { this.mergeAdding(currentAllowanceVatAmount.get(), allowanceVATAmount); @@ -333,10 +333,13 @@ public class TransactionCalculator implements IAbsoluteValueProvider { public void mergeAdding(VATAmount vatAmount, VATAmount toAdd) { vatAmount.setBasis(vatAmount.getBasis().add(toAdd.getBasis())); vatAmount.setCalculated(vatAmount.getCalculated().add(toAdd.getCalculated())); - if (toAdd.getVatExemptionReasonText() != null && !toAdd.getVatExemptionReasonText().isBlank()) { - Optional.ofNullable(vatAmount.getVatExemptionReasonText()).filter(reasonText -> !reasonText.equals(toAdd.getVatExemptionReasonText())).ifPresentOrElse( - text -> vatAmount.setVatExemptionReasonText(String.join(", ", text, toAdd.getVatExemptionReasonText())), - () -> vatAmount.setVatExemptionReasonText(toAdd.getVatExemptionReasonText())); + if (toAdd.getVatExemptionReasonText() != null && !toAdd.getVatExemptionReasonText().trim().isEmpty()) { + Optional text = Optional.ofNullable(vatAmount.getVatExemptionReasonText()).filter(reasonText -> !reasonText.equals(toAdd.getVatExemptionReasonText())); + if (text.isPresent()) { + vatAmount.setVatExemptionReasonText(String.join(", ", text.get(), toAdd.getVatExemptionReasonText())); + } else { + vatAmount.setVatExemptionReasonText(toAdd.getVatExemptionReasonText()); + } } } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ValidationLogVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ValidationLogVisualizer.java index 53218d70..72f37432 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ValidationLogVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ValidationLogVisualizer.java @@ -76,7 +76,7 @@ public class ValidationLogVisualizer { LOGGER.error("Failed to create PDF", e1); } - return baos.toString(StandardCharsets.UTF_8); + return new String(baos.toByteArray(), StandardCharsets.UTF_8); } public byte[] createPDFBytes(String xmlLogfileContent) { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java b/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java index 4153938f..1ec5fef0 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/XMLUpgrader.java @@ -56,7 +56,7 @@ public class XMLUpgrader { ByteArrayOutputStream baos = new ByteArrayOutputStream(); applySchematronXsl(new FileInputStream(xmlFilename), baos); String res = null; - res = baos.toString(StandardCharsets.UTF_8); + res = new String(baos.toByteArray(), StandardCharsets.UTF_8); return res; } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 1dd8e819..b5e607b8 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -385,7 +385,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } String businessProcessId = trans.getBusinessProcessId(); - if (businessProcessId != null && !businessProcessId.isBlank()) { + if (businessProcessId != null && !businessProcessId.trim().isEmpty()) { xml += "\n" + "" + XMLTools.encodeXML(businessProcessId) + "\n" + "\n"; diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index a6312488..b797d2da 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -36,16 +36,7 @@ import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Base64; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -246,14 +237,14 @@ public class ZUGFeRDInvoiceImporter { */ final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); - Set validFilenames = Set.of( + Set validFilenames = new HashSet<>(Arrays.asList( "ZUGFeRD-invoice.xml", "zugferd-invoice.xml", "factur-x.xml", "xrechnung.xml", "order-x.xml", "cida.xml" - ); + )); if (validFilenames.contains(filename)) { containsMeta = true; @@ -644,7 +635,7 @@ public class ZUGFeRDInvoiceImporter { zpp.addNotes(includedNotes); String rootNode = extractString("local-name(/*)"); String potentialCashDiscountTerms=null; - if (rootNode != null && Set.of("Invoice", "CreditNote").contains(rootNode)) { + if (rootNode != null && new HashSet<>(Arrays.asList("Invoice", "CreditNote")).contains(rootNode)) { // UBL... // //*[local-name()="Invoice" or local-name()="CreditNote"] number = extractString("/*[local-name()=\"Invoice\" or local-name()=\"CreditNote\"]/*[local-name()=\"ID\"]").trim(); @@ -1374,7 +1365,7 @@ public class ZUGFeRDInvoiceImporter { if (whichType != EStandard.despatchadvice && !ignoreCalculationErrors) { // Check calculation if document type allows it and calculation errors should not be ignored - String payableTotalFromXml = XMLTools.nDigitFormat(Objects.requireNonNullElse(duePayableAmount, expectedGrandTotal), 2); + String payableTotalFromXml = XMLTools.nDigitFormat(Objects.requireNonNull(duePayableAmount != null ? duePayableAmount : expectedGrandTotal), 2); if (!calculatedPayableTotal.equals(payableTotalFromXml)) { String moreDetails = ""; try { diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java index cf9551aa..abb5c9a5 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java @@ -142,7 +142,7 @@ public class ZUGFeRDVisualizer { if (thestandard == EStandard.zugferd) { applyZF1XSLT(xmlContentStream, htmlOutput); - return htmlOutput.toString(StandardCharsets.UTF_8); + return new String(htmlOutput.toByteArray(), StandardCharsets.UTF_8); } else if (thestandard == EStandard.facturx) { //zf2 or fx applyZF2XSLT(xmlContentStream, htmlOutput); @@ -164,7 +164,7 @@ public class ZUGFeRDVisualizer { applyXSLTToHTML(in.get(), htmlOutStream, lang); } - return htmlOutStream.toString(StandardCharsets.UTF_8); + return new String(htmlOutStream.toByteArray(), StandardCharsets.UTF_8); } /** @@ -258,7 +258,7 @@ public class ZUGFeRDVisualizer { if (in.isPresent()) { applyXSLTToPDF(in.get(), baos, lang); } - return baos.toString(StandardCharsets.UTF_8); + return new String(baos.toByteArray(), StandardCharsets.UTF_8); } public void toPDF(String xmlFilename, String pdfFilename) { diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java index b0dbecb7..b9fd6897 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java @@ -66,7 +66,7 @@ public class BackwardCompatibilityTest extends TestCase implements IExportableTr ByteArrayOutputStream baos = new ByteArrayOutputStream(); ze.export(baos); ze.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -106,7 +106,7 @@ public class BackwardCompatibilityTest extends TestCase implements IExportableTr ByteArrayOutputStream baos = new ByteArrayOutputStream(); ze.export(baos); ze.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -144,7 +144,7 @@ public class BackwardCompatibilityTest extends TestCase implements IExportableTr ByteArrayOutputStream baos = new ByteArrayOutputStream(); ze.export(baos); ze.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java index 5b5024e7..5a9541a0 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java @@ -63,10 +63,10 @@ public class DeSerializationTest extends ResourceCase { public void testProduct() throws IOException, XPathExpressionException, ParseException { File inputCII = getResourceAsFile("Extended_fremdwaehrung.xml"); - var zii = new ZUGFeRDInvoiceImporter(); + ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(); zii.doIgnoreCalculationErrors(); - zii.fromXML(Files.readString(inputCII.toPath())); - var product = zii.extractInvoice() + zii.fromXML(new String(Files.readAllBytes(inputCII.toPath()))); + IZUGFeRDExportableProduct product = zii.extractInvoice() .getZFItems()[0] .getProduct(); diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java index 20c9ab42..22f89160 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java @@ -271,7 +271,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { zea1.export(TARGET_PDF); zea1.export(baos); zea1.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -460,7 +460,7 @@ public class MustangReaderWriterCustomXMLTest extends TestCase { zea1.export(TARGET_PDF); zea1.export(baos); zea1.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); assertFalse(pdfContent.indexOf("BASIC") == -1); diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java index a00df382..5fd20089 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java @@ -373,7 +373,7 @@ public class MustangReaderWriterTest extends MustangReaderTestCase { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ze.export(baos); ze.close(); - String pdfContent = baos.toString(StandardCharsets.UTF_8); + String pdfContent = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); // check for pdf-a schema extension // assertFalse(pdfContent.indexOf("EN 16931") == -1); @@ -445,7 +445,7 @@ public class MustangReaderWriterTest extends MustangReaderTestCase { result.write(buffer, 0, length); } - var bytes = result.toByteArray(); + byte[] bytes = result.toByteArray(); ze.addAdditionalFile("test.pdf", bytes); ze.setTransaction(this); diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java index 522ff9bd..f68b46ef 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/UBLTest.java @@ -90,7 +90,7 @@ public class UBLTest extends ResourceCase { final ByteArrayOutputStream baos=new ByteArrayOutputStream(); oe.export(baos); - final String theXML = baos.toString(StandardCharsets.UTF_8); + final String theXML = new String(baos.toByteArray(), StandardCharsets.UTF_8); assertTrue(theXML.contains("github -Xdoclint:none - 11 + 8 true @@ -247,7 +247,7 @@ - 11 + 8 adopt diff --git a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java index f8fa6328..35b2578f 100644 --- a/validator/src/main/java/org/mustangproject/validator/PDFValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/PDFValidator.java @@ -200,7 +200,7 @@ public class PDFValidator extends Validator { for (int i = 0; i < nodes.getLength(); i++) { Node item = nodes.item(i); String textContent = item.getTextContent(); - if (textContent != null && Set.of("INVOICE", "ORDER", "ORDER_RESPONSE", "ORDER_CHANGE").contains(textContent)) { + if (textContent != null && new HashSet<>(Arrays.asList("INVOICE", "ORDER", "ORDER_RESPONSE", "ORDER_CHANGE").contains(textContent)) { documentTypeValid = true; } } diff --git a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java index 0cb668a7..d7a90fdf 100644 --- a/validator/src/main/java/org/mustangproject/validator/XMLValidator.java +++ b/validator/src/main/java/org/mustangproject/validator/XMLValidator.java @@ -227,7 +227,7 @@ public class XMLValidator extends Validator { if (isBasicWithoutLines) { isBasic = false;// basicwl also contains the string basic... } - isEN16931 = Set.of( + isEN16931 = new HashSet<>(Arrays.asList( "urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:en16931", "urn:cen.eu:en16931:2017" ) @@ -297,7 +297,7 @@ public class XMLValidator extends Validator { //validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "ZF_211/EN16931/FACTUR-X_EN16931.xsd", 18, EPart.fx); String xrVersion = contextProfile.substring(contextProfile.length() - 3).replace(".", ""); - Set supportedVersions = Set.of("12", "20", "21", "22", "23", "30"); + Set supportedVersions = new HashSet<>(Arrays.asList("12", "20", "21", "22", "23", "30"); if (!supportedVersions.contains(xrVersion)) { throw new Exception("Unsupported XR version"); } @@ -311,7 +311,7 @@ public class XMLValidator extends Validator { } else if ("CrossIndustryDocument".equalsIgnoreCase(rootLocalName)) { // ZUGFeRD 1.0 context.setGeneration("1"); // - Set validZF1Profiles = Set.of( + Set validZF1Profiles = new HashSet<>(Arrays.asList( "urn:ferd:CrossIndustryDocument:invoice:1p0:basic", "urn:ferd:CrossIndustryDocument:invoice:1p0:comfort", "urn:ferd:CrossIndustryDocument:invoice:1p0:extended" @@ -329,7 +329,7 @@ public class XMLValidator extends Validator { if ("CII".equals(context.getFormat())) { if ("2".equals(context.getGeneration())) { - Set validZF2Profiles = Set.of( + Set validZF2Profiles = new HashSet<>(Arrays.asList( "urn:factur-x.eu:1p0:minimum", "urn:zugferd.de:2p0:minimum", "urn:factur-x.eu:1p0:basicwl", @@ -346,7 +346,7 @@ public class XMLValidator extends Validator { } else /** v1 */ { if (isOrderX) { //order-x 1.0 - if(Set.of( + if(new HashSet<>(Arrays.asList( "urn:order-x.eu:1p0:basic", "urn:order-x.eu:1p0:comfort", "urn:order-x.eu:1p0:extended" @@ -354,7 +354,7 @@ public class XMLValidator extends Validator { addUnsupportedProfileResultItem(); } - } else if (Set.of( + } else if (new HashSet<>(Arrays.asList( "urn:ferd:CrossIndustryDocument:invoice:1p0:basic", "urn:ferd:CrossIndustryDocument:invoice:1p0:comfort", "urn:ferd:CrossIndustryDocument:invoice:1p0:extended"