package com.axiastudio.suite.interoperabilita; import com.axiastudio.suite.interoperabilita.entities.*; import com.axiastudio.suite.interoperabilita.utilities.StringMarshalling; import com.axiastudio.suite.interoperabilita.utilities.StringUnmarshalling; import com.axiastudio.suite.protocollo.entities.Oggetto; import org.junit.*; import org.w3c.dom.Document; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import javax.xml.bind.JAXBException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.IOException; /** * User: tiziano * Date: 11/02/14 * Time: 16:27 */ public class jaxbTest { String CONTEXT = "com.axiastudio.suite.interoperabilita.entities"; @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } @Test public void leggi() throws JAXBException, IOException { String filePath = "testSegnatura.xml"; FileInputStream fileInputStream = new FileInputStream(filePath); StringBuilder builder = new StringBuilder(); int ch; while((ch = fileInputStream.read()) != -1){ builder.append((char)ch); } String xml = builder.toString(); Segnatura segnatura = (Segnatura) StringUnmarshalling.getObject(CONTEXT, xml); System.out.println(segnatura.getIntestazione().getOggetto()); } @Test public void scrivi(){ Segnatura segnatura = new Segnatura(); segnatura.setVersione("aaaa-mm-gg"); segnatura.setXmlLang("it"); Intestazione intestazione = new Intestazione(); segnatura.setIntestazione(intestazione); Identificatore identificatore = new Identificatore(); identificatore.setCodiceAmministrazione("r_h330"); identificatore.setCodiceAOO("RSERVIZI"); identificatore.setNumeroRegistrazione("0000001"); identificatore.setDataRegistrazione("2014-01-01"); identificatore.setCodiceRegistro("--"); intestazione.setIdentificatore(identificatore); Origine origine = new Origine(); intestazione.setOrigine(origine); IndirizzoTelematico indirizzoTelematico = new IndirizzoTelematico(); indirizzoTelematico.setTipo("smtp"); indirizzoTelematico.setvalue("info@comune.rivadelgarda.tn.it"); origine.setIndirizzoTelematico(indirizzoTelematico); Mittente mittente = new Mittente(); origine.setMittente(mittente); Amministrazione amministrazione = new Amministrazione(); mittente.setAmministrazione(amministrazione); Denominazione denominazione = new Denominazione(); denominazione.setvalue("Comune di Riva del Garda"); amministrazione.setDenominazione(denominazione); UnitaOrganizzativa unitaOrganizzativa = new UnitaOrganizzativa(); unitaOrganizzativa.setTipo("permanente"); Denominazione denominazioneUnitaOrganizzativa = new Denominazione(); denominazioneUnitaOrganizzativa.setvalue("Sistema informativo comunale"); unitaOrganizzativa.setDenominazione(denominazioneUnitaOrganizzativa); IndirizzoPostale indirizzoPostaleUnitaOrganizzativa = new IndirizzoPostale(); indirizzoPostaleUnitaOrganizzativa.getDenominazioneOrToponimoOrCivicoOrCAPOrComuneOrProvinciaOrNazione() .add(new Denominazione()); unitaOrganizzativa.getUnitaOrganizzativaOrRuoloOrPersonaOrIndirizzoPostaleOrIndirizzoTelematicoOrTelefonoOrFax() .add(indirizzoPostaleUnitaOrganizzativa); amministrazione.getUnitaOrganizzativaOrRuoloOrPersonaOrIndirizzoPostaleOrIndirizzoTelematicoOrTelefonoOrFax() .add(unitaOrganizzativa); AOO aoo = new AOO(); mittente.setAOO(aoo); Denominazione denominazioneAoo = new Denominazione(); aoo.setDenominazione(denominazioneAoo); denominazioneAoo.setvalue("RSERVIZI"); Destinazione destinazione = new Destinazione(); intestazione.getDestinazione().add(destinazione); destinazione.setConfermaRicezione("no"); IndirizzoTelematico indirizzoTelematicoDestinazione = new IndirizzoTelematico(); indirizzoTelematicoDestinazione.setTipo("smtp"); destinazione.setIndirizzoTelematico(indirizzoTelematicoDestinazione); indirizzoTelematicoDestinazione.setvalue("serv.supportoeinformatica@pec.provincia.tn.it"); Destinatario destinatario = new Destinatario(); destinazione.getDestinatario().add(destinatario); Amministrazione amministrazioneDestinatario = new Amministrazione(); destinatario.getAmministrazioneOrAOOOrDenominazioneOrPersona().add(amministrazioneDestinatario); Denominazione denominazioneAministrazioneDestinatario = new Denominazione(); amministrazioneDestinatario.setDenominazione(denominazioneAministrazioneDestinatario); denominazioneAministrazioneDestinatario.setvalue("Provincia Autonoma di Trento"); UnitaOrganizzativa unitaOrganizzativaAmministrazioneDestinatario = new UnitaOrganizzativa(); unitaOrganizzativaAmministrazioneDestinatario.setTipo("permanente"); amministrazioneDestinatario.getUnitaOrganizzativaOrRuoloOrPersonaOrIndirizzoPostaleOrIndirizzoTelematicoOrTelefonoOrFax() .add(unitaOrganizzativaAmministrazioneDestinatario); Denominazione denominazioneUnitaOrganizzativaDestinatario = new Denominazione(); unitaOrganizzativaAmministrazioneDestinatario.setDenominazione(denominazioneUnitaOrganizzativaDestinatario); denominazioneUnitaOrganizzativaDestinatario.setvalue("Direzione Generale della Provincia"); UnitaOrganizzativa unitaOrganizzativaAmministrazioneDestinatario2 = new UnitaOrganizzativa(); unitaOrganizzativaAmministrazioneDestinatario2.setTipo("permanente"); unitaOrganizzativaAmministrazioneDestinatario.getUnitaOrganizzativaOrRuoloOrPersonaOrIndirizzoPostaleOrIndirizzoTelematicoOrTelefonoOrFax() .add(unitaOrganizzativaAmministrazioneDestinatario2); Denominazione denominazioneUnitaOrganizzativaDestinatario2 = new Denominazione(); unitaOrganizzativaAmministrazioneDestinatario2.setDenominazione(denominazioneUnitaOrganizzativaDestinatario2); denominazioneUnitaOrganizzativaDestinatario2.setvalue("Servizio supporto amministrativo e informatica"); IndirizzoPostale indirizzoPostale = new IndirizzoPostale(); unitaOrganizzativaAmministrazioneDestinatario2.getUnitaOrganizzativaOrRuoloOrPersonaOrIndirizzoPostaleOrIndirizzoTelematicoOrTelefonoOrFax() .add(indirizzoPostale); Denominazione denominazioneIndirizzoPostale = new Denominazione(); indirizzoPostale.getDenominazioneOrToponimoOrCivicoOrCAPOrComuneOrProvinciaOrNazione() .add(denominazioneIndirizzoPostale); denominazioneIndirizzoPostale.setvalue(""); intestazione.setOggetto("Risposta"); //Riferimenti riferimenti = new Riferimenti(); //segnatura.setRiferimenti(riferimenti); Descrizione descrizione = new Descrizione(); segnatura.setDescrizione(descrizione); Documento documento = new Documento(); descrizione.getDocumentoOrTestoDelMessaggio().add(documento); documento.setNome("risposta.pdf"); documento.setTipoRiferimento("MIME"); Oggetto oggetto = new Oggetto(); documento.setOggetto("Descrizione del file risposta.pdf"); String xml = StringMarshalling.getXMLString(CONTEXT, segnatura, false); System.out.println(xml); valida(StringMarshalling.getXMLString(CONTEXT, segnatura, false)); } /* * utilities */ private Boolean valida(String xml) { DocumentBuilder docBuilder = getDocumentBuilder(); Document validationDoc = null; try { validationDoc = docBuilder.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8")))); return true; } catch (SAXException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } } private DocumentBuilder getDocumentBuilder() { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); docFactory.setValidating(true); DocumentBuilder docBuilder = null; try { docBuilder = docFactory.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } ErrorHandler errorHandler = new ErrorHandler() { @Override public void error(SAXParseException exception) throws SAXException { // do something more useful in each of these handlers exception.printStackTrace(); } @Override public void fatalError(SAXParseException exception) throws SAXException { exception.printStackTrace(); } @Override public void warning(SAXParseException exception) throws SAXException { exception.printStackTrace(); } }; docBuilder.setErrorHandler(errorHandler); return docBuilder; } }