package it.datamanagement.saia_xml.test;

import it.datamanagement.saia_xml.castor.richiesta.ApplicazioneAnagrafe;
import it.datamanagement.saia_xml.castor.richiesta.Causale;
import it.datamanagement.saia_xml.castor.richiesta.Cittadinanza;
import it.datamanagement.saia_xml.castor.richiesta.Comune;
import it.datamanagement.saia_xml.castor.richiesta.ComuneDiComunicazione;
import it.datamanagement.saia_xml.castor.richiesta.Comunicazione;
import it.datamanagement.saia_xml.castor.richiesta.Generalita;
import it.datamanagement.saia_xml.castor.richiesta.LuogoNascita;
import it.datamanagement.saia_xml.castor.richiesta.Mittente;
import it.datamanagement.saia_xml.castor.richiesta.Richiesta;
import it.datamanagement.saia_xml.castor.richiesta.RichiestaSAIA;
import it.datamanagement.saia_xml.castor.richiesta.TipoComGenericaChoice;
import it.datamanagement.saia_xml.castor.richiesta.TipoLuogoChoice;
import it.datamanagement.saia_xml.castor.richiesta.TipoRichiestaSAIAChoice;
import it.datamanagement.saia_xml.castor.richiesta.TipoRichiestaSAIAChoice2;
import it.datamanagement.saia_xml.castor.richiesta.Utente;

import java.io.StringWriter;

import org.apache.log4j.Logger;
import org.exolab.castor.core.exceptions.CastorException;

public class TestRichiestaSaia
{ 
  private static Logger log = Logger.getLogger(TestProvaXML.class.getName());
  
  private static Comune buildComune()
  {
    Comune comune = new Comune();
    comune.setCodiceComuneIstat("039014");
    comune.setNomeComune(".Ravenna");
    comune.setSiglaProvinciaIstat("RA");
    
    return comune;
  }
  
  private static ComuneDiComunicazione buildComuneDiComunicazione()
  {
    ComuneDiComunicazione comune = new ComuneDiComunicazione();
    comune.setCodiceComuneIstat("039014");
    comune.setNomeComune("Ravenna");
    comune.setSiglaProvinciaIstat("RA");
    
    return comune;
  }
  
  public static void main (String[] args) 
  {
    //RichiestaSAIA
    RichiestaSAIA richiestaSaia = new RichiestaSAIA();
    richiestaSaia.setVersione("1.0");
    richiestaSaia.setVersioneXMLSAIA("1.2.0.0-2.0.0.2");
    //Mittente
    Mittente mittente = new Mittente();
    richiestaSaia.setMittente(mittente);
    mittente.setCodiceFiscaleOperatore("CSDLXA80H10H199L");
    //TipoMittenteChoice tipoMittenteChoice = new TipoMittenteChoice();
    //tipoMittenteChoice.setComuneDiComunicazione(buildComuneDiComunicazione());
    //mittente.setTipoMittenteChoice(tipoMittenteChoice);
    mittente.setComuneDiComunicazione(buildComuneDiComunicazione());
    //Utente
    Utente utente = new Utente();
    utente.setLogin("SAIA");
    utente.setPassword("SAIA");
    richiestaSaia.setUtente(utente);
    TipoRichiestaSAIAChoice tipoRichiestaSAIAChoice = new TipoRichiestaSAIAChoice();
    ApplicazioneAnagrafe applicazioneAnagrafe = new ApplicazioneAnagrafe();
    tipoRichiestaSAIAChoice.setApplicazioneAnagrafe(applicazioneAnagrafe);
    applicazioneAnagrafe.setFornitore("DM");
    applicazioneAnagrafe.setNome("DM");
    applicazioneAnagrafe.setVersione("1");
    TipoRichiestaSAIAChoice2 tipoRichiestaSAIAChoice2 = new TipoRichiestaSAIAChoice2();
    richiestaSaia.setTipoRichiestaSAIAChoice(tipoRichiestaSAIAChoice);
    richiestaSaia.setTipoRichiestaSAIAChoice2(tipoRichiestaSAIAChoice2);
    Richiesta richiesta = new Richiesta();
    Comunicazione[] comunicazioni = new Comunicazione[1];
    comunicazioni[0] = new Comunicazione();
    comunicazioni[0].setDataOraRichiesta(new java.util.Date());
    richiesta.setComunicazione(comunicazioni);
    tipoRichiestaSAIAChoice2.setRichiesta(richiesta);
    Causale causale = new Causale();
    causale.setTipoComunicazione("variazione");
    causale.setMotivoComunicazione("1");
    comunicazioni[0].setCausale(causale);
    TipoComGenericaChoice tipoComGenericaChoice = new TipoComGenericaChoice();
    comunicazioni[0].setTipoComGenericaChoice(tipoComGenericaChoice);
    Generalita generalita = new Generalita();
    generalita.setCognome("Casadei");
    generalita.setNome("Alex");
    LuogoNascita luogoNascita = new LuogoNascita();
    TipoLuogoChoice tipoLuogoChoice = new TipoLuogoChoice();
    tipoLuogoChoice.setComune(buildComune());
    luogoNascita.setTipoLuogoChoice(tipoLuogoChoice);
    generalita.setLuogoNascita(luogoNascita);
    generalita.setDataNascita(new org.exolab.castor.types.Date());
    generalita.setSesso("M");
    Cittadinanza cittadinanza = new Cittadinanza();
    cittadinanza.setCodiceStato("ITA");
    cittadinanza.setDescrizioneStato("Italiana");
    generalita.setCittadinanza(cittadinanza);
    generalita.setStatoCivile("2");
    tipoComGenericaChoice.setGeneralita(generalita);
    
    StringWriter sw = new StringWriter();
    try
    {
      richiestaSaia.marshal(sw);
      log.info("XML: "+ sw.toString());
    }
    catch (CastorException ce)
    {
        log.error("MarshalException impossibile cotruire il documento XML");
        log.error(ce);
    }
    
    System.exit(0);
  }  
  
  
}
