SPCoopValidazioneSintattica.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.protocol.spcoop.validator;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.GregorianCalendar;
- import java.util.List;
- import javax.xml.soap.AttachmentPart;
- import javax.xml.soap.Detail;
- import javax.xml.soap.Name;
- import javax.xml.soap.SOAPBody;
- import javax.xml.soap.SOAPFault;
- import javax.xml.soap.SOAPHeader;
- import javax.xml.soap.SOAPHeaderElement;
- import org.openspcoop2.core.constants.TipoPdD;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.message.OpenSPCoop2Message;
- import org.openspcoop2.message.OpenSPCoop2MessageFactory;
- import org.openspcoop2.message.OpenSPCoop2SoapMessage;
- import org.openspcoop2.message.constants.Costanti;
- import org.openspcoop2.message.constants.MessageRole;
- import org.openspcoop2.message.constants.MessageType;
- import org.openspcoop2.message.soap.SoapUtils;
- import org.openspcoop2.protocol.basic.BasicStateComponentFactory;
- import org.openspcoop2.protocol.sdk.Busta;
- import org.openspcoop2.protocol.sdk.Context;
- import org.openspcoop2.protocol.sdk.Eccezione;
- import org.openspcoop2.protocol.sdk.IProtocolFactory;
- import org.openspcoop2.protocol.sdk.ProtocolException;
- import org.openspcoop2.protocol.sdk.Riscontro;
- import org.openspcoop2.protocol.sdk.Trasmissione;
- import org.openspcoop2.protocol.sdk.builder.ProprietaManifestAttachments;
- import org.openspcoop2.protocol.sdk.config.ITraduttore;
- import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
- import org.openspcoop2.protocol.sdk.constants.ContestoCodificaEccezione;
- import org.openspcoop2.protocol.sdk.constants.CostantiProtocollo;
- import org.openspcoop2.protocol.sdk.constants.ErroreCooperazione;
- import org.openspcoop2.protocol.sdk.constants.Inoltro;
- import org.openspcoop2.protocol.sdk.constants.LivelloRilevanza;
- import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
- import org.openspcoop2.protocol.sdk.constants.RuoloMessaggio;
- import org.openspcoop2.protocol.sdk.constants.TipoOraRegistrazione;
- import org.openspcoop2.protocol.sdk.state.IState;
- import org.openspcoop2.protocol.sdk.validator.IValidazioneSintattica;
- import org.openspcoop2.protocol.sdk.validator.ProprietaValidazioneErrori;
- import org.openspcoop2.protocol.sdk.validator.StrutturaBustaException;
- import org.openspcoop2.protocol.sdk.validator.ValidazioneSintatticaResult;
- import org.openspcoop2.protocol.spcoop.SPCoopBustaRawContent;
- import org.openspcoop2.protocol.spcoop.config.SPCoopProperties;
- import org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti;
- import org.openspcoop2.protocol.spcoop.constants.SPCoopCostantiPosizioneEccezione;
- import org.openspcoop2.protocol.spcoop.utils.SPCoopUtils;
- import org.openspcoop2.utils.date.DateManager;
- import org.openspcoop2.utils.date.DateUtils;
- import org.w3c.dom.Node;
- /**
- * Classe che implementa, in base al protocollo SPCoop, l'interfaccia {@link org.openspcoop2.protocol.sdk.validator.IValidazioneSintattica}
- *
- * @author Poli Andrea (apoli@link.it)
- * @author Lorenzo Nardi (nardi@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class SPCoopValidazioneSintattica extends BasicStateComponentFactory implements IValidazioneSintattica<SOAPHeaderElement>{
- /** Messaggio. */
- private OpenSPCoop2SoapMessage msg;
- public void setMsg(OpenSPCoop2SoapMessage msg) {
- this.msg = msg;
- }
- /** HeaderSOAP */
- private SOAPHeader headerSOAP = null;
- /** Header SPCoop */
- private SPCoopBustaRawContent headerEGov;
- public void setHeaderSOAP(SOAPHeader headerSOAP) {
- this.headerSOAP = headerSOAP;
- }
- /** Errori di validazione riscontrati sulla busta */
- private java.util.List<Eccezione> erroriValidazione;
- /** Errori di processamento riscontrati sulla busta */
- private java.util.List<Eccezione> erroriProcessamento;
- /** Errors riscontrati sulla lista eccezioni */
- private java.util.List<Eccezione> errorsTrovatiSullaListaEccezioni;
- /** Busta */
- private Busta busta;
- /** Eventuale messaggio di errore avvenuto durante il processo di validazione */
- private String msgErrore;
- /** Eventuale codice di errore avvenuto durante il processo di validazione */
- private CodiceErroreCooperazione codiceErrore;
- /** Indicazione se leggere gli attributi qualificati */
- private boolean readQualifiedAttribute;
- public void setReadQualifiedAttribute(boolean readQualifiedAttribute) {
- this.readQualifiedAttribute = readQualifiedAttribute;
- }
- private boolean segnalazioneElementoPresentePiuVolte = false;
-
- /** Indicazione se la busta risulta scaduta */
- private boolean messaggioScaduto = false;
-
- /** bustaErroreHeaderIntestazione: generata solo quando la busta egov arrivata non contiene gli elementi principali */
- private Busta bustaErroreHeaderIntestazione = null;
-
- // private List<String> tipiSoggetti = null;
- // private List<String> tipiServizi = null;
- private ITraduttore traduttore = null;
-
- private SPCoopProperties spcoopProperties = null;
-
- @SuppressWarnings("unused")
- private Context context;
-
- /**
- * Costruttore
- *
- * @param protocolFactory ProtocolFactory
- * @throws ProtocolException
- *
- */
- public SPCoopValidazioneSintattica(IProtocolFactory<SOAPHeaderElement> protocolFactory,IState state) throws ProtocolException{
- super(protocolFactory,state);
- this.errorsTrovatiSullaListaEccezioni = new java.util.ArrayList<Eccezione>();
- this.erroriProcessamento = new java.util.ArrayList<Eccezione>();
- this.erroriValidazione = new java.util.ArrayList<Eccezione>();
-
- // this.tipiSoggetti = this.protocolFactory.createProtocolConfiguration().getTipiSoggetti();
- // this.tipiServizi = this.protocolFactory.createProtocolConfiguration().getTipiServizi(ServiceBinding.SOAP);
-
- this.traduttore = this.protocolFactory.createTraduttore();
-
- this.spcoopProperties = SPCoopProperties.getInstance(this.log);
- }
- public SPCoopBustaRawContent getHeaderEGov(OpenSPCoop2SoapMessage aMsg, boolean readQualifiedAttribute) throws ProtocolException{
- this.msg = aMsg;
- this.readQualifiedAttribute = readQualifiedAttribute;
- return getHeaderEGov();
- }
- /**
- * Ritorna l'header SPCoop.
- *
- * @return header SPCoop.
- *
- */
- public SPCoopBustaRawContent getHeaderEGov() throws ProtocolException{
- try{
- if(this.headerEGov!=null){
- return this.headerEGov;
- }else{
- if(this.headerSOAP==null){
- this.headerSOAP = this.msg.getSOAPHeader();
- }
- this.headerEGov = this.getHeaderEGov(this.msg.getFactory(), this.headerSOAP);
- return this.headerEGov;
- }
- }catch(Exception e){
- this.log.error("ValidazioneSintattica.headerEGovAsBytes error: "+e.getMessage(),e);
- throw new ProtocolException("ValidazioneSintattica.headerEGovAsBytes error: "+e.getMessage(),e);
- }
- }
- @Override
- public void setContext(Context context) {
- this.context = context;
- }
- /**
- * Oggetto Busta SPCoop contenente i valori della busta ricevuta.
- *
- * @return busta SPCoop.
- *
- */
- public Busta getBusta(){
- return this.busta;
- }
- /**
- * Ritorna un List contenente eventuali eccezioni di validazione riscontrate nella busta SPCoop.
- *
- * @return Eccezioni riscontrate nella busta SPCoop.
- *
- */
- public java.util.List<Eccezione> getEccezioniValidazione(){
- return this.erroriValidazione;
- }
- /**
- * Ritorna un List contenente eventuali eccezioni di processamento riscontrate nella busta SPCoop.
- *
- * @return Eccezioni riscontrate nella busta SPCoop.
- *
- */
- public java.util.List<Eccezione> getEccezioniProcessamento(){
- return this.erroriProcessamento;
- }
- /**
- * Ritorna un List contenente eventuali eccezioni riscontrate nella busta SPCoop durante il processo di validazione.
- *
- * @return Eccezioni riscontrate nella busta SPCoop.
- *
- */
- public java.util.List<Eccezione> getErroriTrovatiSullaListaEccezioni(){
- return this.errorsTrovatiSullaListaEccezioni;
- }
- /**
- * In caso di avvenuto errore durante il processo di validazione,
- * questo metodo ritorna il motivo dell'errore.
- *
- * @return motivo dell'errore (se avvenuto).
- *
- */
- public String getMsgErrore(){
- return this.msgErrore;
- }
- /**
- * In caso di avvenuto errore, questo metodo ritorna il codice dell'errore.
- *
- * @return codice dell'errore (se avvenuto).
- *
- */
- public CodiceErroreCooperazione getCodiceErrore(){
- return this.codiceErrore;
- }
- /**
- * Ritorna l'header SPCoop.
- *
- * @return header SPCoop.
- *
- */
- public SPCoopBustaRawContent getHeaderSPCoop(){
- return this.headerEGov;
- }
- /**
- * Metodo che effettua una validazione sintattica di una busta SPCoop.
- * Il metodo, oltre ad effettuare la validazione della busta, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito nel List <var>errors</var>.
- *
- * @return return true in caso di validazione sintattica riuscita (con o senza anomalie), false in caso di errori di processamento.
- *
- */
- public boolean valida(boolean localizzaSolamenteDatiIdentificativiMinimi){
- OpenSPCoop2MessageFactory messageFactory = null;
- try{
- /** ------ CONTROLLO PRESENZA BUSTA SPCOOP ----- */
- // Estraggo header
- if(this.headerSOAP==null)
- this.headerSOAP = this.msg.getSOAPHeader();
- if(this.headerSOAP==null){
- this.msgErrore = "Analizzato un messaggio senza header";
- this.codiceErrore = CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
- return false;
- }
-
- messageFactory = this.msg.getFactory();
-
- // Estraggo busta SPCoop
- if(this.headerEGov==null)
- this.headerEGov = getHeaderEGov(messageFactory, this.headerSOAP);
- if(this.headerEGov==null){
- this.msgErrore = "Analizzato un messaggio senza busta SPCoop";
- this.codiceErrore = CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
- return false;
- }
-
- } catch(StrutturaBustaException e) {
- this.log.error("Struttura della busta non corretta: "+e.getMessage(),e);
- this.msgErrore = e.getMessage();
- this.codiceErrore = CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
- return false;
- } catch(Exception e) {
- this.msgErrore = "(Validazione sintattica) "+e.getMessage();
- this.codiceErrore = CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
- this.busta = null;
- return false;
- }
- try{
- /** ------ VALIDAZIONE SINTATTICA -- */
- // Busta da ritornare
- Busta aBusta = new Busta(this.protocolFactory.getProtocol());
- this.busta = aBusta;
- this.erroriValidazione = new java.util.ArrayList<Eccezione>();
- this.erroriProcessamento = new java.util.ArrayList<Eccezione>();
- this.errorsTrovatiSullaListaEccezioni = new java.util.ArrayList<Eccezione>();
- // Prefix eGov
- String xmlns = getPrefix();
- // Controllo Actor
- //log.info("Controllo attributo Actor["+this.header.getActor()+"] ...");
- if(SPCoopCostanti.ACTOR_EGOV.equals(this.headerEGov.getElement().getActor()) == false){
- if(this.spcoopProperties.isGenerazioneBustaErrore_actorScorretto()==false){
- throw new StrutturaBustaException("Header egov con actor scorretto","Actor");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_ACTOR.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- // Controllo MustUnderstand
- //log.info("Controllo attributo MustUnderstand["+this.header.getMustUnderstand()+"] ...");
- if(this.headerEGov.getElement().getMustUnderstand() == false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_MUST_UNDERSTAND.toString());
- this.erroriValidazione.add(ecc);
- }
- List<Node> list = SoapUtils.getNotEmptyChildNodes(messageFactory, this.headerEGov.getElement());
- // Controllo value prefix
- if(SPCoopCostanti.NAMESPACE_EGOV.equals(this.headerEGov.getElement().getNamespaceURI())==false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_NAMESPACE.toString());
- this.erroriValidazione.add(ecc);
- }
- // intestazione messaggio
- Node intestazioneMsg = list.get(0);
- List<Node> headerMsg = SoapUtils.getNotEmptyChildNodes(messageFactory, intestazioneMsg);
- boolean mittenteGiaTrovato = false;
- boolean destinatarioGiaTrovato = false;
- boolean profiloCollaborazioneGiaTrovato = false;
- boolean collaborazioneGiaTrovato = false;
- boolean servizioGiaTrovato = false;
- boolean azioneGiaTrovato = false;
- boolean messaggioGiaTrovato = false;
- boolean profiloTrasmissioneGiaTrovato = false;
- boolean sequenzaGiaTrovato = false;
- for(int i =0; i<headerMsg.size();i++){
- Node child = headerMsg.get(i);
- //if((child.getNodeName().equals(xmlns+"Mittente"))){
- if(SoapUtils.matchLocalName(messageFactory, child, "Mittente", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(mittenteGiaTrovato==false){
- validazioneMittente(messageFactory, child,xmlns);
- mittenteGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Mittente","Mittente");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.MITTENTE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Destinatario"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Destinatario", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(destinatarioGiaTrovato==false){
- validazioneDestinatario(messageFactory, child,xmlns);
- destinatarioGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Destinatario","Destinatario");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.DESTINATARIO_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"ProfiloCollaborazione"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "ProfiloCollaborazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- // Serve per poter riconoscere il caso del profilo asincrono in modo da non localizzare una porta applicativa
- //if(localizzaSolamenteDatiIdentificativiMinimi==false){
- if(profiloCollaborazioneGiaTrovato==false){
- validazioneProfiloCollaborazione(messageFactory, child,xmlns);
- profiloCollaborazioneGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento ProfiloCollaborazione","ProfiloCollaborazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Collaborazione"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Collaborazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(localizzaSolamenteDatiIdentificativiMinimi==false){
- if(collaborazioneGiaTrovato==false){
- validazioneCollaborazione(messageFactory, child);
- collaborazioneGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Collaborazione","Collaborazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.COLLABORAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Servizio"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Servizio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(servizioGiaTrovato==false){
- validazioneServizio(messageFactory, child,xmlns);
- servizioGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Servizio","Servizio");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SERVIZIO_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Azione"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Azione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(azioneGiaTrovato==false){
- validazioneAzione(messageFactory, child);
- azioneGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Azione","Azione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.AZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_AZIONE_SCONOSCIUTA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_AZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Messaggio"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Messaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- // Serve per poter riconoscere il caso del profilo asincrono in modo da non localizzare una porta applicativa
- //if(localizzaSolamenteDatiIdentificativiMinimi==false){
- if(messaggioGiaTrovato==false){
- validazioneMessaggio(messageFactory, child,xmlns);
- messaggioGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Messaggio","Messaggio");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_MESSAGGIO+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_MESSAGGIO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- //}
- }
- //else if((child.getNodeName().equals(xmlns+"ProfiloTrasmissione"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "ProfiloTrasmissione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(localizzaSolamenteDatiIdentificativiMinimi==false){
- if(profiloTrasmissioneGiaTrovato==false){
- validazioneProfiloTrasmissione(messageFactory, child,xmlns);
- profiloTrasmissioneGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento ProfiloTrasmissione","ProfiloTrasmissione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_TRASMISSIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"Sequenza"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "Sequenza", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(localizzaSolamenteDatiIdentificativiMinimi==false){
- if(sequenzaGiaTrovato==false){
- validazioneSequenza(messageFactory, child,xmlns);
- sequenzaGiaTrovato = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Sequenza","Sequenza");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("Messaggio/child["+child.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- }
- }
- if(localizzaSolamenteDatiIdentificativiMinimi){
- // una volta letto il messaggio, anche minimo, e' possibile utilizzarlo.
- return true;
- }
-
- // Controllo scadenza messaggio rispetto ora registrazione
- if(this.spcoopProperties.isRepositoryBusteFiltraBusteScaduteRispettoOraRegistrazione() && (this.messaggioScaduto==false)){
-
- // Check su OraRegistrazione
- // Se correttamente formato, altrimenti segnalero' poi il problema
- Date oraRegistrazioneMinimaAccettata = new Date(DateManager.getTimeMillis()-(this.spcoopProperties.getIntervalloScadenzaBuste()*60*1000));
- /*System.out.println("BUSTA ["+this.busta.getOraRegistrazione().toString()
- +"] MINIMA ["+oraRegistrazioneMinimaAccettata.toString()+"]");*/
- if(this.busta.getOraRegistrazione()!=null){
- if( this.busta.getOraRegistrazione().before(oraRegistrazioneMinimaAccettata)){
- this.log.error("OraRegistrazione portata nella busta ("+SPCoopUtils.getDate_eGovFormat(this.busta.getOraRegistrazione())+") più vecchia della data minima attesa ("+SPCoopUtils.getDate_eGovFormat(oraRegistrazioneMinimaAccettata)+") e scadenza non presente");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.MESSAGGIO_SCADUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- // Check su id egov
- // Se correttamente formato, altrimenti segnalero' poi il problema
- if(this.busta.getID()!=null){
- String [] split = this.busta.getID().split("_");
- if(split != null && split.length == 5){
- Date dataIntoIDEgov = null;
- try{
- SimpleDateFormat dateformat = DateUtils.getSimpleDateFormatMinute();
- dataIntoIDEgov = dateformat.parse(split[3]+"_"+split[4]);
- }catch(Exception e){
- // ignore
- }
- if(dataIntoIDEgov!=null){
- //System.out.println("DATA IDEGOV BUSTA ["+dataIntoIDEgov.toString()
- // +"] MINIMA ["+oraRegistrazioneMinimaAccettata.toString()+"]");
- if( dataIntoIDEgov.before(oraRegistrazioneMinimaAccettata)){
- this.log.error("Data presente nell'idEgov della busta ("+SPCoopUtils.getDate_eGovFormat(dataIntoIDEgov)+") più vecchia della data minima attesa ("+SPCoopUtils.getDate_eGovFormat(oraRegistrazioneMinimaAccettata)+") e scadenza non presente");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.MESSAGGIO_SCADUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }
- }
-
- // Altri Elementi
- if(list.size()>1){
- boolean listaRiscontriGiaPresente = false;
- boolean listaTrasmissioniGiaPresente = false;
- boolean listaEccezioniGiaPresente = false;
- for(int i =1; i<list.size();i++){
- Node child = list.get(i);
- if(SoapUtils.matchLocalName(messageFactory, child, "IntestazioneMessaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento IntestazioneMessaggio","IntestazioneMessaggio");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_INTESTAZIONE_MESSAGGIO+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_INTESTAZIONE_MESSAGGIO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- //else if((child.getNodeName().equals(xmlns+"ListaRiscontri"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "ListaRiscontri", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(listaRiscontriGiaPresente==false){
- validazioneListaRiscontri(messageFactory, child,xmlns);
- listaRiscontriGiaPresente = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento ListaRiscontri","ListaRiscontri");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_RISCONTRI_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"ListaTrasmissioni"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "ListaTrasmissioni", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(listaTrasmissioniGiaPresente==false){
- validazioneListaTrasmissioni(messageFactory, child,xmlns);
- listaTrasmissioniGiaPresente = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento ListaTrasmissioni","ListaTrasmissioni");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_TRASMISSIONI_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- //else if((child.getNodeName().equals(xmlns+"ListaEccezioni"))){
- else if(SoapUtils.matchLocalName(messageFactory, child, "ListaEccezioni", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- if(listaEccezioniGiaPresente==false){
- validazioneListaEccezioni(messageFactory, child,xmlns);
- listaEccezioniGiaPresente = true;
- }else{
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento ListaEccezioni","ListaEccezioni");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- }
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("Intestazione/child["+child.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- }
- }
- }
-
- if(this.spcoopProperties.isCheckTolleranzaDateFutureAttivo()){
- if(this.erroriValidazione.size()==0){
- // controllo che non vi siano date future
- validazioneDatePresentiRispettoDateFuture();
- }
- }
- } catch(StrutturaBustaException e) {
- this.log.error("Struttura della busta non corretta: "+e.getMessage(),e);
- this.msgErrore = e.getMessage();
- this.codiceErrore = CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
- return false;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.PROCESSAMENTO);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("Errore di processamento durante la validazione sintattica");
- this.erroriProcessamento.add(ecc);
- this.log.error("Errore di processamento durante la validazione sintattica",e);
- }
- // una volta letto il messaggio e' possibile utilizzarlo.
- return true;
- }
-
- public SPCoopBustaRawContent getHeaderEGov_senzaControlli() throws ProtocolException{
- try{
- // Estraggo header
- if(this.headerSOAP==null)
- this.headerSOAP = this.msg.getSOAPHeader();
- if(this.headerSOAP==null){
- throw new Exception("Analizzato un messaggio senza header");
- }
-
- // cerco la busta per l'actor
- java.util.Iterator<?> it = this.headerSOAP.examineAllHeaderElements();
- SOAPHeaderElement headerElementEGov = null;
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Actor
- if( SPCoopCostanti.ACTOR_EGOV.equals(headerElement.getActor()) == false ){
- continue;
- }
- headerElementEGov = headerElement;
- }
-
- if(headerElementEGov==null){
- // cerco la busta per il namespace
- it = this.headerSOAP.examineAllHeaderElements();
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Namespace
- if( SPCoopCostanti.NAMESPACE_EGOV.equals(headerElement.getNamespaceURI()) == false ){
- continue;
- }
- headerElementEGov = headerElement;
- }
- }
-
- if(headerElementEGov==null){
- // header egov non trovato
- throw new Exception("Header eGov non presente");
- }else{
- return new SPCoopBustaRawContent(headerElementEGov);
- }
- }catch(Exception e){
- throw new ProtocolException("Lettura non riuscita: "+e.getMessage(),e);
- }
- }
-
- /**
- * Metodo che si occupa di verificare che sia presente un header eGov nel SOAPHeader <var>SOAPHeader</var>.
- * Per essere presente, un header eGov deve possedere almeno i seguenti elementi obbligatori :
- * Intestazione con :
- * <p>
- * <ul>
- * <li> IntestazioneMessaggio-Mittente-IdentificativoParte con tipo e valore
- * <li> IntestazioneMessaggio-Destinatario-IdentificativoParte con tipo e valore
- * <li> IntestazioneMessaggio-Messaggio-....
- * </ul>
- * <p>
- * Se la verifica non ha successo, il metodo ritorna null, altrimenti l'header eGov presente (non estratto).
- *
- * @param header Header Soap in cui deve essere verificato la presenza di un header eGov.
- * @return null se la verifica ha successo, altrimenti l'header eGov presente (non estratto).
- *
- */
- public SPCoopBustaRawContent getHeaderEGov(OpenSPCoop2MessageFactory messageFactory, SOAPHeader header) throws ProtocolException,StrutturaBustaException{
- try{
- if(header == null)
- return null;
-
- // cerco la busta per l'actor
- java.util.Iterator<?> it = header.examineAllHeaderElements();
- SOAPHeaderElement headerElementEGov = null;
- StringBuilder bf = new StringBuilder();
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Actor
- try{
- bf.append("Check ACTOR Atteso["+SPCoopCostanti.ACTOR_EGOV+"]==["+headerElement.getActor()+"]=["+SPCoopCostanti.ACTOR_EGOV.equals(headerElement.getActor())+"]\n");
- }catch(Exception e){
- // ignore
- }
- if( SPCoopCostanti.ACTOR_EGOV.equals(headerElement.getActor()) == false ){
- continue;
- }
- bf.append("FIND!\n");
- headerElementEGov = headerElement;
- }
-
- if(headerElementEGov==null){
- bf.append("NOT FOUND TRAMITE ACTOR!\n");
- // cerco la busta per il namespace
- it = header.examineAllHeaderElements();
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Namespace
- try{
- bf.append("Check NAMESPACE Atteso["+SPCoopCostanti.NAMESPACE_EGOV+"]==["+headerElement.getNamespaceURI()+"]=["+SPCoopCostanti.NAMESPACE_EGOV.equals(headerElement.getNamespaceURI())+"]\n");
- }catch(Exception e){
- // ignore
- }
- if( SPCoopCostanti.NAMESPACE_EGOV.equals(headerElement.getNamespaceURI()) == false ){
- continue;
- }
- bf.append("FIND!\n");
- headerElementEGov = headerElement;
- }
- }
-
- if(headerElementEGov==null){
- // header egov non trovato
- String msgHeader = "";
- try{
- msgHeader = " header-soap: "+messageFactory.createEmptyMessage(MessageType.SOAP_11,MessageRole.NONE).getAsString(header, false);
- }catch(Exception e){
- // ignore
- }
- throw new Exception("Header eGov non presente ("+bf.toString()+")"+msgHeader);
- }
-
- // Preparazione busta di default per eventuale eccezione
- Busta errore = new Busta(this.protocolFactory.getProtocol());
- errore.setTipoMittente(this.spcoopProperties.getKeywordTipoMittenteSconosciuto());
- errore.setMittente(this.spcoopProperties.getKeywordMittenteSconosciuto());
- errore.setIdentificativoPortaMittente(this.traduttore.getIdentificativoPortaDefault(new IDSoggetto(errore.getTipoMittente(), errore.getMittente())));
- errore.setTipoDestinatario(this.spcoopProperties.getKeywordTipoMittenteSconosciuto());
- errore.setDestinatario(this.spcoopProperties.getKeywordMittenteSconosciuto());
- errore.setIdentificativoPortaDestinatario(this.traduttore.getIdentificativoPortaDefault(new IDSoggetto(errore.getTipoDestinatario(), errore.getDestinatario())));
-
- // Controllo presenza più di un header eGov
- if(this.existsMoreHeaderEGov()){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.FORMATO_NON_CORRETTO,
- "Più di un header e-Gov presente",
- this.protocolFactory));
- this.bustaErroreHeaderIntestazione = errore;
- throw new Exception("Più di un header e-Gov presente");
- }
-
- // Prefix eGov
- String xmlns = headerElementEGov.getPrefix();
- if(xmlns == null){
- xmlns = "";
- }else if(!xmlns.equals("")){
- xmlns = xmlns + ":";
- }
-
- // Controllo presenza elementi obbligatori che contraddistingono un header eGov: Intestazione
- //if(headerElementEGov.getNodeName().equals(xmlns+"Intestazione") == false){
- if(SoapUtils.matchLocalName(messageFactory, headerElementEGov, "Intestazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV) == false ){
- this.bustaErroreHeaderIntestazione = errore;
- this.bustaErroreHeaderIntestazione.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.FORMATO_NON_CORRETTO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_NON_CORRETTO_POSIZIONE.toString(),this.protocolFactory));
- throw new Exception("Header eGov senza header intestazione");
- }
- // Controllo elementi che contraddistingono un header eGov : Intestazione Messaggio
- List<Node> list = SoapUtils.getNotEmptyChildNodes(messageFactory, headerElementEGov);
- if(list==null || list.size() == 0){
- this.bustaErroreHeaderIntestazione = errore;
- this.bustaErroreHeaderIntestazione.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_INTESTAZIONE_MESSAGGIO.toString(),this.protocolFactory));
- throw new Exception("Header eGov con header intestazione senza elementi interni tra cui IntestazioneMessaggio");
- }
- Node intestazioneMsg = list.get(0);
- //if( (intestazioneMsg==null) || (!(intestazioneMsg.getNodeName().equals(xmlns+"IntestazioneMessaggio"))) ) {
- if( (intestazioneMsg==null) || (!SoapUtils.matchLocalName(messageFactory, intestazioneMsg, "IntestazioneMessaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)) ) {
- this.bustaErroreHeaderIntestazione = errore;
- this.bustaErroreHeaderIntestazione.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_INTESTAZIONE_MESSAGGIO.toString(),this.protocolFactory));
- throw new Exception("Header eGov con header intestazione che possiede first child ["+(intestazioneMsg!=null ? intestazioneMsg.getNodeName() : "null")+"] diverso da IntestazioneMessaggio");
- }
-
- List<Node> intestMsgChild = SoapUtils.getNotEmptyChildNodes(messageFactory, intestazioneMsg);
-
- // Controllo elementi principali
- Node mittente = null;
- Node destinatario = null;
- Node messaggio = null;
- for(int i=0;i<intestMsgChild.size();i++){
- Node child = intestMsgChild.get(i);
- if(child==null){
- this.log.info("Elemento null");
- }else if(child.getNodeName()==null){
- this.log.info("Elemento child null");
- }
- if(child!=null && child.getNodeName()!=null){
- //if( (mittente==null) && ((child.getNodeName().equals(xmlns+"Mittente")))){
- if( (mittente==null) && (SoapUtils.matchLocalName(messageFactory, child, "Mittente", xmlns, SPCoopCostanti.NAMESPACE_EGOV))){
- mittente = child;
- }
- //else if( (destinatario==null) && ((child.getNodeName().equals(xmlns+"Destinatario")))){
- else if( (destinatario==null) && (SoapUtils.matchLocalName(messageFactory, child, "Destinatario", xmlns, SPCoopCostanti.NAMESPACE_EGOV))){
- destinatario = child;
- }
- //else if( (messaggio==null) && ((child.getNodeName().equals(xmlns+"Messaggio")))){
- else if( (messaggio==null) && (SoapUtils.matchLocalName(messageFactory, child, "Messaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV))){
- messaggio = child;
- }
- }
- }
-
- boolean eccezioneStrutturaMittente = false;
- boolean eccezioneStrutturaDestinatario = false;
- boolean eccezioneStrutturaMessaggio = false;
-
- // controllo mittente
- if(mittente==null){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = true;
- }else{
- List<Node> headerMittente = SoapUtils.getNotEmptyChildNodes(messageFactory, mittente); // identificativoParte mitt
- if( (headerMittente==null) || (headerMittente.size() == 0) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = true;
- } else {
- for(int i=0; i<headerMittente.size(); i++){
- Node idParteMittente = headerMittente.get(i);
- //if( !(idParteMittente.getNodeName().equals(xmlns+"IdentificativoParte")) ){
- if( !(SoapUtils.matchLocalName(messageFactory, idParteMittente, "IdentificativoParte", xmlns, SPCoopCostanti.NAMESPACE_EGOV)) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = true;
- break;
- }
- List<Node> valueIDParteMitt = SoapUtils.getNotEmptyChildNodes(messageFactory, idParteMittente);
- if( (valueIDParteMitt==null) || (valueIDParteMitt.size() == 0) || (valueIDParteMitt.size() > 1) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_VALORIZZATO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = false;
- break;
- }
- String mittenteValue = null;
- try{
- mittenteValue = valueIDParteMitt.get(0).getNodeValue();
- if(mittenteValue==null)
- throw new Exception("mittente is null");
- //log.info("Value identificativo parte ["+valueIDParteMitt.item(0).getNodeValue()+"]");
- } catch(Exception e) {
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_NON_VALORIZZATO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = false;
- break;
- }
- String tipoMittente = null;
- Node hrefFindMitt = null;
- if(this.readQualifiedAttribute){
- hrefFindMitt = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteMittente, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindMitt = SoapUtils.getAttributeNode(messageFactory, idParteMittente, "tipo");
- }
- if(hrefFindMitt!=null){
- try{
- tipoMittente = hrefFindMitt.getNodeValue();
- if(tipoMittente == null)
- throw new Exception("tipo non definito");
- //log.info("Value identificativo parte ["+hrefFindMitt.getNodeValue()+"]");
- } catch(Exception e) {
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.TIPO_MITTENTE_NON_VALIDO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = true;
- break;
- }
- }else{
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.TIPO_MITTENTE_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = true;
- break;
- }
- if(i==0){
- if(tipoMittente!=null) {
- try {
- errore.setTipoMittente(this.traduttore.toRegistryOrganizationType(tipoMittente));
- }catch(Exception e) {
- errore.setTipoMittente(tipoMittente); // senza traduzione
- }
- }
- errore.setMittente(mittenteValue);
- }else{
- //errore.addEccezione(Eccezione.getEccezioneValidazione(Costanti.ECCEZIONE_MITTENTE_SCONOSCIUTO,
- // Costanti.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE+":"+tipoMittente+"/"+mittenteValue+" (busta con più di un mittente non gestita)" ));
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.MITTENTE_PRESENTE_PIU_VOLTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaMittente = false;
- }
- }
- }
- }
-
- // controllo destinatario
- if(destinatario==null){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = true;
- }else{
- List<Node> headerDestinatario = SoapUtils.getNotEmptyChildNodes(messageFactory, destinatario); // identificativoParte dest
- if( (headerDestinatario==null) || (headerDestinatario.size() == 0) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = true;
- } else {
- for(int i=0; i<headerDestinatario.size(); i++){
- Node idParteDestinatario = headerDestinatario.get(i);
- //if( !(idParteDestinatario.getNodeName().equals(xmlns+"IdentificativoParte")) ){
- if( !(SoapUtils.matchLocalName(messageFactory, idParteDestinatario, "IdentificativoParte", xmlns, SPCoopCostanti.NAMESPACE_EGOV)) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_VALIDO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = true;
- break;
- }
- List<Node> valueIDParteDest = SoapUtils.getNotEmptyChildNodes(messageFactory, idParteDestinatario);
- if( (valueIDParteDest==null) || (valueIDParteDest.size() == 0) || (valueIDParteDest.size() > 1) ){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_VALIDO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = false;
- break;
- }
- String destinatarioValue = null;
- try{
- destinatarioValue = valueIDParteDest.get(0).getNodeValue();
- if(destinatarioValue==null)
- throw new Exception("destinatario is null");
- //log.info("Value identificativo parte ["+valueIDParteDest.item(0).getNodeValue()+"]");
- } catch(Exception e) {
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_NON_VALORIZZATO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = false;
- break;
- }
- String tipoDestinatario = null;
- Node hrefFindDest = null;
- if(this.readQualifiedAttribute){
- hrefFindDest = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteDestinatario, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindDest = SoapUtils.getAttributeNode(messageFactory, idParteDestinatario, "tipo");
- }
- if(hrefFindDest!=null){
- try{
- tipoDestinatario = hrefFindDest.getNodeValue();
- if(tipoDestinatario == null)
- throw new Exception("tipo non definito");
- //log.info("Value identificativo parte ["+hrefFindDest.getNodeValue()+"]");
- } catch(Exception e) {
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.TIPO_DESTINATARIO_NON_VALIDO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = true;
- break;
- }
- }else{
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.TIPO_DESTINATARIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = true;
- break;
- }
- if(i==0){
- if(tipoDestinatario!=null) {
- try {
- errore.setTipoDestinatario(this.traduttore.toRegistryOrganizationType(tipoDestinatario));
- }catch(Exception e) {
- errore.setTipoDestinatario(tipoDestinatario); // senza traduzione
- }
- }
- errore.setDestinatario(destinatarioValue);
- }else{
- //errore.addEccezione(Eccezione.getEccezioneValidazione(Costanti.ECCEZIONE_DESTINATARIO_SCONOSCIUTO,
- // Costanti.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE+":"+tipoDestinatario+"/"+destinatarioValue+" (busta con più di un destinatario non gestita)" ));
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.DESTINATARIO_PRESENTE_PIU_VOLTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString(),this.protocolFactory));
- eccezioneStrutturaDestinatario = false;
- }
- }
- }
- }
-
- // controllo messaggio
- if(messaggio==null){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_FORMATO_INTESTAZIONE_NON_CORRETTO_POSIZIONE_MESSAGGIO.toString(),this.protocolFactory));
- eccezioneStrutturaMessaggio = true;
- }else{
- List<Node> contenutoMsg = SoapUtils.getNotEmptyChildNodes(messageFactory, messaggio);
- if( (contenutoMsg.size() <= 0)){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString(),this.protocolFactory));
- eccezioneStrutturaMessaggio = true;
-
- }else{
- String identificatore = null;
- boolean identificatoreTrovato = false;
- for(int j =0; j<contenutoMsg.size();j++){
- Node childMsg = contenutoMsg.get(j);
- //if((childMsg.getNodeName().equals(xmlns+"Identificatore"))){
- if(SoapUtils.matchLocalName(messageFactory, childMsg, "Identificatore", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- identificatoreTrovato = true;
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).size() != 1){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString(),this.protocolFactory));
- }else{
- try{
- identificatore = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- } catch(Exception e) {
- // ignore
- }
- }
- break;
- }
- }
- if(identificatoreTrovato==false){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString(),this.protocolFactory));
- eccezioneStrutturaMessaggio = true;
- }else if(identificatore==null){
- errore.addEccezione(Eccezione.getEccezioneValidazione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE,
- SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString(),this.protocolFactory));
- eccezioneStrutturaMessaggio = false;
- }else{
- errore.setID(identificatore);
- }
- }
- }
-
-
-
- // report
- if(errore.sizeListaEccezioni()>0){
-
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false &&
- ((eccezioneStrutturaMittente) || (eccezioneStrutturaDestinatario) || (eccezioneStrutturaMessaggio))
- ){
- Eccezione ec = errore.getEccezione(0);
- throw new StrutturaBustaException("Header egov con struttura errata, "+ec.getDescrizione(this.protocolFactory),ec.getDescrizione(this.protocolFactory).replaceAll("/", ""));
- }
-
- // Leggo eventuali altri valori presenti
- Node servizio = null;
- Node azione = null;
- Node profiloCollaborazione = null;
- Node collaborazione = null;
- Node profiloTrasmissione = null;
- Node sequenza = null;
- for(int i=0;i<intestMsgChild.size();i++){
- Node child = intestMsgChild.get(i);
- //if( (mittente==null) && ((child.getNodeName().equals(xmlns+"Mittente")))){
- if( (mittente==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Mittente", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- mittente = child;
- }
- //else if( (destinatario==null) && ((child.getNodeName().equals(xmlns+"Destinatario")))){
- else if( (destinatario==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Destinatario", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- destinatario = child;
- }
- //else if( (servizio==null) && ((child.getNodeName().equals(xmlns+"Servizio")))){
- else if( (servizio==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Servizio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- servizio = child;
- }
- //else if( (azione==null) && ((child.getNodeName().equals(xmlns+"Azione")))){
- else if( (azione==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Azione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- azione = child;
- }
- //else if( (profiloCollaborazione==null) && ((child.getNodeName().equals(xmlns+"ProfiloCollaborazione")))){
- else if( (profiloCollaborazione==null) && ((SoapUtils.matchLocalName(messageFactory, child, "ProfiloCollaborazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- profiloCollaborazione = child;
- }
- //else if( (collaborazione==null) && ((child.getNodeName().equals(xmlns+"Collaborazione")))){
- else if( (collaborazione==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Collaborazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- collaborazione = child;
- }
- //else if( (profiloTrasmissione==null) && ((child.getNodeName().equals(xmlns+"ProfiloTrasmissione")))){
- else if( (profiloTrasmissione==null) && ((SoapUtils.matchLocalName(messageFactory, child, "ProfiloTrasmissione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- profiloTrasmissione = child;
- }
- //else if( (sequenza==null) && ((child.getNodeName().equals(xmlns+"Sequenza")))){
- else if( (sequenza==null) && ((SoapUtils.matchLocalName(messageFactory, child, "Sequenza", xmlns, SPCoopCostanti.NAMESPACE_EGOV)))){
- sequenza = child;
- }
- }
-
- // Mittente
- if(mittente!=null){
- try{
- List<Node> headerMittente = SoapUtils.getNotEmptyChildNodes(messageFactory, mittente);
- Node idParteMittente = headerMittente.get(0);
- errore.setMittente(SoapUtils.getNotEmptyChildNodes(messageFactory, idParteMittente).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- try{
- List<Node> headerMittente = SoapUtils.getNotEmptyChildNodes(messageFactory, mittente);
- Node idParteMittente = headerMittente.get(0);
- Node hrefFindMitt = null;
- if(this.readQualifiedAttribute){
- hrefFindMitt = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteMittente, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindMitt = SoapUtils.getAttributeNode(messageFactory, idParteMittente, "tipo");
- }
- String itValue = hrefFindMitt.getNodeValue();
- if(itValue!=null) {
- try {
- errore.setTipoMittente(this.traduttore.toRegistryOrganizationType(itValue));
- }catch(Exception e) {
- errore.setTipoMittente(itValue); // senza traduzione
- }
- }
- }catch(Exception e){
- // ignore
- }
- try{
- List<Node> headerMittente = SoapUtils.getNotEmptyChildNodes(messageFactory, mittente);
- Node idParteMittente = headerMittente.get(0);
- Node hrefFindMitt = null;
- if(this.readQualifiedAttribute){
- hrefFindMitt = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteMittente, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindMitt = SoapUtils.getAttributeNode(messageFactory, idParteMittente, "indirizzoTelematico");
- }
- String itValue = hrefFindMitt.getNodeValue();
- errore.setIndirizzoMittente(itValue);
- }catch(Exception e){
- // ignore
- }
- }
-
- // Destinatario
- if(destinatario!=null){
- try{
- List<Node> headerDest = SoapUtils.getNotEmptyChildNodes(messageFactory, destinatario);
- Node idParteDest = headerDest.get(0);
- errore.setDestinatario(SoapUtils.getNotEmptyChildNodes(messageFactory, idParteDest).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- try{
- List<Node> headerDest = SoapUtils.getNotEmptyChildNodes(messageFactory, destinatario);
- Node idParteDest = headerDest.get(0);
- Node hrefFindDest = null;
- if(this.readQualifiedAttribute){
- hrefFindDest = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteDest, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindDest = SoapUtils.getAttributeNode(messageFactory, idParteDest, "tipo");
- }
- String itValue = hrefFindDest.getNodeValue();
- if(itValue!=null) {
- try {
- errore.setTipoDestinatario(this.traduttore.toRegistryOrganizationType(itValue));
- }catch(Exception e) {
- errore.setTipoDestinatario(itValue); // senza traduzione
- }
- }
- }catch(Exception e){
- // ignore
- }
- try{
- List<Node> headerDest = SoapUtils.getNotEmptyChildNodes(messageFactory, destinatario);
- Node idParteDest = headerDest.get(0);
- Node hrefFindDest = null;
- if(this.readQualifiedAttribute){
- hrefFindDest = SoapUtils.getQualifiedAttributeNode(messageFactory, idParteDest, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindDest = SoapUtils.getAttributeNode(messageFactory, idParteDest, "indirizzoTelematico");
- }
- String itValue = hrefFindDest.getNodeValue();
- errore.setIndirizzoDestinatario(itValue);
- }catch(Exception e){
- // ignore
- }
- }
-
- // Servizio
- if(servizio!=null){
- try{
- errore.setServizio(SoapUtils.getNotEmptyChildNodes(messageFactory, servizio).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, servizio, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, servizio, "tipo");
- }
- String value = hrefFind.getNodeValue();
- if(value!=null) {
- try {
- errore.setTipoServizio(this.traduttore.toRegistryServiceType(value));
- }catch(Exception e) {
- errore.setTipoServizio(value); // senza traduzione
- }
- }
- }catch(Exception e){
- // ignore
- }
- }
-
- // Azione
- if(azione!=null){
- try{
- errore.setAzione(SoapUtils.getNotEmptyChildNodes(messageFactory, azione).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- }
-
- // ProfiloDiCollaborazione
- if(profiloCollaborazione!=null){
- try{
- String profilovalue = SoapUtils.getNotEmptyChildNodes(messageFactory, profiloCollaborazione).get(0).getNodeValue();
- errore.setProfiloDiCollaborazione(toProfilo(profilovalue), profilovalue);
- }catch(Exception e){
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, profiloCollaborazione, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, profiloCollaborazione, "tipo");
- }
- String value = hrefFind.getNodeValue();
- if(value!=null) {
- try {
- errore.setTipoServizioCorrelato(this.traduttore.toRegistryServiceType(value));
- }catch(Exception e) {
- errore.setTipoServizioCorrelato(value); // senza traduzione
- }
- }
- }catch(Exception e){
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, profiloCollaborazione, "servizioCorrelato", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, profiloCollaborazione, "servizioCorrelato");
- }
- errore.setServizioCorrelato(hrefFind.getNodeValue());
- }catch(Exception e){
- // ignore
- }
- }
-
- // Collaborazione
- if(collaborazione!=null){
- try{
- errore.setCollaborazione(SoapUtils.getNotEmptyChildNodes(messageFactory, collaborazione).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- }
-
- // Messaggio
- if(messaggio!=null){
- try{
- List<Node> contenutoMsg = SoapUtils.getNotEmptyChildNodes(messageFactory, messaggio);
- for(int j =0; j<contenutoMsg.size();j++){
- Node childMsg = contenutoMsg.get(j);
- //if((childMsg.getNodeName().equals(xmlns+"RiferimentoMessaggio"))){
- if(SoapUtils.matchLocalName(messageFactory, childMsg, "RiferimentoMessaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- try{
- errore.setRiferimentoMessaggio(SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue());
- }catch(Exception e){
- // ignore
- }
- }
- //else if((childMsg.getNodeName().equals(xmlns+"Scadenza"))){
- else if(SoapUtils.matchLocalName(messageFactory, childMsg, "Scadenza", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- try{
- String scadenza = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- Date scadenzaDate = validazioneData(scadenza);
- errore.setScadenza(scadenzaDate);
- }catch(Exception e){
- // ignore
- }
- }
- //else if((childMsg.getNodeName().equals(xmlns+"OraRegistrazione"))){
- else if(SoapUtils.matchLocalName(messageFactory, childMsg, "OraRegistrazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- try{
- String oraRegistrazione = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- Date oraDate = validazioneData(oraRegistrazione);
- errore.setOraRegistrazione(oraDate);
- }catch(Exception e){
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, childMsg, "tempo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, childMsg, "tempo");
- }
- String tipoOraRegistrazioneValue = hrefFind.getNodeValue();
- errore.setTipoOraRegistrazione(toTipoOra(tipoOraRegistrazioneValue), tipoOraRegistrazioneValue);
- }catch(Exception e){
- // ignore
- }
- }
- }
- }catch(Exception e){
- // ignore
- }
- }
-
- // Profilo Trasmissione
- if(profiloTrasmissione!=null){
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, profiloTrasmissione, "confermaRicezione", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, profiloTrasmissione, "confermaRicezione");
- }
- if(hrefFind.getNodeValue().equals("true"))
- errore.setConfermaRicezione(true);
- else
- errore.setConfermaRicezione(false);
- }catch(Exception e){
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, profiloTrasmissione, "inoltro", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, profiloTrasmissione, "inoltro");
- }
- String inoltro = hrefFind.getNodeValue();
- errore.setInoltro(toInoltro(inoltro), inoltro);
- }catch(Exception e){
- // ignore
- }
- }
-
- // Sequenza
- if(sequenza!=null){
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, sequenza, "numeroProgressivo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, sequenza, "numeroProgressivo");
- }
- Long test = Long.valueOf(hrefFind.getNodeValue());
- errore.setSequenza(test.longValue());
- }catch(Exception e){
- // ignore
- }
- }
-
- this.bustaErroreHeaderIntestazione = errore;
- throw new Exception("Header eGov senza alcuni elementi principali: presenza mittente["+(mittente!=null)+"] destinatario["+(destinatario!=null)+"] messaggio["+(messaggio!=null)+"] eccezioni-riscontrate: ["+errore.toStringListaEccezioni(this.getProtocolFactory())+"]");
- }
-
- return new SPCoopBustaRawContent(headerElementEGov);
-
- }catch(StrutturaBustaException e){
- throw e;
- }catch(Exception e){
- throw new ProtocolException("Lettura non riuscita: "+e.getMessage(),e);
- }
- }
- /**
- * Controlla che esista una busta SPCoop nell'header
- *
- * @return true se l'header esiste, false altrimenti
- */
- public boolean existsHeaderEGov(OpenSPCoop2SoapMessage msg){
- this.msg = msg;
- try{
- if(this.headerEGov!=null){
- return true;
- }else{
- if(msg==null){
- return false;
- }
- if(this.headerSOAP==null)
- this.headerSOAP = this.msg.getSOAPHeader();
- if(this.headerSOAP == null){
- return false;
- }
-
- // cerco la busta per l'actor
- java.util.Iterator<?> it = this.headerSOAP.examineAllHeaderElements();
- SOAPHeaderElement headerElementEGov = null;
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Actor
- if( SPCoopCostanti.ACTOR_EGOV.equals(headerElement.getActor()) == false ){
- continue;
- }
- headerElementEGov = headerElement;
- }
-
- if(headerElementEGov==null){
- // cerco la busta per il namespace
- it = this.headerSOAP.examineAllHeaderElements();
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Namespace
- if( SPCoopCostanti.NAMESPACE_EGOV.equals(headerElement.getNamespaceURI()) == false ){
- continue;
- }
- headerElementEGov = headerElement;
- }
- }
-
- return headerElementEGov!=null;
- }
-
- }catch(Exception e){
- this.log.error("existsHeaderEGov error: "+e.getMessage(), e);
- return false;
- }
- }
-
- /**
- * Controlla che esista più di una busta SPCoop nell'header
- *
- * @return true se l'header esiste, false altrimenti
- */
- public boolean existsMoreHeaderEGov(){
- try{
- if(this.headerSOAP==null)
- this.headerSOAP = this.msg.getSOAPHeader();
- if(this.headerSOAP == null){
- return false;
- }
-
- boolean headerGiaTrovato = false;
-
- // cerco la busta per l'actor
- java.util.Iterator<?> it = this.headerSOAP.examineAllHeaderElements();
- while( it.hasNext() ){
-
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Actor
- if( SPCoopCostanti.ACTOR_EGOV.equals(headerElement.getActor()) == false ){
- continue;
- }
- if(headerGiaTrovato)
- return true;
- else
- headerGiaTrovato = true;
- }
-
- if(headerGiaTrovato==false){
- // cerco la busta per il namespace
- it = this.headerSOAP.examineAllHeaderElements();
- while( it.hasNext() ){
- // Test Header Element
- SOAPHeaderElement headerElement = (SOAPHeaderElement) it.next();
- //Controllo Namespace
- if( SPCoopCostanti.NAMESPACE_EGOV.equals(headerElement.getNamespaceURI()) == false ){
- continue;
- }
-
- if(headerGiaTrovato)
- return true;
- else
- headerGiaTrovato = true;
- }
-
- }
-
- return false;
-
- }catch(Exception e){
- this.log.error("existsMoreHeaderEGov error: "+e.getMessage());
- return false;
- }
- }
- /**
- * Metodo che ritorna il prefissso eGov
- *
- * @return Prefisso
- *
- */
- public String getPrefix(){
- // Prefix eGov
- String xmlns = this.headerEGov.getElement().getPrefix();
- if(xmlns == null){
- xmlns = "";
- }
- if(!xmlns.equals(""))
- xmlns = xmlns + ":";
- return xmlns;
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Mittente' <var>child</var> secondo specifica eGov.
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto :
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione.
- * @throws ProtocolException
- *
- */
- private void validazioneMittente(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws ProtocolException{
- //log.info("Validazione Mittente...");
- List<Node> headerMittente = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- Node idParte = headerMittente.get(0);
- //log.info("esamino ["+idParte.getNodeName()+"]");
- List<Node> valueIDParte = SoapUtils.getNotEmptyChildNodes(messageFactory, idParte);
- String value = valueIDParte.get(0).getNodeValue();
- //log.info("Value identificativo parte Mittente ["+value+"]");
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, idParte, "tipo");
- }
- String tipo = hrefFind.getNodeValue();
- //log.info("Tipo identificativo parte Mittente ["+tipo+"]");
-
- // Controllo tipo
- try {
- this.busta.setTipoMittente(this.traduttore.toRegistryOrganizationType(tipo));
- }catch(Exception e) {
- this.busta.setTipoMittente(tipo); // senza traduzione
-
- this.log.warn(e.getMessage(),e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_MITTENTE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- this.busta.setMittente(value);
- String indTelematico = null;
- // indirizzo Telematico
- try{
- Node hrefFindT = null;
- if(this.readQualifiedAttribute){
- hrefFindT = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindT = SoapUtils.getAttributeNode(messageFactory, idParte, "indirizzoTelematico");
- }
- if(hrefFindT != null)
- indTelematico = hrefFindT.getNodeValue();
- //log.info("IndirizzoTelematicoMittente ["+indTelematico+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INDIRIZZO_MITTENTE_NON_PRESENTE );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- }
- if(indTelematico != null && (indTelematico.equals("")==false)){
- URL urlCheck = null;
- try{
- urlCheck = new URL( indTelematico );
- this.busta.setIndirizzoMittente(urlCheck.toString());
- } catch(Exception e) {
- this.busta.setIndirizzoMittente(indTelematico); // comunque lo imposto!
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INDIRIZZO_MITTENTE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Destinatario' <var>child</var> secondo specifica eGov.
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneDestinatario(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws ProtocolException{
- //log.info("Validazione Destinatario...");
- List<Node> headerDestinatario = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- Node idParte = headerDestinatario.get(0);
- //log.info("esamino ["+idParte.getNodeName()+"]");
- List<Node> valueIDParte = SoapUtils.getNotEmptyChildNodes(messageFactory, idParte);
- String value = valueIDParte.get(0).getNodeValue();
- //log.info("Value identificativo parte Destinatario ["+value+"]");
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, idParte, "tipo");
- }
- String tipo = hrefFind.getNodeValue();
- //log.info("Tipo identificativo parte Destinatario ["+tipo+"]");
-
- // Controllo tipo
- try {
- this.busta.setTipoDestinatario(this.traduttore.toRegistryOrganizationType(tipo));
- }catch(Exception e) {
- this.busta.setTipoDestinatario(tipo); // senza traduzione
-
- this.log.warn(e.getMessage(),e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_DESTINATARIO_SCONOSCIUTO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- this.busta.setDestinatario(value);
- String indTelematico = null;
- // indirizzo Telematico
- try{
- Node hrefFindT = null;
- if(this.readQualifiedAttribute){
- hrefFindT = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindT = SoapUtils.getAttributeNode(messageFactory, idParte, "indirizzoTelematico");
- }
- if(hrefFindT != null)
- indTelematico = hrefFindT.getNodeValue();
- //log.info("IndirizzoTelematicoMittente ["+indTelematico+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INDIRIZZO_DESTINATARIO_NON_PRESENTE );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- }
- if(indTelematico != null && (indTelematico.equals("")==false)){
- URL urlcheck = null;
- try{
- urlcheck = new URL( indTelematico );
- this.busta.setIndirizzoDestinatario(urlcheck.toString());
- } catch(Exception e) {
- this.busta.setIndirizzoDestinatario(indTelematico); // comunque lo imposto!
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INDIRIZZO_DESTINATARIO_NON_VALIDO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- }
- /**
- * Metodo che si occupa di validare l'elemento 'ProfiloCollaborazione' <var>child</var> secondo specifica eGov.
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneProfiloCollaborazione(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws ProtocolException{
- //log.info("Validazione Profilo di Collaborazione...");
- String profilo = null;
- List<Node> valueProfiloDiCollaborazione = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- if( valueProfiloDiCollaborazione.size() == 0 || valueProfiloDiCollaborazione.size() > 1 ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }else {
- try{
- profilo = valueProfiloDiCollaborazione.get(0).getNodeValue();
- //log.info("Value Profilo di Collaborazione ["+valueProfiloDiCollaborazione.item(0).getNodeValue()+"]");
- if( (profilo.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY) == false) &&
- (profilo.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO) == false) &&
- (profilo.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_SIMMETRICO) == false) &&
- (profilo.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_ASIMMETRICO) == false)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_SCONOSCIUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- this.busta.setProfiloDiCollaborazione(toProfilo(profilo), profilo);
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- // Controllo servizioCorrelato e Tipo
- String tipo = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "tipo");
- }
- if(hrefFind != null)
- tipo = hrefFind.getNodeValue();
- //log.info("Tipo Servizio Correlato ["+tipo+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_CORRELATO_NON_VALIDO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_TIPO_SERVIZIO_CORRELATO.toString());
- this.erroriValidazione.add(ecc);
- }
- boolean tipoServizioCorrelatoValido = true;
- if(tipo != null){
- // Controllo tipo
- try {
- this.busta.setTipoServizioCorrelato(this.traduttore.toRegistryServiceType(tipo));
- }catch(Exception e) {
- tipoServizioCorrelatoValido = false;
- this.busta.setTipoServizioCorrelato(tipo); // senza traduzione
-
- this.log.warn(e.getMessage(),e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_CORRELATO_SCONOSCIUTO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_TIPO_SERVIZIO_CORRELATO.toString());
- this.erroriValidazione.add(ecc);
- }
-
- /* OLD CODICE
- if(!tipo.equals(Costanti.SERVIZIO_CORRELATO_SPC) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_TEST) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_URL) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_WSDL) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_LDAP) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_UDDI) &&
- !tipo.equals(Costanti.SERVIZIO_CORRELATO_XML_REGISTRY) ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(Costanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE);
- ecc.setCodiceEccezione(Costanti.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO );
- ecc.setRilevanza(LivelloRilevanza.GRAVE);
- ecc.setDescrizione(Costanti.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_TIPO_SERVIZIO_CORRELATO);
- this.erroriValidazione.add(ecc);
- }
- */
- }
- String servizioCorrelato = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "servizioCorrelato", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "servizioCorrelato");
- }
- if(hrefFind != null)
- servizioCorrelato = hrefFind.getNodeValue();
- //log.info("Servizio Correlato ["+servizioCorrelato+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SERVIZIO_CORRELATO_NON_VALIDO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_SERVIZIO_CORRELATO.toString());
- this.erroriValidazione.add(ecc);
- }
- this.busta.setServizioCorrelato(servizioCorrelato);
- // MessaggioSingoloOneWay e Sincrono
- if ( servizioCorrelato != null &&
- ( SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY.equals(profilo) == true ||
- SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO.equals(profilo) == true )) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SERVIZIO_CORRELATO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_SERVIZIO_CORRELATO.toString());
- this.erroriValidazione.add(ecc);
- }
- if ( tipoServizioCorrelatoValido && (tipo!=null) &&
- ( SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY.equals(profilo) == true ||
- SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO.equals(profilo) == true )) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_CORRELATO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE_TIPO_SERVIZIO_CORRELATO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Collaborazione' <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneCollaborazione(OpenSPCoop2MessageFactory messageFactory, Node child) throws ProtocolException{
- //log.info("Validazione Collaborazione...");
- if ( SoapUtils.getNotEmptyChildNodes(messageFactory, child).size() != 1 ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.COLLABORAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- String coll = null;
- try{
- coll = SoapUtils.getNotEmptyChildNodes(messageFactory, child).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.COLLABORAZIONE_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- //log.info("Collaborazione["+coll+"]");
- this.busta.setCollaborazione(coll);
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Servizio' <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneServizio(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
- //log.info("Validazione servizio...");
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, child).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SERVIZIO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- String serv = null;
- try{
- serv = SoapUtils.getNotEmptyChildNodes(messageFactory, child).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SERVIZIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- //log.info("Servizio["+serv+"]");
- this.busta.setServizio(serv);
- // Tipo
- String tipo = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "tipo");
- }
- if(hrefFind != null)
- tipo = hrefFind.getNodeValue();
- //log.info("Servizio_tipo ["+tipo+"]");
-
- if (tipo == null){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con elemento Servizio senza tipo","Servizio");
- } else {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_NON_PRESENTE );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }else{
-
- // Controllo tipo
- try {
- this.busta.setTipoServizio(this.traduttore.toRegistryServiceType(tipo));
- }catch(Exception e) {
- this.busta.setTipoServizio(tipo); // senza traduzione
-
- this.log.warn(e.getMessage(),e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_SCONOSCIUTO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
-
- }
-
- }catch(StrutturaBustaException e){
- throw e;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_SERVIZIO_NON_VALIDO );
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Azione' <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneAzione(OpenSPCoop2MessageFactory messageFactory, Node child) throws ProtocolException{
- //log.info("Validazione azione...");
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, child).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.AZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_AZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- String azione = null;
- try{
- azione = SoapUtils.getNotEmptyChildNodes(messageFactory, child).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.AZIONE_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_AZIONE_SCONOSCIUTA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- //log.info("Azione["+azione+"]");
- this.busta.setAzione(azione);
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Messaggio' <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneMessaggio(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
- // Prefix eGov
- String xmlns = getPrefix();
- //log.info("Validazione Messaggio...");
- List<Node> contenutoMsg = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- if( (contenutoMsg.size() == 0) || (contenutoMsg.size() > 4)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("IntestazioneMessaggio/Messaggio childsize:"+contenutoMsg.size());
- this.erroriValidazione.add(ecc);
- }
- boolean presenzaID = false;
- boolean presenzaOra = false;
- boolean presenzaScadenza = false;
- boolean presenzaRifMessaggio = false;
-
- for(int j =0; j<contenutoMsg.size();j++){
- Node childMsg = contenutoMsg.get(j);
- //if((childMsg.getNodeName().equals(xmlns+"Identificatore"))){
- if(SoapUtils.matchLocalName(messageFactory, childMsg, "Identificatore", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
-
-
- if(presenzaID){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Identificatore","MessaggioIdentificatore");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- //log.info("Validazione identificatore...");
- presenzaID = true;
-
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- String id = null;
- try{
- id = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- if(id==null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- //log.info("identificatore["+id+"]");
- this.busta.setID(id);
- }
- //}else if((childMsg.getNodeName().equals(xmlns+"OraRegistrazione"))){
- }else if(SoapUtils.matchLocalName(messageFactory, childMsg, "OraRegistrazione", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
-
- if(presenzaOra){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento OraRegistrazione","MessaggioOraRegistrazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- //log.info("Validazione Ora Registrazione...");
- presenzaOra = true;
-
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- String ora = null;
- try{
- ora = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- Date oraDate = null;
- if(ora != null){
- oraDate = validazioneData(ora);
- }
- if( (ora==null) || (oraDate == null)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- //log.info("OraRegistrazione["+oraDate+"]");
- this.busta.setOraRegistrazione(oraDate);
-
- // tempo ...
- String tipoOra = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, childMsg, "tempo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, childMsg, "tempo");
- }
- tipoOra = hrefFind.getNodeValue();
- } catch(Exception e) {
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov senza elemento OraRegistrazione tempo","OraRegistrazioneTempo");
- } else {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- if(tipoOra!=null){
- if(!tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_LOCALE) && !tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_SPC)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TIPO_ORA_REGISTRAZIONE_SCONOSCIUTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- this.busta.setTipoOraRegistrazione(toTipoOra(tipoOra), tipoOra);
- }
- //}else if((childMsg.getNodeName().equals(xmlns+"RiferimentoMessaggio"))){
- }else if(SoapUtils.matchLocalName(messageFactory, childMsg, "RiferimentoMessaggio", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- //log.info("Validazione RiferimentoMessaggio...");
- if(presenzaRifMessaggio){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento RiferimentoMessaggio","MessaggioRiferimentoMessaggio");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaRifMessaggio = true;
-
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- String rifID = null;
- try{
- rifID = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- if(rifID==null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_VALORIZZATO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- //log.info("RiferimentoMessaggio["+rifID+"]");
- this.busta.setRiferimentoMessaggio(rifID);
- }
- //}else if((childMsg.getNodeName().equals(xmlns+"Scadenza"))){
- }else if(SoapUtils.matchLocalName(messageFactory, childMsg, "Scadenza", xmlns, SPCoopCostanti.NAMESPACE_EGOV)){
- //log.info("Validazione Scadenza...");
- if(presenzaScadenza){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento Scadenza","MessaggioScadenza");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SCADENZA_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaScadenza = true;
-
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SCADENZA_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- String scadenza = null;
- try{
- scadenza = SoapUtils.getNotEmptyChildNodes(messageFactory, childMsg).get(0).getNodeValue();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SCADENZA_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- Date scadenzaDate = null;
- if(scadenza != null){
- scadenzaDate = validazioneData(scadenza);
- }
- if( (scadenza==null) || (scadenzaDate == null)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.SCADENZA_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- if( dataScaduta(scadenza) == true){
- this.messaggioScaduto = true;
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.MESSAGGIO_SCADUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SCADENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
-
- //log.info("Scadenza["+scadenzaDate+"]");
- this.busta.setScadenza(scadenzaDate);
- }
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("IntestazioneMessaggio/Messaggio/child["+childMsg.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- }
- }
- if(presenzaID == false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- if(presenzaOra == false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- /**
- * Metodo che si occupa di validare l'elemento 'ProfiloTrasmissione' <var>child</var> secondo specifica eGov.
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneProfiloTrasmissione(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws ProtocolException{
- //log.info("Validazione profilo Trasmissione...");
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, child).size() != 0){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_TRASMISSIONE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE+" child size:"+SoapUtils.getNotEmptyChildNodes(messageFactory,child).size());
- this.erroriValidazione.add(ecc);
- }
- String inoltro = null;
- String confermaRicezione = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "inoltro", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "inoltro");
- }
- inoltro = hrefFind.getNodeValue();
- //log.info("Inoltro ["+inoltro+"]");
- } catch(Exception e) {
- // ignore
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "confermaRicezione", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "confermaRicezione");
- }
- confermaRicezione = hrefFind.getNodeValue();
- //log.info("confermaRicezione ["+confermaRicezione+"]");
- } catch(Exception e) {
- // ignore
- }
- // Inoltro...
- if(inoltro == null ){
- // Default: EGOV_IT_PIUDIUNAVOLTA
- inoltro = SPCoopCostanti.PROFILO_TRASMISSIONE_CON_DUPLICATI;
- } else {
- if( (inoltro.equals(SPCoopCostanti.PROFILO_TRASMISSIONE_SENZA_DUPLICATI) == false ) &&
- (inoltro.equals(SPCoopCostanti.PROFILO_TRASMISSIONE_CON_DUPLICATI) == false ) ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_SCONOSCIUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE_INOLTRO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- // ConfermaRicezione...
- if(confermaRicezione == null ){
- // Default: false
- confermaRicezione = "false";
- }else{
- if( (confermaRicezione.equals("true") == false ) &&
- (confermaRicezione.equals("false") == false ) ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_SCONOSCIUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE_CONFERMA_RICEZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- // set
- this.busta.setInoltro(toInoltro(inoltro), inoltro);
- if(confermaRicezione.equals("true"))
- this.busta.setConfermaRicezione(true);
- else
- this.busta.setConfermaRicezione(false);
- }
- /**
- * Metodo che si occupa di validare l'elemento 'Sequenza' <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneSequenza(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
- //log.info("Validazione sequenza...");
- if (SoapUtils.getNotEmptyChildNodes(messageFactory, child).size() != 0){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- String seq = null;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, child, "numeroProgressivo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, child, "numeroProgressivo");
- }
- seq = hrefFind.getNodeValue();
- //log.info("Sequenza ["+seq+"]");
- } catch(Exception e) {
- // ignore
- }
- if(seq == null ){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov senza elemento Sequenza numeroProgressivo","SequenzaNumeroProgressivo");
- } else {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_NUMERO_PROGRESSIVO.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- }
- try{
- Long test = Long.valueOf(seq);
- this.busta.setSequenza(test.longValue());
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_NUMERO_PROGRESSIVO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- /**
- * Metodo che si occupa di validare la lista Riscontri <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneListaRiscontri(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
- //log.info("Validazione Lista Riscontri...");
- List<Node> riscontri = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- if(riscontri.size() <= 0 ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_RISCONTRI_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
-
- for(int i=0; i<riscontri.size();i++){
- boolean errorFind = false;
- Node riscontro = riscontri.get(i);
- //log.info("esamino["+child.getNodeName()+"]");
- //if(!(riscontro.getNodeName().equals(xmlns+"Riscontro"))){
- if(!(SoapUtils.matchLocalName(messageFactory, riscontro, "Riscontro", prefix, SPCoopCostanti.NAMESPACE_EGOV))){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE+"/childNode["+riscontro.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- continue;
- }
- List<Node> childsRiscontro = SoapUtils.getNotEmptyChildNodes(messageFactory, riscontro);
- /*if(childsRiscontro.getLength() != 2){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(Costanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE);
- ecc.setCodiceEccezione(Costanti.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.GRAVE);
- ecc.setDescrizione(Costanti.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO+" child size:"+childsRiscontro.getLength());
- this.erroriValidazione.add(ecc);
- continue;
- }*/
- boolean presenzaIdentificatore = false;
- boolean presenzaOraRegistrazione = false;
-
- String id = null;
- boolean findID = false;
- String ora = null;
- Date oraDate = null;
- boolean findOra = false;
- String tipoOra = null;
- boolean findTipoOra = false;
- for(int j=0; j<childsRiscontro.size();j++){
- Node elem = childsRiscontro.get(j);
- //if(elem.getNodeName().equals(xmlns+"Identificatore")){
- if(SoapUtils.matchLocalName(messageFactory, elem, "Identificatore", prefix, SPCoopCostanti.NAMESPACE_EGOV)){
-
- if(presenzaIdentificatore){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento RiscontroIdentificatore","RiscontroIdentificatore");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_IDENTIFICATIVO_MESSAGGIO_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_IDENTIFICATORE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_IDENTIFICATORE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaIdentificatore = true;
-
- try{
- id = SoapUtils.getNotEmptyChildNodes(messageFactory, elem).get(0).getNodeValue();
- findID = true;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_IDENTIFICATIVO_MESSAGGIO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_IDENTIFICATORE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- //}else if(elem.getNodeName().equals(xmlns+"OraRegistrazione")){
- }else if(SoapUtils.matchLocalName(messageFactory, elem, "OraRegistrazione", prefix, SPCoopCostanti.NAMESPACE_EGOV)){
- if(presenzaOraRegistrazione){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento RiscontroOraRegistrazione","RiscontroOraRegistrazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
- presenzaOraRegistrazione = true;
-
- try{
- ora = SoapUtils.getNotEmptyChildNodes(messageFactory, elem).get(0).getNodeValue();
- findOra = true;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- oraDate = null;
- if(ora!=null){
- oraDate = validazioneData(ora);
- }
- if( (ora == null) || (oraDate==null)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
-
- // tempo ...
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, elem, "tempo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, elem, "tempo");
- }
- tipoOra = hrefFind.getNodeValue();
- findTipoOra = true;
- } catch(Exception e) {
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov senza RiscontroOraRegistrazioneTempo","RiscontroOraRegistrazioneTempo");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_TIPO_ORA_REGISTRAZIONE_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- if(tipoOra!=null){
- if(!tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_LOCALE) && !tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_SPC)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_TIPO_ORA_REGISTRAZIONE_SCONOSCIUTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- }
- }else {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_RISCONTRI_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO+"/child["+elem.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(presenzaIdentificatore == false){
- throw new StrutturaBustaException("Header egov senza RiscontroIdentificatore","RiscontroIdentificatore");
- }
- if(presenzaOraRegistrazione == false){
- throw new StrutturaBustaException("Header egov senza RiscontroOraRegistrazione","RiscontroOraRegistrazione");
- }
- }
-
- if(errorFind==false){
- if(findID != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_IDENTIFICATORE.toString());
- this.erroriValidazione.add(ecc);
- }
- if(findOra != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }else{
- if(findTipoOra != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_TIPO_ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
-
- //if(id!=null && ora!=null && tipoOra !=null) {
- if(id!=null || ora!=null || tipoOra !=null) {
- Riscontro r = new Riscontro();
- r.setID(id);
- //log.info("ORA REC["+oraDate+"]");
- r.setOraRegistrazione(oraDate);
- r.setTipoOraRegistrazioneValue(tipoOra);
- r.setTipoOraRegistrazione(this.traduttore.toTipoOraRegistrazione(tipoOra));
- this.busta.addRiscontro(r);
- }
- }
- }
- /**
- * Metodo che si occupa di validare la lista Trasmissioni <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in errors.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneListaTrasmissioni(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
-
- // log.info("Validazione Lista Trasmissioni...");
- List<Node> trasmissioni = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- if(trasmissioni.size()<=0){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_TRASMISSIONI_NON_VALORIZZATA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
-
- for(int i=0; i<trasmissioni.size();i++){
- boolean errorFind = false;
- Node trasmissione = trasmissioni.get(i);
- //log.info("esamino["+child.getNodeName()+"]");
- //if(!(trasmissione.getNodeName().equals(xmlns+"Trasmissione"))){
- if(!(SoapUtils.matchLocalName(messageFactory, trasmissione, "Trasmissione", prefix, SPCoopCostanti.NAMESPACE_EGOV))){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE+"/child["+trasmissione.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- continue;
- }
- List<Node> childsTrasmissione = SoapUtils.getNotEmptyChildNodes(messageFactory, trasmissione);
- /*if(childsTrasmissione.getLength() != 3){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(Costanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE);
- ecc.setCodiceEccezione(Costanti.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.GRAVE);
- ecc.setDescrizione(Costanti.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE+" child size:"+childsTrasmissione.getLength());
- this.erroriValidazione.add(ecc);
- continue;
- }*/
- boolean presenzaOrigine = false;
- boolean presenzaDestinazione = false;
- boolean presenzaOraRegistrazione = false;
-
- String origine = null;
- String tipoOrigine = null;
- String indTelematicoOrigine = null;
- boolean findOrigine = false;
- boolean findTipoOrigine = false;
- String destinazione = null;
- String tipoDestinazione = null;
- String indTelematicoDestinazione = null;
- boolean findDestinazione = false;
- boolean findTipoDestinazione = false;
- String ora = null;
- Date oraDate = null;
- boolean findOra = false;
- String tipoOra = null;
- boolean findTipoOra = false;
- for(int j=0; j<childsTrasmissione.size();j++){
- Node elem = childsTrasmissione.get(j);
- //if(elem.getNodeName().equals(xmlns+"Origine")){
- if(SoapUtils.matchLocalName(messageFactory, elem, "Origine", prefix, SPCoopCostanti.NAMESPACE_EGOV)){
-
- if(presenzaOrigine){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento TrasmissioneOrigine","TrasmissioneOrigine");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORIGINE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaOrigine = true;
-
- if(SoapUtils.getNotEmptyChildNodes(messageFactory, elem).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORIGINE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(SoapUtils.getNotEmptyChildNodes(messageFactory, elem).size() < 1){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneOrigine IdentificativoParte","TrasmissioneOrigineIdentificativoParte");
- }else{
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE.toString());
- }
- }else{
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE.toString());
- }
- this.erroriValidazione.add(ecc);
- errorFind = true;
- continue;
- }
- Node idParte = SoapUtils.getNotEmptyChildNodes(messageFactory, elem).get(0);
- try{
- List<Node> valueIDParte = SoapUtils.getNotEmptyChildNodes(messageFactory, idParte);
- origine = valueIDParte.get(0).getNodeValue();
- findOrigine = true;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORIGINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, idParte, "tipo");
- }
- tipoOrigine = hrefFind.getNodeValue();
-
- // Controllo tipo
- if(tipoOrigine==null){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(findTipoOrigine==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneOrigine IdentificativoParteTipo","TrasmissioneOrigineIdentificativoParteTipo");
- }
- }else{
- throw new Exception("Tipo non definito");
- }
- }
- try {
- tipoOrigine = this.traduttore.toRegistryOrganizationType(tipoOrigine);
- }catch(Exception e) {
- this.log.warn(e.getMessage(),e);
- throw new Exception("Tipo non valido");
- }
-
- findTipoOrigine = true;
- } catch (StrutturaBustaException se){
- throw se;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_ORIGINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
-
- // indirizzo Telematico
- try{
- Node hrefFindT = null;
- if(this.readQualifiedAttribute){
- hrefFindT = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindT = SoapUtils.getAttributeNode(messageFactory, idParte, "indirizzoTelematico");
- }
- if(hrefFindT != null)
- indTelematicoOrigine = hrefFindT.getNodeValue();
- //log.info("IndirizzoTelematicoOrigine ["+indTelematico+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_INDIRIZZO_ORIGINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- if(errorFind==false && indTelematicoOrigine != null && (indTelematicoOrigine.equals("")==false)){
- URL urlcheck = null;
- try{
- urlcheck = new URL( indTelematicoOrigine );
- indTelematicoOrigine = urlcheck.toString();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_INDIRIZZO_ORIGINE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- }
- //}else if(elem.getNodeName().equals(xmlns+"Destinazione")){
- }else if(SoapUtils.matchLocalName(messageFactory, elem, "Destinazione", prefix, SPCoopCostanti.NAMESPACE_EGOV)){
- if(presenzaDestinazione){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento TrasmissioneDestinazione","TrasmissioneDestinazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_DESTINAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaDestinazione = true;
-
- if(SoapUtils.getNotEmptyChildNodes(messageFactory, elem).size() != 1){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_DESTINAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(SoapUtils.getNotEmptyChildNodes(messageFactory, elem).size() < 1){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneDestinazione IdentificativoParte","TrasmissioneDestinazioneIdentificativoParte");
- }else{
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE.toString());
- }
- }else{
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE.toString());
- }
- this.erroriValidazione.add(ecc);
- errorFind = true;
- continue;
- }
- Node idParte = SoapUtils.getNotEmptyChildNodes(messageFactory, elem).get(0);
- try{
- List<Node> valueIDParte = SoapUtils.getNotEmptyChildNodes(messageFactory, idParte);
- destinazione = valueIDParte.get(0).getNodeValue();
- findDestinazione = true;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_DESTINAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "tipo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, idParte, "tipo");
- }
- tipoDestinazione = hrefFind.getNodeValue();
-
- // Controllo tipo
- if(tipoDestinazione==null){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(findTipoOrigine==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneDestinazione IdentificativoParteTipo","TrasmissioneDestinazioneIdentificativoParteTipo");
- }
- }else{
- throw new Exception("Tipo non definito");
- }
- }
- try {
- tipoDestinazione = this.traduttore.toRegistryOrganizationType(tipoDestinazione);
- }catch(Exception e) {
- this.log.warn(e.getMessage(),e);
- throw new Exception("Tipo non valido");
- }
-
- findTipoDestinazione = true;
- } catch (StrutturaBustaException se){
- throw se;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_DESTINAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
-
- // indirizzo Telematico
- try{
- Node hrefFindT = null;
- if(this.readQualifiedAttribute){
- hrefFindT = SoapUtils.getQualifiedAttributeNode(messageFactory, idParte, "indirizzoTelematico", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFindT = SoapUtils.getAttributeNode(messageFactory, idParte, "indirizzoTelematico");
- }
- if(hrefFindT != null)
- indTelematicoDestinazione = hrefFindT.getNodeValue();
- //log.info("IndirizzoTelematicoDestinazione ["+indTelematico+"]");
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_INDIRIZZO_DESTINAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- if(errorFind==false && indTelematicoDestinazione != null && (indTelematicoDestinazione.equals("")==false)){
- URL urlcheck = null;
- try{
- urlcheck = new URL( indTelematicoDestinazione );
- indTelematicoDestinazione = urlcheck.toString();
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_INDIRIZZO_DESTINAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE_IND_TELEMATICO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- }
- //}else if(elem.getNodeName().equals(xmlns+"OraRegistrazione")){
- }else if(SoapUtils.matchLocalName(messageFactory, elem, "OraRegistrazione", prefix, SPCoopCostanti.NAMESPACE_EGOV)){
- if(presenzaOraRegistrazione){
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- throw new StrutturaBustaException("Header egov con più di un elemento TrasmissioneOraRegistrazione","TrasmissioneOraRegistrazione");
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- if(this.segnalazioneElementoPresentePiuVolte)
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE+" "+CostantiProtocollo.ECCEZIONE_ELEMENTO_PRESENTE_PIU_VOLTE);
- else
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }else{
-
- presenzaOraRegistrazione = true;
-
- // ora ...
- try{
- ora = SoapUtils.getNotEmptyChildNodes(messageFactory, elem).get(0).getNodeValue();
- findOra = true;
- } catch(Exception e) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- oraDate = null;
- if(ora != null)
- oraDate = validazioneData(ora);
- if( (ora == null) || (oraDate == null)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
-
- // tempo ...
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, elem, "tempo", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, elem, "tempo");
- }
- tipoOra = hrefFind.getNodeValue();
- findTipoOra = true;
- } catch(Exception e) {
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(findTipoOrigine==false){
- throw new StrutturaBustaException("Header egov senza Trasmissione OraRegistrazioneTempo","TrasmissioneOraRegistrazioneTempo");
- }
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- if(tipoOra!=null){
- if(!tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_LOCALE) && !tipoOra.equals(SPCoopCostanti.TIPO_TEMPO_SPC)){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_SCONOSCIUTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
- }
- }else {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.LISTA_TRASMISSIONI_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE+"/child["+elem.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- errorFind = true;
- }
- }
-
-
- // Check elementi principali
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(presenzaOrigine==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneOrigine","TrasmissioneOrigine");
- }
- if(presenzaDestinazione==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneDestinazione","TrasmissioneDestinazione");
- }
- if(presenzaOraRegistrazione==false){
- throw new StrutturaBustaException("Header egov senza TrasmissioneOraRegistrazione","TrasmissioneOraRegistrazione");
- }
- }
-
- if(errorFind == false){
- if(presenzaOrigine==false){
- errorFind = true;
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORIGINE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE.toString());
- this.erroriValidazione.add(ecc);
- }
- if(presenzaDestinazione==false){
- errorFind = true;
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_DESTINAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- if(presenzaOraRegistrazione==false){
- errorFind = true;
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- if(errorFind == false){
- if(findOrigine != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORIGINE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE.toString());
- this.erroriValidazione.add(ecc);
- }else{
- if(findTipoOrigine != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_ORIGINE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORIGINE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- if(findDestinazione != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_DESTINAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE.toString());
- this.erroriValidazione.add(ecc);
- }else{
- if(findTipoDestinazione != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_DESTINAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_DESTINAZIONE_IDENTIFICATIVO_PARTE_TIPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- if(findOra != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }else{
- if(findTipoOra != true){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE_TEMPO.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
-
- //if(origine!=null && tipoOrigine!=null && tipoDestinazione!=null && destinazione!=null &&
- // ora!=null && tipoOra != null) {
- if(origine!=null || tipoOrigine!=null || tipoDestinazione!=null || destinazione!=null ||
- ora!=null || tipoOra != null) {
- //log.info("add Trasmissione....");
- Trasmissione tr = new Trasmissione();
- tr.setOrigine(origine);
- tr.setTipoOrigine(tipoOrigine);
- tr.setIndirizzoOrigine(indTelematicoOrigine);
- tr.setDestinazione(destinazione);
- tr.setTipoDestinazione(tipoDestinazione);
- tr.setIndirizzoDestinazione(indTelematicoDestinazione);
- //log.info("ORA REC["+oraDate+"]");
- tr.setOraRegistrazione(oraDate);
- tr.setTempoValue(tipoOra);
- tr.setTempo(this.traduttore.toTipoOraRegistrazione(tipoOra));
- this.busta.addTrasmissione(tr);
- }
- }
- }
- /**
- * Metodo che si occupa di validare la lista Eccezioni <var>child</var> secondo specifica eGov.
- * <p>
- * Il metodo, oltre ad effettuare la validazione, si occupa anche di leggerne il contenuto e
- * di impostarlo all'interno dell'oggetto <var>busta</var>.
- * Mano mano che sono incontrati errori di validazione, viene creato un oggetto
- * {@link Eccezione}, e viene inserito in un errorsEccezione.
- *
- * @param child nodo su cui effettuare la validazione
- * @throws ProtocolException
- *
- */
- private void validazioneListaEccezioni(OpenSPCoop2MessageFactory messageFactory, Node child,String prefix) throws StrutturaBustaException, ProtocolException{
- //log.info("Validazione Lista Eccezioni...");
- List<Node> eccezioni = SoapUtils.getNotEmptyChildNodes(messageFactory, child);
- for(int i=0; i<eccezioni.size();i++){
- boolean errorFind = false;
- Node eccezione = eccezioni.get(i);
- //log.info("esamino["+child.getNodeName()+"]");
- //if(!(eccezione.getNodeName().equals(xmlns+"Eccezione"))){
- if(!(SoapUtils.matchLocalName(messageFactory, eccezione, "Eccezione", prefix, SPCoopCostanti.NAMESPACE_EGOV))){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE+"/child["+eccezione.getNodeName()+"]");
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- errorFind = true;
- }
- String contestoCodifica = null;
- String codiceEccezione = null;
- String rilevanza = null;
- String posizione = null;
-
- // ContestoCodifica
- boolean contestoCodificaError = false;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, eccezione, "contestoCodifica", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, eccezione, "contestoCodifica");
- }
- contestoCodifica = hrefFind.getNodeValue();
- } catch(Exception e) {
- contestoCodificaError = true;
- }
- if(contestoCodifica == null)
- contestoCodificaError = true;
- if(contestoCodificaError){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_CONTESTO_CODIFICA.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- errorFind = true;
- }
- // codiceEccezione
- boolean codiceEccezioneError = false;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, eccezione, "codiceEccezione", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, eccezione, "codiceEccezione");
- }
- codiceEccezione = hrefFind.getNodeValue();
- } catch(Exception e) {
- codiceEccezioneError = true;
- }
- if(validazioneCodiceEccezione(codiceEccezione) == false)
- codiceEccezioneError = true;
- if(codiceEccezioneError){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_CODICE_ECCEZIONE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- errorFind = true;
- }
- // Rilevanza
- boolean rilevanzaError = false;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, eccezione, "rilevanza", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, eccezione, "rilevanza");
- }
- rilevanza = hrefFind.getNodeValue();
- } catch(Exception e) {
- rilevanzaError = true;
- }
- LivelloRilevanza livRilevanza = validazioneRilevanza(rilevanza);
- if(livRilevanza.equals(LivelloRilevanza.UNKNOWN))
- rilevanzaError = true;
- if(rilevanzaError){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_RILEVANZA.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- errorFind = true;
- }
- // Posizione
- boolean posizioneError = false;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, eccezione, "posizione", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, eccezione, "posizione");
- }
- posizione = hrefFind.getNodeValue();
- } catch(Exception e) {
- posizioneError = true;
- }
- if(posizione == null)
- posizioneError = true;
- if(posizioneError){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_POSIZIONE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- errorFind = true;
- }
- if(this.spcoopProperties.isGenerazioneBustaErrore_strutturaMalformataHeaderProtocollo()==false){
- if(contestoCodifica == null){
- throw new StrutturaBustaException("Header egov senza Eccezione contestoCodifica","EccezioneContestoCodifica");
- }
- if(codiceEccezione == null){
- throw new StrutturaBustaException("Header egov senza Eccezione codiceEccezione","EccezioneCodiceEccezione");
- }
- if(rilevanza == null){
- throw new StrutturaBustaException("Header egov senza Eccezione rilevanza","EccezioneRilevanza");
- }
- if(posizione == null){
- throw new StrutturaBustaException("Header egov senza Eccezione posizione","EccezionePosizione");
- }
- }
-
- // Check finale
- if(errorFind == false){
- if(contestoCodifica == null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_CONTESTO_CODIFICA.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- if(codiceEccezione == null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_CODICE_ECCEZIONE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- if(rilevanza == null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_RILEVANZA.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- if(posizione == null){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_POSIZIONE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- }
-
- if(contestoCodifica!=null && codiceEccezione!=null && rilevanza !=null && posizione!=null) {
- Eccezione eccLetta = new Eccezione();
-
- eccLetta.setContestoCodificaValue(contestoCodifica);
- eccLetta.setContestoCodifica(this.traduttore.toContestoCodificaEccezione(contestoCodifica));
-
- eccLetta.setCodiceEccezioneValue(codiceEccezione);
- eccLetta.setCodiceEccezione(this.traduttore.toCodiceErroreCooperazione(codiceEccezione));
-
- eccLetta.setRilevanza(livRilevanza);
- eccLetta.setRilevanzaValue(rilevanza);
-
- eccLetta.setDescrizione(posizione);
-
- this.busta.addEccezione(eccLetta);
- }
- }
- }
- /**
- * Metodo che si occupa di validare un codice di rilevanza associato ad una Eccezione.
- *
- * @param codice Codice della rilevanza da validare.
- * @return true se il codice e' valido, false altrimenti
- * @throws ProtocolException
- *
- */
- private LivelloRilevanza validazioneRilevanza(String codice) throws ProtocolException{
- return this.traduttore.toLivelloRilevanza(codice);
- }
- /**
- * Metodo che si occupa di validare un codice di errore associato ad una Eccezione.
- *
- * @param codice Codice dell'eccezione da validare.
- * @return true se il codice e' valido, false altrimenti
- *
- */
- public boolean validazioneCodiceEccezione(CodiceErroreCooperazione codice){
- String v = this.traduttore.toString(codice);
- return v!=null;
- }
-
- public boolean validazioneCodiceEccezione(String codicetxt) throws ProtocolException{
- CodiceErroreCooperazione codice = CodiceErroreCooperazione.toCodiceErroreCooperazione(this.protocolFactory, codicetxt);
- return validazioneCodiceEccezione(codice);
- }
- public void validazioneFaultEGov(OpenSPCoop2Message msg){
- try{
- SOAPBody body = msg.castAsSoap().getSOAPBody();
-
- //Traduttore trasl = this.protocolFactory.createTraduttore();
- //log.info("VALIDAZIONE FAULT");
- if(body.hasFault() == false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- } else {
- SOAPFault fault = body.getFault();
- boolean valoriOK = true;
- // Controllo sul Fault
- String faultS = fault.getFaultString();
- if(faultS!=null)
- faultS = faultS.trim();
- if( !(SPCoopCostanti.FAULT_STRING_PROCESSAMENTO.equals(faultS)) &&
- !(SPCoopCostanti.FAULT_STRING_VALIDAZIONE.equals(faultS)) ){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT_STRING.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- valoriOK = false;
- }
- Name codeS = fault.getFaultCodeAsName();
-
- if(
- (codeS == null)
- ||
- !(
- ("Client".equals(codeS.getLocalName()) || "Server".equals(codeS.getLocalName()) ) &&
- Costanti.SOAP_ENVELOPE_NAMESPACE.equalsIgnoreCase(codeS.getURI())
- )
- )
- {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT_CODE.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- valoriOK = false;
- }
- if(valoriOK){
- if ("Client".equals(codeS.getLocalName()) ){
- boolean detailPresente = false;
- Detail d = fault.getDetail();
- if(d!=null){
- if(d.getDetailEntries().hasNext())
- detailPresente = true;
- }
- // Con soap:Client, non ci deveno essere Detail, e ci deve essere FAULT_STRING_VALIDAZIONE_SPCOOP!
- if ( !(SPCoopCostanti.FAULT_STRING_VALIDAZIONE.equals(faultS)) ) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT_STRING.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- if (detailPresente) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT_DETAILS_PRESENTI.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- }
- if ("Server".equals(codeS.getLocalName()) ){
- // Con soap:Server, ci deve essere FAULT_STRING_PROCESSAMENTO_SPCOOP!
- if ( !(SPCoopCostanti.FAULT_STRING_PROCESSAMENTO.equals(faultS)) ) {
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_ECCEZIONI_NON_VALIDA_POSIZIONE_SOAP_FAULT_STRING.toString());
- this.errorsTrovatiSullaListaEccezioni.add(ecc);
- }
- }
- }
- }
- }catch(Exception e){
- this.log.error("Errore durante la validazione del SoapFault",e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.PROCESSAMENTO);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("Validazione SoapFault: errore di processamento");
- this.erroriProcessamento.add(ecc);
- return;
- }
- }
- public void validazioneManifestAttachmentsEGov(OpenSPCoop2Message msgParam,ProprietaManifestAttachments proprietaManifestAttachments){
- //log.info("VALIDAZIONE MANIFEST");
- SOAPBody soapBody = null;
- try{
- OpenSPCoop2SoapMessage msg = msgParam.castAsSoap();
- OpenSPCoop2MessageFactory messageFactory = msg.getFactory();
-
- java.util.List<String> contentID = new java.util.ArrayList<>();
- java.util.List<String> contentLocation = new java.util.ArrayList<>();
- java.util.Iterator<?> it = msg.getAttachments();
-
- while(it.hasNext()){
- AttachmentPart ap = (AttachmentPart) it.next();
- contentID.add(ap.getContentId());
- contentLocation.add(ap.getContentLocation());
- //log.info("Attachments con ID["+ap.getContentId()+"] e Location["+ap.getContentLocation()+"]");
- }
- boolean isRichiesta = false;
- boolean isRisposta = false;
- soapBody = msg.getSOAPBody();
- List<Node> soapBodyList = SoapUtils.getNotEmptyChildNodes(messageFactory, soapBody);
- if(soapBodyList.size()!=1){
- // Il body deve possedere esattamente un elemento
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE+" child size:"+soapBodyList.size());
- this.erroriValidazione.add(ecc);
- return;
- }
- //log.info("Validazione Descrizione...");
- Node descrizione = soapBodyList.get(0);
- String prefixManifest = descrizione.getPrefix();
- if(prefixManifest== null)
- prefixManifest = "";
- if("".equals(prefixManifest)==false)
- prefixManifest = prefixManifest + ":";
- //log.info("esamino["+descrizione.getNodeName()+"]");
- //if(!(descrizione.getNodeName().equals(prefixManifest+"Descrizione"))){
- if(!(SoapUtils.matchLocalName(messageFactory, descrizione, "Descrizione", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV))){
- // Elemento Descrizione non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- if(SPCoopCostanti.NAMESPACE_EGOV.equals(descrizione.getNamespaceURI())==false){
- // Elemento Descrizione non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_NAMESPACE.toString());
- this.erroriValidazione.add(ecc);
- return;
- }
- List<Node> descrizioneMessaggi = SoapUtils.getNotEmptyChildNodes(messageFactory, descrizione);
- if(descrizioneMessaggi.size()<=0){
- // Elemento DescrizioneMessaggio non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE+" child size:"+descrizioneMessaggi.size());
- this.erroriValidazione.add(ecc);
- return;
- }
- for(int i=0; i<descrizioneMessaggi.size();i++){
- //log.info("Validazione DescrizioneMessaggio...");
- Node descrizioneMessaggio = descrizioneMessaggi.get(i);
- //log.info("esamino["+descrizioneMessaggio.getNodeName()+"]");
- //if(!(descrizioneMessaggio.getNodeName().equals(prefixManifest+SPCoopCostanti.LOCAL_NAME_MANIFEST_EGOV_DESCRIZIONE_MESSAGGIO))){
- if(!(SoapUtils.matchLocalName(messageFactory, descrizioneMessaggio, SPCoopCostanti.LOCAL_NAME_MANIFEST_EGOV_DESCRIZIONE_MESSAGGIO, prefixManifest, SPCoopCostanti.NAMESPACE_EGOV))){
- // Elemento DescrizioneMessaggio non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE+"/child["+descrizioneMessaggio.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- continue;
- }
- //log.info("Validazione Riferimento...");
- List<Node> riferimentoList = SoapUtils.getNotEmptyChildNodes(messageFactory, descrizioneMessaggio);
- if(riferimentoList.size()!=1){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO +" child size:"+riferimentoList.size());
- this.erroriValidazione.add(ecc);
- continue;
- }
- Node riferimento = riferimentoList.get(0);
- //log.info("esamino["+riferimento.getNodeName()+"]");
- //if(!(riferimento.getNodeName().equals(prefixManifest+"Riferimento"))){
- if(!(SoapUtils.matchLocalName(messageFactory, riferimento, "Riferimento", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV))){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI_RIFERIMENTO_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO+"/child["+riferimento.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- continue;
- }
- // href
- String href = null;
- boolean hrefError = false;
- try{
- Node hrefFind = null;
- if(this.readQualifiedAttribute){
- hrefFind = SoapUtils.getQualifiedAttributeNode(messageFactory, riferimento, "href", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- hrefFind = SoapUtils.getAttributeNode(messageFactory, riferimento, "href");
- }
- href = hrefFind.getNodeValue();
- } catch(Exception e) {
- hrefError = true;
- }
- if(href == null)
- hrefError = true;
- if(hrefError){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI_RIFERIMENTO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_HREF.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- // VALIDAZIONE HREF
-
-
-
- boolean findHRef = false;
- for(int k=0; k<contentID.size(); k++){
- if(href.equals(contentID.get(k)) ||
- href.equals("cid:"+contentID.get(k)) ||
- href.equals(contentLocation.get(k)) ){
- contentID.remove(k);
- contentLocation.remove(k);
- findHRef = true;
- break;
- }
- else{
- // verifico se per caso l'href fornito non contiene i '<' e '>'.
- // per retrocompatibilità provo ad aggiungergli io
- String hrefNew = new String(href);
- String cidPref = "";
- if(hrefNew.startsWith("cid:")){
- hrefNew = hrefNew.substring("cid:".length());
- cidPref = "cid:";
- }
- if(hrefNew.startsWith("<")==false){
- hrefNew = "<"+hrefNew;
- }
- if(hrefNew.endsWith(">")==false){
- hrefNew = hrefNew + ">";
- }
- hrefNew = cidPref + hrefNew;
- if(hrefNew.equals(href)==false){
- if(hrefNew.equals(contentID.get(k)) ||
- hrefNew.equals("cid:"+contentID.get(k)) ){
- contentID.remove(k);
- contentLocation.remove(k);
- findHRef = true;
- break;
- }
- }
- }
- }
- if(findHRef == false){
- // RiferimentoAttachment non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATO_NON_PRESENTE);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_HREF+"["+href+"]");
- this.erroriValidazione.add(ecc);
- }
- // role
- String role = null;
- boolean roleError = false;
- try{
- Node roleFind = null;
- if(this.readQualifiedAttribute){
- roleFind = SoapUtils.getQualifiedAttributeNode(messageFactory, riferimento, "role", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- roleFind = SoapUtils.getAttributeNode(messageFactory, riferimento, "role");
- }
- role = roleFind.getNodeValue();
- } catch(Exception e) {
- roleError = true;
- }
- if(role == null)
- roleError = true;
- if(roleError){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_ROLE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- // CHECK Semantica Ruolo
- if(this.spcoopProperties.getRoleRichiestaManifest().equalsIgnoreCase(role) ||
- this.spcoopProperties.getRoleRispostaManifest().equalsIgnoreCase(role) ){
- if(isRichiesta || isRisposta){
- // Doppio elemento 'Richiesta/Risposta'
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- // uso il riferiemnto non valido per farlo tradurre con codice 118 e quindi farlo gestire bene ad InoltroBuste, per non far gestire il manifest in fase di sbustamento
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI_RIFERIMENTO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- // (Manifest degli attachments) Esistono più di una descrizione di messaggio
- // con 'role' discriminante ('"+Costanti.ATTACHMENTS_MANIFEST_RICHIESTA+"'/'"+Costanti.ATTACHMENTS_MANIFEST_RISPOSTA+"').
- String posizioneErrore = SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_ROLE_PRINCIPALE_DUPLICATO.toString();
- posizioneErrore = posizioneErrore.replace(SPCoopCostanti.MANIFEST_KEY_ROLE_RICHIESTA, this.spcoopProperties.getRoleRichiestaManifest());
- posizioneErrore = posizioneErrore.replace(SPCoopCostanti.MANIFEST_KEY_ROLE_RISPOSTA, this.spcoopProperties.getRoleRispostaManifest());
- ecc.setDescrizione(posizioneErrore);
- this.erroriValidazione.add(ecc);
- continue;
- }
- if(this.spcoopProperties.getRoleRichiestaManifest().equalsIgnoreCase(role))
- isRichiesta = true;
- else
- isRisposta = true;
- }
- // id
- String id = null;
- boolean idError = false;
- try{
- // Deve essere sempre preso come qualificato.
- Node idFind = SoapUtils.getQualifiedAttributeNode(messageFactory, riferimento, "id", SPCoopCostanti.NAMESPACE_EGOV);
- id = idFind.getNodeValue();
- } catch(Exception e) {
- idError = true;
- }
- if(id == null)
- idError = true;
- if(idError){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_ID.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- // check elementi Schema e Titolo
- List<Node> elementiRiferimento = SoapUtils.getNotEmptyChildNodes(messageFactory, riferimento);
- if(elementiRiferimento.size()!=2){
- // Elemento Schema non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO+" child size:"+elementiRiferimento.size());
- this.erroriValidazione.add(ecc);
- continue;
- }
- Node child = elementiRiferimento.get(0);
- Node schema = null;
- Node titolo = null;
- //if(child.getNodeName().equals(prefixManifest+"Schema")){
- if(SoapUtils.matchLocalName(messageFactory, child, "Schema", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV)){
- schema = child;
- titolo = elementiRiferimento.get(1);
- //}else if(child.getNodeName().equals(prefixManifest+"Titolo")){
- }else if(SoapUtils.matchLocalName(messageFactory, child, "Titolo", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV)){
- titolo = child;
- schema = elementiRiferimento.get(1);
- }else{
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO+"/child["+child.getNodeName()+"]");
- this.erroriValidazione.add(ecc);
- continue;
- }
- //log.info("Validazione Schema...");
- //log.info("esamino["+schema.getNodeName()+"]");
- //if(!(schema.getNodeName().equals(prefixManifest+"Schema"))){
- if(!(SoapUtils.matchLocalName(messageFactory, schema, "Schema", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV))){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_SCHEMA.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- // posizione
- String posizione = null;
- boolean posizioneError = false;
- try{
- Node posizioneFind = null;
- if(this.readQualifiedAttribute){
- posizioneFind = SoapUtils.getQualifiedAttributeNode(messageFactory, schema, "posizione", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- posizioneFind = SoapUtils.getAttributeNode(messageFactory, schema, "posizione");
- }
- posizione = posizioneFind.getNodeValue();
- } catch(Exception e) {
- posizioneError = true;
- }
- if(posizione == null)
- posizioneError = true;
- if(posizioneError){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_SCHEMA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- //log.info("Validazione Titolo...");
- //log.info("esamino["+titolo.getNodeName()+"]");
- //if(!(titolo.getNodeName().equals(prefixManifest+"Titolo"))){
- if(!(SoapUtils.matchLocalName(messageFactory, titolo, "Titolo", prefixManifest, SPCoopCostanti.NAMESPACE_EGOV))){
- // Elemento Riferimento non esistente
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_TITOLO.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- // Lingua
- String Lingua = null;
- try{
- Node LinguaFind = null;
- if(this.readQualifiedAttribute){
- LinguaFind = SoapUtils.getQualifiedAttributeNode(messageFactory, titolo, "Lingua", SPCoopCostanti.NAMESPACE_EGOV);
- }else{
- LinguaFind = SoapUtils.getAttributeNode(messageFactory, titolo, "Lingua");
- }
- Lingua = LinguaFind.getNodeValue();
- } catch(Exception e) {
- // ignore
- }
- if(Lingua == null)
- Lingua = "it"; // default is it
- String valoreTitolo = null;
- try{
- valoreTitolo = SoapUtils.getNotEmptyChildNodes(messageFactory, titolo).get(0).getNodeValue();
- if(valoreTitolo == null)
- throw new Exception("valore non presente");
- } catch(Exception e) {
- // Elemento Titolo con scorretto valore
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_TITOLO.toString());
- this.erroriValidazione.add(ecc);
- continue;
- }
- }
- // Validazione role Richiesta/Risposta
- if( isRichiesta==false && isRisposta ==false){
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- // uso il riferiemnto non valido per farlo tradurre con codice 118 e quindi farlo gestire bene ad InoltroBuste, per non far gestire il manifest in fase di sbustamento
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATI_RIFERIMENTO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- String posizioneErrore = SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_ROLE_PRINCIPALE_ASSENTE.toString();
- posizioneErrore = posizioneErrore.replace(SPCoopCostanti.MANIFEST_KEY_ROLE_RICHIESTA, this.spcoopProperties.getRoleRichiestaManifest());
- posizioneErrore = posizioneErrore.replace(SPCoopCostanti.MANIFEST_KEY_ROLE_RISPOSTA, this.spcoopProperties.getRoleRispostaManifest());
- ecc.setDescrizione(posizioneErrore);
- this.erroriValidazione.add(ecc);
- return;
- }
- // Validazione href
- while(contentID.size()>0){
- // RiferimentoAttachment non definito in manifest
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ALLEGATO_NON_DEFINITO_MANIFEST);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- String href = contentID.remove(0);
- if(href==null)
- href = contentLocation.remove(0);
- else
- contentLocation.remove(0);
- // (Manifest degli attachments) Allegato con id/location ["+href+"] non riferito attraverso opportuno elemento nel Manifest degli attachments.
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_MANIFEST_POSIZIONE_DESCRIZIONE_DESCRIZIONE_MESSAGGIO_RIFERIMENTO_HREF+"["+href+"] non presente");
- this.erroriValidazione.add(ecc);
- }
- return;
- }catch(Exception e){
- this.log.error("Errore durante la validazione del Manifest degli attachments",e);
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.PROCESSAMENTO);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione("Manifest degli attachments: errore di processamento");
- this.erroriProcessamento.add(ecc);
- return;
- }
- finally{
- // *** GB ***
- soapBody = null;
- // *** GB ***
- }
- }
- /**
- * Metodo che si occupa di validare la data <var>aDate</var>
- * secondo la specifica eGov.
- * La Data deve essere formato da :
- * yyyy-MM-ddThh:mm:ss[.SSS] (es. il 23/03/2005 alle 13:56:01 viene registrato come 2005-03-23T13:56:01)
- * In caso la validazione abbia successo, viene ritornato un oggetto Date inizializzato alla data <var>aDate</var>.
- *
- * @param aDate data eGov da validare
- * @return un oggetto Date inizializzato alla <var>aDate</var>, se essa e' conforme alla specifica eGov, null altrimenti.
- *
- */
- private Date validazioneData(String aDate){
- try{
- String [] split = aDate.split("T");
- if(split == null)
- return null;
- if(split.length != 2)
- return null;
- // Check data yyyy-MM-dd
- String [] date = split[0].split("-");
- if(date == null)
- return null;
- if(date.length != 3)
- return null;
- if(date[0].length() != 4)
- return null;
- try{
- Integer test = Integer.valueOf(date[0]);
- if(test.intValue()>2100)
- return null;
- } catch(Exception e){
- return null;
- }
- if(date[1].length() != 2)
- return null;
- if(date[2].length() != 2)
- return null;
- try{
- Integer mese = Integer.valueOf(date[1]);
- if(mese.intValue()>12 || mese.intValue() < 0)
- return null;
- Integer giorno = Integer.valueOf(date[2]);
- if(giorno.intValue() < 0)
- return null;
- if(giorno.intValue()>29 && mese.intValue() == 2)
- return null;
- else if(giorno.intValue()>30 &&
- ( (mese.intValue() == 4) ||
- (mese.intValue() == 6) ||
- (mese.intValue() == 9) ||
- (mese.intValue() == 11) ) )
- return null;
- else if(giorno.intValue()>31)
- return null;
- } catch(Exception e){
- return null;
- }
- // Check ora hh:mm:ss
- String [] ora = split[1].split(":");
- if(ora == null)
- return null;
- if(ora.length < 3)
- return null;
- // Check ora
- if(ora[0].length() != 2)
- return null;
- try{
- Integer test = Integer.valueOf(ora[0]);
- if(test.intValue() > 23 || test.intValue() < 0)
- return null;
- } catch(Exception e){
- return null;
- }
- if(ora[1].length() != 2)
- return null;
- try{
- Integer test = Integer.valueOf(ora[1]);
- if(test.intValue() > 59 || test.intValue() < 0)
- return null;
- } catch(Exception e){
- return null;
- }
- // Secondi...
- String secondi = null;
- if(ora[2].length() < 2)
- return null;
- try{
- secondi = "" + ora[2].charAt(0) + ora[2].charAt(1);
- Integer test = Integer.valueOf(secondi);
- if(test.intValue() > 59 || test.intValue() < 0)
- return null;
- } catch(Exception e){
- return null;
- }
- GregorianCalendar calendar = null;
- try{
- calendar =
- new GregorianCalendar( (Integer.valueOf(date[0])).intValue(),
- ((Integer.valueOf(date[1])).intValue()-1), // il mese is 0-Based
- (Integer.valueOf(date[2])).intValue(),
- (Integer.valueOf(ora[0])).intValue(),
- (Integer.valueOf(ora[1])).intValue(),
- (Integer.valueOf(secondi)).intValue());
- } catch(Exception e){
- return null;
- }
- long value = (calendar.getTime()).getTime(); //+ (1000 * 60 *60);
- return new Date(value);
- }catch(Exception error){
- return null;
- }
- }
- /**
- * Metodo che si occupa di verificare che la data <var>scadenza</var> descritta con un formato
- * conforme alla specifica eGov, non sia scaduta.
- * La Data deve essere formato da :
- * yyyy-MM-ddThh:mm:ss (es. il 23/03/2005 alle 13:56:01 viene registrato come 2005-03-23T13:56:01)
- *
- * @param scadenza data eGov da controllare se e' scaduta o meno.
- * @return un boolean true se la data non e' scaduta. Altrimenti false.
- *
- */
- private boolean dataScaduta(String scadenza){
- Date now=DateManager.getDate();
- SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter("yyyy MM dd HH mm ss");
- String nowFormat = dateformat.format(now);
- String scadenzaFormat = ((scadenza.replace('-',' ')).replace(':',' ')).replace('T',' ');
- String [] splitNow = nowFormat.split(" ");
- String [] splitScadenza = scadenzaFormat.split(" ");
- if (validazioneData(scadenza) == null)
- return false;
- try{
- Integer testNowAnno = Integer.valueOf(splitNow[0]);
- Integer testScadenzaAnno = Integer.valueOf(splitScadenza[0]);
- Integer testNowMese = Integer.valueOf(splitNow[1]);
- Integer testScadenzaMese = Integer.valueOf(splitScadenza[1]);
- Integer testNowGiorno = Integer.valueOf(splitNow[2]);
- Integer testScadenzaGiorno = Integer.valueOf(splitScadenza[2]);
- Integer testNowOra = Integer.valueOf(splitNow[3]);
- Integer testScadenzaOra = Integer.valueOf(splitScadenza[3]);
- Integer testNowMinuti = Integer.valueOf(splitNow[4]);
- Integer testScadenzaMinuti = Integer.valueOf(splitScadenza[4]);
- Integer testNowSecondi = Integer.valueOf(splitNow[5]);
- Integer testScadenzaSecondi = Integer.valueOf(splitScadenza[5].charAt(0) + splitScadenza[5].charAt(1));
- if(testNowAnno.intValue() > testScadenzaAnno.intValue())
- return true;
- else if ( (testNowAnno.intValue() == testScadenzaAnno.intValue()) &&
- (testNowMese.intValue() > testScadenzaMese.intValue()) )
- return true;
- else if ( (testNowAnno.intValue() == testScadenzaAnno.intValue()) &&
- (testNowMese.intValue() == testScadenzaMese.intValue()) &&
- (testNowGiorno.intValue() > testScadenzaGiorno.intValue()) )
- return true;
- else if ( (testNowAnno.intValue() == testScadenzaAnno.intValue()) &&
- (testNowMese.intValue() == testScadenzaMese.intValue()) &&
- (testNowGiorno.intValue() == testScadenzaGiorno.intValue()) &&
- (testNowOra.intValue() > testScadenzaOra.intValue()) )
- return true;
- else if ( (testNowAnno.intValue() == testScadenzaAnno.intValue()) &&
- (testNowMese.intValue() == testScadenzaMese.intValue()) &&
- (testNowGiorno.intValue() == testScadenzaGiorno.intValue()) &&
- (testNowOra.intValue() == testScadenzaOra.intValue()) &&
- (testNowMinuti.intValue() > testScadenzaMinuti.intValue()) )
- return true;
- else if ( (testNowAnno.intValue() == testScadenzaAnno.intValue()) &&
- (testNowMese.intValue() == testScadenzaMese.intValue()) &&
- (testNowGiorno.intValue() == testScadenzaGiorno.intValue()) &&
- (testNowOra.intValue() == testScadenzaOra.intValue()) &&
- (testNowMinuti.intValue() == testScadenzaMinuti.intValue()) &&
- (testNowSecondi.intValue() > testScadenzaSecondi.intValue()) )
- return true;
- } catch(Exception e){
- return true;
- }
- return false;
- }
-
-
- private void validazioneDatePresentiRispettoDateFuture() throws ProtocolException{
-
- int intervalloTolleranza = this.spcoopProperties.getIntervalloMinutiTolleranzaDateFuture();
-
- Date sistema = DateManager.getDate();
- Date dataFuturaMassimaAccettata = new Date(sistema.getTime()+(intervalloTolleranza*60*1000));
-
-
- // Ora Registrazione, altrimenti segnalero' il problema
- if(this.busta.getOraRegistrazione()!=null){
- if( this.busta.getOraRegistrazione().after(dataFuturaMassimaAccettata)){
- this.log.error("Data portata nell'ora di registrazione ["+SPCoopUtils.getDate_eGovFormat(this.busta.getOraRegistrazione())+"] futura rispetto all'ora attuale di sistema ("+
- SPCoopUtils.getDate_eGovFormat(sistema)+") e l'intervallo di tolleranza impostato a "+intervalloTolleranza+" minuti");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ORA_REGISTRAZIONE_NON_VALIDA_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
-
- // Check su id egov
- // Se correttamente formato, altrimenti segnalero' il problema
- if(this.busta.getID()!=null){
- String [] split = this.busta.getID().split("_");
- if(split != null && split.length == 5){
- Date dataIntoIDEgov = null;
- try{
- SimpleDateFormat dateformat = DateUtils.getSimpleDateFormatMinute();
- dataIntoIDEgov = dateformat.parse(split[3]+"_"+split[4]);
- }catch(Exception e){
- // ignore
- }
- if(dataIntoIDEgov!=null){
- //System.out.println("DATA IDEGOV BUSTA ["+dataIntoIDEgov.toString()
- // +"] MINIMA ["+oraRegistrazioneMinimaAccettata.toString()+"]");
- if( dataIntoIDEgov.after(dataFuturaMassimaAccettata)){
- this.log.error("Data portata nell'identificativo egov ["+this.busta.getID()+"]["+SPCoopUtils.getDate_eGovFormat(dataIntoIDEgov)+"] futura rispetto all'ora attuale di sistema ("+
- SPCoopUtils.getDate_eGovFormat(sistema)+") e l'intervallo di tolleranza impostato a "+intervalloTolleranza+" minuti");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALIDO);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_VALIDO_POSIZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }
-
- // Ora Registrazione nei riscontri, altrimenti segnalero' il problema
- for(int i=0; i<this.busta.sizeListaRiscontri(); i++){
- Riscontro riscontro = this.busta.getRiscontro(i);
- if(riscontro.getOraRegistrazione()!=null){
- if( riscontro.getOraRegistrazione().after(dataFuturaMassimaAccettata)){
- this.log.error("Data portata nell'ora di registrazione del riscontro con id ["+riscontro.getID()+"] ["+SPCoopUtils.getDate_eGovFormat(riscontro.getOraRegistrazione())
- +"] futura rispetto all'ora attuale di sistema ("+
- SPCoopUtils.getDate_eGovFormat(sistema)+") e l'intervallo di tolleranza impostato a "+intervalloTolleranza+" minuti");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.RISCONTRO_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_RISCONTRI_NON_VALIDA_POSIZIONE_RISCONTRO_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
-
- // Ora Registrazione nelle trasmissioni, altrimenti segnalero' il problema
- for(int i=0; i<this.busta.sizeListaTrasmissioni(); i++){
- Trasmissione trasmissione = this.busta.getTrasmissione(i);
- if(trasmissione.getOraRegistrazione()!=null){
- if( trasmissione.getOraRegistrazione().after(dataFuturaMassimaAccettata)){
- this.log.error("Data portata nell'ora di registrazione di una trasmissione ["+SPCoopUtils.getDate_eGovFormat(trasmissione.getOraRegistrazione())
- +"] futura rispetto all'ora attuale di sistema ("+
- SPCoopUtils.getDate_eGovFormat(sistema)+") e l'intervallo di tolleranza impostato a "+intervalloTolleranza+" minuti");
- Eccezione ecc = new Eccezione();
- ecc.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
- ecc.setCodiceEccezione(CodiceErroreCooperazione.TRASMISSIONE_ORA_REGISTRAZIONE_NON_VALIDA);
- ecc.setRilevanza(LivelloRilevanza.ERROR);
- ecc.setDescrizione(SPCoopCostantiPosizioneEccezione.ECCEZIONE_LISTA_TRASMISSIONI_NON_VALIDA_POSIZIONE_TRASMISSIONE_ORA_REGISTRAZIONE.toString());
- this.erroriValidazione.add(ecc);
- }
- }
- }
- }
- @Override
- public ValidazioneSintatticaResult<SOAPHeaderElement> validaRichiesta(OpenSPCoop2Message msg, Busta datiBustaLettiURLMappingProperties, ProprietaValidazioneErrori proprietaValidazioneErrori) throws ProtocolException{
- try{
- this.msg = msg.castAsSoap();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- boolean isValido = this.valida(false);
- ErroreCooperazione errore = null;
- if(this.msgErrore!=null && this.codiceErrore!=null){
- errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
- }
- ValidazioneSintatticaResult<SOAPHeaderElement> result = new ValidazioneSintatticaResult<SOAPHeaderElement>(this.erroriValidazione, this.erroriProcessamento,
- this.errorsTrovatiSullaListaEccezioni, this.busta, errore, this.bustaErroreHeaderIntestazione, this.headerEGov, isValido);
- return result;
- }
-
- @Override
- public ValidazioneSintatticaResult<SOAPHeaderElement> validaRisposta(OpenSPCoop2Message msg, Busta bustaRichiesta, ProprietaValidazioneErrori proprietaValidazioneErrori) throws ProtocolException{
- try{
- this.msg = msg.castAsSoap();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- boolean isValido = this.valida(false);
- ErroreCooperazione errore = null;
- if(this.msgErrore!=null && this.codiceErrore!=null){
- errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
- }
- ValidazioneSintatticaResult<SOAPHeaderElement> result = new ValidazioneSintatticaResult<SOAPHeaderElement>(this.erroriValidazione, this.erroriProcessamento,
- this.errorsTrovatiSullaListaEccezioni, this.busta, errore, this.bustaErroreHeaderIntestazione, this.headerEGov, isValido);
- return result;
- }
-
- @Override
- public boolean verifyProtocolPresence(TipoPdD tipoPdD, ProfiloDiCollaborazione profilo, RuoloMessaggio ruoloMessaggio,
- OpenSPCoop2Message msg) throws ProtocolException{
- if(msg==null){
- return false;
- }
- OpenSPCoop2SoapMessage soap = null;
- try{
- soap = msg.castAsSoap();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- return this.existsHeaderEGov(soap);
- }
- @Override
- public ValidazioneSintatticaResult<SOAPHeaderElement> validazioneManifestAttachments(
- OpenSPCoop2Message msg,
- ProprietaManifestAttachments proprietaManifestAttachments) {
- this.validazioneManifestAttachmentsEGov(msg, proprietaManifestAttachments);
- ErroreCooperazione errore = null;
- if(this.msgErrore!=null && this.codiceErrore!=null){
- errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
- }
- ValidazioneSintatticaResult<SOAPHeaderElement> result = new ValidazioneSintatticaResult<SOAPHeaderElement>(this.erroriValidazione, this.erroriProcessamento,
- this.errorsTrovatiSullaListaEccezioni, this.busta, errore, this.bustaErroreHeaderIntestazione, this.headerEGov, true);
- return result;
- }
- @Override
- public SPCoopBustaRawContent getBustaRawContent_senzaControlli(
- OpenSPCoop2Message msg) throws ProtocolException {
- try{
- this.msg = msg.castAsSoap();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- return this.getHeaderEGov_senzaControlli();
- }
-
- @Override
- public Busta getBusta_senzaControlli(OpenSPCoop2Message msg) throws ProtocolException{
- try{
- this.msg = msg.castAsSoap();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- if(this.valida(true)){
- return this.busta;
- }
- else{
- return this.bustaErroreHeaderIntestazione;
- }
- }
- @Override
- public ValidazioneSintatticaResult<SOAPHeaderElement> validazioneFault(OpenSPCoop2Message msg) {
- this.validazioneFaultEGov(msg);
- ErroreCooperazione errore = null;
- if(this.msgErrore!=null && this.codiceErrore!=null){
- errore = new ErroreCooperazione(this.msgErrore, this.codiceErrore);
- }
- ValidazioneSintatticaResult<SOAPHeaderElement> result = new ValidazioneSintatticaResult<SOAPHeaderElement>(this.erroriValidazione, this.erroriProcessamento,
- this.errorsTrovatiSullaListaEccezioni, this.busta, errore, this.bustaErroreHeaderIntestazione, this.headerEGov, true);
- return result;
- }
-
- public ProfiloDiCollaborazione toProfilo(String profilo){
- if(SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY.equals(profilo))
- return ProfiloDiCollaborazione.ONEWAY;
- if(SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO.equals(profilo))
- return ProfiloDiCollaborazione.SINCRONO;
- if(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_ASIMMETRICO.equals(profilo))
- return ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO;
- if(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_SIMMETRICO.equals(profilo))
- return ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO;
- return ProfiloDiCollaborazione.UNKNOWN;
- }
- public TipoOraRegistrazione toTipoOra(String tipoora){
- if(SPCoopCostanti.TIPO_TEMPO_LOCALE.equals(tipoora))
- return TipoOraRegistrazione.LOCALE;
- if(SPCoopCostanti.TIPO_TEMPO_SPC.equals(tipoora))
- return TipoOraRegistrazione.SINCRONIZZATO;
- return TipoOraRegistrazione.UNKNOWN;
- }
- public Inoltro toInoltro(String inoltro){
- if(SPCoopCostanti.PROFILO_TRASMISSIONE_CON_DUPLICATI.equals(inoltro))
- return Inoltro.CON_DUPLICATI;
- if(SPCoopCostanti.PROFILO_TRASMISSIONE_SENZA_DUPLICATI.equals(inoltro))
- return Inoltro.SENZA_DUPLICATI;
- return Inoltro.UNKNOWN;
- }
- }