/* * Copyright (C) 2014 konik.io * * This file is part of Konik library. * * Konik library is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Konik library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Konik library. If not, see <http://www.gnu.org/licenses/>. */ package io.konik.utils; import static java.lang.Boolean.TRUE; import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI; import static javax.xml.bind.JAXBContext.newInstance; import static org.apache.commons.lang3.Validate.notNull; import io.konik.zugferd.Invoice; import java.net.URL; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.xml.sax.SAXException; @SuppressWarnings("javadoc") public class InvoiceLoaderUtils { private static final String ZF_1_SCHEMA_XSD = "/zfSchema/ZUGFeRD_1p0.xsd"; public static final String ZF_MUSTERRECHNUNG_EINFACH_XML = "/Musterrechnung_Einfach.xml"; public static Invoice generateRandomInvoice() { return new RandomInvoiceGenerator().generate(Invoice.class); } // public static Invoice loadInvoice() throws JAXBException{ // Unmarshaller unmarshaller = newInstance("io.konik.zugferd").createUnmarshaller(); // JAXBElement<Invoice> invoice = unmarshaller.unmarshal(loadZfBasicXmlInvoice(), Invoice.class); // assertNotNull(invoice); // assertNotNull(invoice.getValue()); // return invoice.getValue(); // } // public static InputStream loadZfBasicXmlInvoiceAsStream() { // InputStream is = InvoiceLoaderUtils.class.getResourceAsStream(ZF_MUSTERRECHNUNG_EINFACH_XML); // assertNotNull(is); // return is; // } // public static Source loadZfBasicXmlInvoice() { // Source source = new StreamSource(loadZfBasicXmlInvoiceAsStream()); // assertNotNull(source); // return source; // } public static Validator getSchemaValidator() throws SAXException { SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI); URL schemaInvoice = notNull(InvoiceLoaderUtils.class.getResource(ZF_1_SCHEMA_XSD)); Schema invoiceSchema = sf.newSchema(schemaInvoice); return invoiceSchema.newValidator(); } public static Marshaller createZfMarshaller() throws JAXBException { Marshaller marshaller = newInstance("io.konik.zugferd").createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, TRUE ); return marshaller; } public static Unmarshaller createZfUnmarshaller() throws JAXBException { return newInstance("io.konik.zugferd").createUnmarshaller(); } }