coparing arrays for beginners
This commit is contained in:
@@ -23,12 +23,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@@ -111,13 +106,13 @@ public class ZUGFeRDImporter {
|
||||
* @param inStream a inputstream of a pdf file
|
||||
*/
|
||||
private void extractLowLevel(InputStream inStream) throws IOException {
|
||||
BufferedInputStream pdfStream=new BufferedInputStream(inStream);
|
||||
BufferedInputStream pdfStream = new BufferedInputStream(inStream);
|
||||
byte[] pad = new byte[4];
|
||||
pdfStream.mark(0);
|
||||
pdfStream.read(pad);
|
||||
pdfStream.reset();
|
||||
byte[] pdfSignature = { '%', 'P', 'D', 'F' };
|
||||
if (pad.equals(pdfSignature)) { // we have a pdf
|
||||
byte[] pdfSignature = {'%', 'P', 'D', 'F'};
|
||||
if (Arrays.equals(pad, pdfSignature)) { // we have a pdf
|
||||
|
||||
|
||||
try (PDDocument doc = PDDocument.load(pdfStream)) {
|
||||
@@ -221,8 +216,6 @@ public class ZUGFeRDImporter {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
protected String extractString(String xpathStr) {
|
||||
if (!containsMeta) {
|
||||
throw new ZUGFeRDExportException("No suitable data/ZUGFeRD file could be found.");
|
||||
@@ -358,14 +351,15 @@ public class ZUGFeRDImporter {
|
||||
}
|
||||
}
|
||||
|
||||
public Date getDetailedDeliveryPeriodFrom(){
|
||||
public Date getDetailedDeliveryPeriodFrom() {
|
||||
final String toParse = extractString(
|
||||
"//*[local-name() = 'ApplicableHeaderTradeSettlement']" +
|
||||
"//*[local-name() = 'BillingSpecifiedPeriod']" +
|
||||
"//*[local-name() = 'StartDateTime']//*[local-name() = 'DateTimeString']");
|
||||
return tryDate(toParse);
|
||||
}
|
||||
public Date getDetailedDeliveryPeriodTo(){
|
||||
|
||||
public Date getDetailedDeliveryPeriodTo() {
|
||||
final String toParse = extractString(
|
||||
"//*[local-name() = 'ApplicableHeaderTradeSettlement']" +
|
||||
"//*[local-name() = 'BillingSpecifiedPeriod']" +
|
||||
@@ -480,7 +474,9 @@ public class ZUGFeRDImporter {
|
||||
*/
|
||||
public String getBuyerTradePartyName() {
|
||||
return extractString("//*[local-name() = 'BuyerTradeParty']//*[local-name() = 'Name']");
|
||||
} /**
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the BuyerTradeParty Name
|
||||
*/
|
||||
public String getDeliveryTradePartyName() {
|
||||
@@ -488,7 +484,6 @@ public class ZUGFeRDImporter {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return the line Total Amount
|
||||
*/
|
||||
@@ -545,7 +540,6 @@ public class ZUGFeRDImporter {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return the document code
|
||||
*/
|
||||
@@ -681,7 +675,7 @@ public class ZUGFeRDImporter {
|
||||
throw new Exception("Not yet parsed");
|
||||
}
|
||||
final String head = getUTF8();
|
||||
String rootNode=extractString("local-name(/*)");
|
||||
String rootNode = extractString("local-name(/*)");
|
||||
if (rootNode.equals("CrossIndustryDocument")) {
|
||||
return EStandard.zugferd;
|
||||
} else if (rootNode.equals("Invoice")) {
|
||||
@@ -697,6 +691,7 @@ public class ZUGFeRDImporter {
|
||||
throw new Exception("ZUGFeRD version could not be determined");
|
||||
|
||||
}
|
||||
|
||||
public int getVersion() throws Exception {
|
||||
if (!containsMeta) {
|
||||
throw new Exception("Not yet parsed");
|
||||
@@ -713,8 +708,7 @@ public class ZUGFeRDImporter {
|
||||
version = 1;
|
||||
} else if (head.contains("<rsm:CrossIndustryInvoice")) {
|
||||
version = 2;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
throw new Exception("ZUGFeRD version could not be determined");
|
||||
}
|
||||
return version;
|
||||
@@ -784,6 +778,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns an instance of PostalTradeAddress for SellerTradeParty section
|
||||
*
|
||||
* @return an instance of PostalTradeAddress
|
||||
*/
|
||||
public PostalTradeAddress getBuyerTradePartyAddress() {
|
||||
@@ -806,6 +801,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns an instance of PostalTradeAddress for SellerTradeParty section
|
||||
*
|
||||
* @return an instance of PostalTradeAddress
|
||||
*/
|
||||
public PostalTradeAddress getSellerTradePartyAddress() {
|
||||
@@ -827,6 +823,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns an instance of PostalTradeAddress for ShipToTradeParty section
|
||||
*
|
||||
* @return an instance of PostalTradeAddress
|
||||
*/
|
||||
public PostalTradeAddress getDeliveryTradePartyAddress() {
|
||||
@@ -856,7 +853,7 @@ public class ZUGFeRDImporter {
|
||||
for (int j = 0; j < nodes.getLength(); j++) {
|
||||
n = nodes.item(j);
|
||||
final short nodeType = n.getNodeType();
|
||||
if ((nodeType==Node.ELEMENT_NODE)&&(n.getLocalName()!=null)){
|
||||
if ((nodeType == Node.ELEMENT_NODE) && (n.getLocalName() != null)) {
|
||||
switch (n.getLocalName()) {
|
||||
case "PostcodeCode":
|
||||
address.setPostCodeCode("");
|
||||
@@ -910,21 +907,22 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns a list of LineItems
|
||||
*
|
||||
* @return a List of LineItem instances
|
||||
*/
|
||||
public List<Item> getLineItemList() {
|
||||
final List<Node> nodeList = getLineItemNodes();
|
||||
final List<Item> lineItemList = new ArrayList<>();
|
||||
|
||||
for (final Node n: nodeList) {
|
||||
for (final Node n : nodeList) {
|
||||
final Item lineItem = new Item(null, null, null);
|
||||
lineItem.setProduct(new Product(null,null,null,null));
|
||||
lineItem.setProduct(new Product(null, null, null, null));
|
||||
|
||||
final NodeList nl = n.getChildNodes();
|
||||
for (int i = 0; i < nl.getLength(); i++) {
|
||||
final Node nn = nl.item(i);
|
||||
Node node = null;
|
||||
if (nn.getLocalName()!=null) {
|
||||
if (nn.getLocalName() != null) {
|
||||
switch (nn.getLocalName()) {
|
||||
case "SpecifiedLineTradeAgreement":
|
||||
case "SpecifiedSupplyChainTradeAgreement":
|
||||
@@ -993,12 +991,12 @@ public class ZUGFeRDImporter {
|
||||
if (node != null) {
|
||||
final Node start = getNodeByName(node.getChildNodes(), "StartDateTime");
|
||||
Node dateTimeStart = null;
|
||||
if(start != null) {
|
||||
if (start != null) {
|
||||
dateTimeStart = getNodeByName(start.getChildNodes(), "DateTimeString");
|
||||
}
|
||||
final Node end = getNodeByName(node.getChildNodes(), "EndDateTime");
|
||||
Node dateTimeEnd = null;
|
||||
if(end != null) {
|
||||
if (end != null) {
|
||||
dateTimeEnd = getNodeByName(end.getChildNodes(), "DateTimeString");
|
||||
}
|
||||
lineItem.setDetailedDeliveryPeriod(tryDate(dateTimeStart), tryDate(dateTimeEnd));
|
||||
@@ -1041,6 +1039,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns a List of LineItem Nodes from ZUGFeRD XML
|
||||
*
|
||||
* @return a List of Node instances
|
||||
*/
|
||||
public List<Node> getLineItemNodes() {
|
||||
@@ -1062,13 +1061,14 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* Returns a node, found by name. If more nodes with the same name are present, the first occurence will be returned
|
||||
*
|
||||
* @param nl - A NodeList which may contains the searched node
|
||||
* @param name The nodes name
|
||||
* @return a Node or null, if nothing is found
|
||||
*/
|
||||
private Node getNodeByName(NodeList nl, String name) {
|
||||
for (int i = 0; i < nl.getLength(); i++) {
|
||||
if ((nl.item(i).getLocalName()!=null)&&(nl.item(i).getLocalName().equals(name))) {
|
||||
if ((nl.item(i).getLocalName() != null) && (nl.item(i).getLocalName().equals(name))) {
|
||||
return nl.item(i);
|
||||
} else if (nl.item(i).getChildNodes().getLength() > 0) {
|
||||
final Node node = getNodeByName(nl.item(i).getChildNodes(), name);
|
||||
@@ -1082,6 +1082,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* Get a NodeList by providing an path
|
||||
*
|
||||
* @param path a compliable Path
|
||||
* @return a Nodelist or null, if an error occurs
|
||||
*/
|
||||
@@ -1102,6 +1103,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* returns the value of an node
|
||||
*
|
||||
* @param node the Node to get the value from
|
||||
* @return A String or empty String, if no value was found
|
||||
*/
|
||||
@@ -1114,6 +1116,7 @@ public class ZUGFeRDImporter {
|
||||
|
||||
/**
|
||||
* tries to convert an String to BigDecimal.
|
||||
*
|
||||
* @param nodeValue The value as String
|
||||
* @return a BigDecimal with the value provides as String or a BigDecimal with value 0.00 if an error occurs
|
||||
*/
|
||||
@@ -1128,6 +1131,7 @@ public class ZUGFeRDImporter {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Date tryDate(Node node) {
|
||||
final String nodeValue = getNodeValue(node);
|
||||
if (nodeValue.isEmpty()) {
|
||||
|
||||
Reference in New Issue
Block a user