SPCoopTraduttore.java

/*
 * GovWay - A customizable API Gateway 
 * https://govway.org
 * 
 * Copyright (c) 2005-2024 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.config;

import java.util.Date;

import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.protocol.basic.config.BasicTraduttore;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
import org.openspcoop2.protocol.sdk.constants.ContestoCodificaEccezione;
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.MessaggiFaultErroreCooperazione;
import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
import org.openspcoop2.protocol.sdk.constants.SubCodiceErrore;
import org.openspcoop2.protocol.sdk.constants.TipoOraRegistrazione;
import org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti;
import org.openspcoop2.protocol.spcoop.constants.SPCoopCostantiPosizioneEccezione;
import org.openspcoop2.protocol.spcoop.utils.SPCoopUtils;

/**
 * Classe che implementa, in base al protocollo SPCoop, l'interfaccia {@link org.openspcoop2.protocol.sdk.config.ITraduttore} 
 *
 * @author Poli Andrea (apoli@link.it)
 * @author Nardi Lorenzo (nardi@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class SPCoopTraduttore extends BasicTraduttore {


	public SPCoopTraduttore(IProtocolFactory<?> protocolFactory) throws ProtocolException{
		super(protocolFactory);
	}

	@Override
	public String toString(CodiceErroreCooperazione cod) {
		return toString(cod, null);
	}
	@Override
	public String toString(CodiceErroreCooperazione cod,SubCodiceErrore subCode) {

		String prefix = SPCoopCostanti.ECCEZIONE_PREFIX_CODE;

		switch (cod) {

		// Macro-struttura
		case FORMATO_NON_CORRETTO:
			return prefix+"001";
		case FORMATO_INTESTAZIONE_NON_CORRETTO:
			return prefix+"002";
		case FORMATO_CORPO_NON_CORRETTO:
		case ALLEGATI:
			return prefix+"003";

			// Header
		case INTESTAZIONE_NON_CORRETTA:
			return prefix+"100";

			// Mittente
		case MITTENTE:
		case MITTENTE_NON_PRESENTE:
		case TIPO_MITTENTE_NON_PRESENTE:
		case IDPORTA_MITTENTE_NON_PRESENTE:
		case INDIRIZZO_MITTENTE_NON_PRESENTE:
		case MITTENTE_PRESENTE_PIU_VOLTE:
		case TIPO_MITTENTE_PRESENTE_PIU_VOLTE:
		case IDPORTA_MITTENTE_PRESENTE_PIU_VOLTE:
		case INDIRIZZO_MITTENTE_PRESENTE_PIU_VOLTE:
		case MITTENTE_NON_VALORIZZATO:
		case TIPO_MITTENTE_NON_VALORIZZATO:
		case IDPORTA_MITTENTE_NON_VALORIZZATO:
		case INDIRIZZO_MITTENTE_NON_VALORIZZATO:
		case MITTENTE_NON_VALIDO:
		case TIPO_MITTENTE_NON_VALIDO:
		case IDPORTA_MITTENTE_NON_VALIDO:
		case INDIRIZZO_MITTENTE_NON_VALIDO:
		case MITTENTE_SCONOSCIUTO:
		case TIPO_MITTENTE_SCONOSCIUTO:
		case IDPORTA_MITTENTE_SCONOSCIUTO:
		case INDIRIZZO_MITTENTE_SCONOSCIUTO:
			return prefix+"101";

			// Destinatario
		case DESTINATARIO:
		case DESTINATARIO_NON_PRESENTE:
		case TIPO_DESTINATARIO_NON_PRESENTE:
		case IDPORTA_DESTINATARIO_NON_PRESENTE:
		case INDIRIZZO_DESTINATARIO_NON_PRESENTE:
		case DESTINATARIO_PRESENTE_PIU_VOLTE:
		case TIPO_DESTINATARIO_PRESENTE_PIU_VOLTE:
		case IDPORTA_DESTINATARIO_PRESENTE_PIU_VOLTE:
		case INDIRIZZO_DESTINATARIO_PRESENTE_PIU_VOLTE:
		case DESTINATARIO_NON_VALORIZZATO:
		case TIPO_DESTINATARIO_NON_VALORIZZATO:
		case IDPORTA_DESTINATARIO_NON_VALORIZZATO:
		case INDIRIZZO_DESTINATARIO_NON_VALORIZZATO:
		case DESTINATARIO_NON_VALIDO:
		case TIPO_DESTINATARIO_NON_VALIDO:
		case IDPORTA_DESTINATARIO_NON_VALIDO:
		case INDIRIZZO_DESTINATARIO_NON_VALIDO:
		case DESTINATARIO_SCONOSCIUTO:
		case TIPO_DESTINATARIO_SCONOSCIUTO:
		case IDPORTA_DESTINATARIO_SCONOSCIUTO:
		case INDIRIZZO_DESTINATARIO_SCONOSCIUTO:
			return prefix+"102";

			// Profilo di Collaboraizone
		case PROFILO_COLLABORAZIONE:
		case PROFILO_COLLABORAZIONE_NON_PRESENTE:
		case PROFILO_COLLABORAZIONE_PRESENTE_PIU_VOLTE:
		case PROFILO_COLLABORAZIONE_NON_VALORIZZATO:
		case PROFILO_COLLABORAZIONE_NON_VALIDO:
		case PROFILO_COLLABORAZIONE_SCONOSCIUTO:
		case SERVIZIO_CORRELATO_NON_PRESENTE:
		case TIPO_SERVIZIO_CORRELATO_NON_PRESENTE:
		case VERSIONE_SERVIZIO_CORRELATO_NON_PRESENTE:
		case SERVIZIO_CORRELATO_PRESENTE_PIU_VOLTE:
		case TIPO_SERVIZIO_CORRELATO_PRESENTE_PIU_VOLTE:
		case VERSIONE_SERVIZIO_CORRELATO_PRESENTE_PIU_VOLTE:
		case SERVIZIO_CORRELATO_NON_VALORIZZATO:
		case TIPO_SERVIZIO_CORRELATO_NON_VALORIZZATO:
		case VERSIONE_SERVIZIO_CORRELATO_NON_VALORIZZATO:
		case SERVIZIO_CORRELATO_NON_VALIDO:
		case TIPO_SERVIZIO_CORRELATO_NON_VALIDO:
		case VERSIONE_SERVIZIO_CORRELATO_NON_VALIDO:
		case SERVIZIO_CORRELATO_SCONOSCIUTO:
		case TIPO_SERVIZIO_CORRELATO_SCONOSCIUTO:
		case VERSIONE_SERVIZIO_CORRELATO_SCONOSCIUTO:
			return prefix+"103";

			// Collaborazione
		case COLLABORAZIONE:
		case COLLABORAZIONE_NON_PRESENTE:
		case COLLABORAZIONE_PRESENTE_PIU_VOLTE:
		case COLLABORAZIONE_NON_VALORIZZATA:
		case COLLABORAZIONE_NON_VALIDA:
		case COLLABORAZIONE_SCONOSCIUTA:
			return prefix+"104";

			// Servizio
		case SERVIZIO:
		case SERVIZIO_NON_PRESENTE:
		case TIPO_SERVIZIO_NON_PRESENTE:
		case VERSIONE_SERVIZIO_NON_PRESENTE:
		case SERVIZIO_PRESENTE_PIU_VOLTE:
		case TIPO_SERVIZIO_PRESENTE_PIU_VOLTE:
		case VERSIONE_SERVIZIO_PRESENTE_PIU_VOLTE:
		case SERVIZIO_NON_VALORIZZATO:
		case TIPO_SERVIZIO_NON_VALORIZZATO:
		case VERSIONE_SERVIZIO_NON_VALORIZZATO:
		case SERVIZIO_NON_VALIDO:
		case TIPO_SERVIZIO_NON_VALIDO:
		case VERSIONE_SERVIZIO_NON_VALIDO:
		case SERVIZIO_SCONOSCIUTO:
		case TIPO_SERVIZIO_SCONOSCIUTO:
		case VERSIONE_SERVIZIO_SCONOSCIUTO:
			return prefix+"105";

			// Azione
		case AZIONE:
		case AZIONE_NON_PRESENTE:
		case AZIONE_PRESENTE_PIU_VOLTE:
		case AZIONE_NON_VALORIZZATA:
		case AZIONE_NON_VALIDA:
		case AZIONE_SCONOSCIUTA:
		case INVOCAZIONE_SENZA_AZIONE_NON_PERMESSA:
			return prefix+"106";

			// IdentificativoMessaggio non definito
		case IDENTIFICATIVO_MESSAGGIO:
		case IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE:
		case IDENTIFICATIVO_MESSAGGIO_PRESENTE_PIU_VOLTE:
		case IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO:
			return prefix+"107";

			// OraRegistrazione
		case ORA_REGISTRAZIONE:
		case ORA_REGISTRAZIONE_NON_PRESENTE:
		case TIPO_ORA_REGISTRAZIONE_NON_PRESENTE:
		case ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case TIPO_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case ORA_REGISTRAZIONE_NON_VALORIZZATA:
		case TIPO_ORA_REGISTRAZIONE_NON_VALORIZZATA:
		case ORA_REGISTRAZIONE_NON_VALIDA:
		case TIPO_ORA_REGISTRAZIONE_NON_VALIDA:
		case ORA_REGISTRAZIONE_SCONOSCIUTA:
		case TIPO_ORA_REGISTRAZIONE_SCONOSCIUTA:
			return prefix+"108";

			// RiferimentoMessaggio non definito
		case RIFERIMENTO_MESSAGGIO:
		case RIFERIMENTO_MESSAGGIO_NON_PRESENTE:
		case RIFERIMENTO_MESSAGGIO_PRESENTE_PIU_VOLTE:
		case RIFERIMENTO_MESSAGGIO_NON_VALORIZZATO:
			return prefix+"109";

			// IdentificativoMessaggio non valido
		case IDENTIFICATIVO_MESSAGGIO_NON_VALIDO:
		case IDENTIFICATIVO_MESSAGGIO_SCONOSCIUTO:
		case IDENTIFICATIVO_MESSAGGIO_GIA_PROCESSATO:
			return prefix+"110";

			// RiferimentoMessaggio non valido
		case RIFERIMENTO_MESSAGGIO_NON_VALIDO:
		case RIFERIMENTO_MESSAGGIO_SCONOSCIUTO:
		case RIFERIMENTO_MESSAGGIO_GIA_PROCESSATO:
			return prefix+"111";

			// OraRegistrazione
		case SCADENZA:
		case SCADENZA_NON_PRESENTE:
		case TIPO_SCADENZA_NON_PRESENTE:
		case SCADENZA_PRESENTE_PIU_VOLTE:
		case TIPO_SCADENZA_PRESENTE_PIU_VOLTE:
		case SCADENZA_NON_VALORIZZATA:
		case TIPO_SCADENZA_NON_VALORIZZATA:
		case SCADENZA_NON_VALIDA:
		case TIPO_SCADENZA_NON_VALIDA:
		case SCADENZA_SCONOSCIUTA:
		case TIPO_SCADENZA_SCONOSCIUTA:
			return prefix+"112";

			// ProfiloTrasmissione
		case PROFILO_TRASMISSIONE:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE:
		case PROFILO_TRASMISSIONE_NON_PRESENTE:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_NON_PRESENTE:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_PRESENTE:
		case PROFILO_TRASMISSIONE_PRESENTE_PIU_VOLTE:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_PRESENTE_PIU_VOLTE:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_PRESENTE_PIU_VOLTE:
		case PROFILO_TRASMISSIONE_NON_VALORIZZATO:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_NON_VALORIZZATO:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_VALORIZZATO:
		case PROFILO_TRASMISSIONE_NON_VALIDO:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_NON_VALIDO:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_VALIDO:
		case PROFILO_TRASMISSIONE_SCONOSCIUTO:
		case PROFILO_TRASMISSIONE_FILTRO_DUPLICATI_SCONOSCIUTO:
		case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_SCONOSCIUTO:
			return prefix+"113";

			// Sequenza
		case CONSEGNA_IN_ORDINE_NON_PRESENTE:
		case CONSEGNA_IN_ORDINE_PRESENTE_PIU_VOLTE:
		case CONSEGNA_IN_ORDINE_NON_VALORIZZATA:
		case CONSEGNA_IN_ORDINE_NON_VALIDA:
		case CONSEGNA_IN_ORDINE_SCONOSCIUTA:
		case CONSEGNA_IN_ORDINE_FUORI_SEQUENZA:
		case CONSEGNA_IN_ORDINE_TIPO_MITTENTE_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_MITTENTE_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_TIPO_DESTINATARIO_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_DESTINATARIO_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_TIPO_SERVIZIO_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_SERVIZIO_NON_VALIDO:
		case CONSEGNA_IN_ORDINE_AZIONE_NON_VALIDA:
		case CONSEGNA_IN_ORDINE_COLLABORAZIONE_IN_BUSTA_NON_CAPOSTIPITE_SCONOSCIUTA:
			return prefix+"114";

			// ListaRiscontri
		case LISTA_RISCONTRI:
		case LISTA_RISCONTRI_NON_PRESENTE:
		case LISTA_RISCONTRI_PRESENTE_PIU_VOLTE:
		case LISTA_RISCONTRI_NON_VALORIZZATA:
		case LISTA_RISCONTRI_NON_VALIDA:
		case LISTA_RISCONTRI_SCONOSCIUTA:
		case RISCONTRO:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO:
		case RISCONTRO_ORA_REGISTRAZIONE:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE:
		case RISCONTRO_NON_PRESENTE:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO_NON_PRESENTE:
		case RISCONTRO_ORA_REGISTRAZIONE_NON_PRESENTE:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE_NON_PRESENTE:
		case RISCONTRO_PRESENTE_PIU_VOLTE:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO_PRESENTE_PIU_VOLTE:
		case RISCONTRO_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case RISCONTRO_NON_VALORIZZATO:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO_NON_VALORIZZATO:
		case RISCONTRO_ORA_REGISTRAZIONE_NON_VALORIZZATA:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE_NON_VALORIZZATO:
		case RISCONTRO_NON_VALIDO:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO_NON_VALIDO:
		case RISCONTRO_ORA_REGISTRAZIONE_NON_VALIDA:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE_NON_VALIDO:
		case RISCONTRO_SCONOSCIUTO:
		case RISCONTRO_IDENTIFICATIVO_MESSAGGIO_SCONOSCIUTO:
		case RISCONTRO_ORA_REGISTRAZIONE_SCONOSCIUTA:
		case RISCONTRO_TIPO_ORA_REGISTRAZIONE_SCONOSCIUTO:
			return prefix+"115";

			// ListaTrasmissioni
		case LISTA_TRASMISSIONI:
		case LISTA_TRASMISSIONI_NON_PRESENTE:
		case LISTA_TRASMISSIONI_PRESENTE_PIU_VOLTE:
		case LISTA_TRASMISSIONI_NON_VALORIZZATA:
		case LISTA_TRASMISSIONI_NON_VALIDA:
		case LISTA_TRASMISSIONI_SCONOSCIUTA:
		case TRASMISSIONE:
		case TRASMISSIONE_TIPO_ORIGINE:
		case TRASMISSIONE_ORIGINE:
		case TRASMISSIONE_INDIRIZZO_ORIGINE:
		case TRASMISSIONE_IDPORTA_ORIGINE:
		case TRASMISSIONE_TIPO_DESTINAZIONE:
		case TRASMISSIONE_DESTINAZIONE:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE:
		case TRASMISSIONE_ORA_REGISTRAZIONE:
		case TRASMISSIONE_NON_PRESENTE:
		case TRASMISSIONE_TIPO_ORIGINE_NON_PRESENTE:
		case TRASMISSIONE_ORIGINE_NON_PRESENTE:
		case TRASMISSIONE_INDIRIZZO_ORIGINE_NON_PRESENTE:
		case TRASMISSIONE_IDPORTA_ORIGINE_NON_PRESENTE:
		case TRASMISSIONE_TIPO_DESTINAZIONE_NON_PRESENTE:
		case TRASMISSIONE_DESTINAZIONE_NON_PRESENTE:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE_NON_PRESENTE:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE_NON_PRESENTE:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_NON_PRESENTE:
		case TRASMISSIONE_ORA_REGISTRAZIONE_NON_PRESENTE:
		case TRASMISSIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_TIPO_ORIGINE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_ORIGINE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_INDIRIZZO_ORIGINE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_IDPORTA_ORIGINE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_TIPO_DESTINAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_DESTINAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_ORA_REGISTRAZIONE_PRESENTE_PIU_VOLTE:
		case TRASMISSIONE_NON_VALORIZZATA:
		case TRASMISSIONE_TIPO_ORIGINE_NON_VALORIZZATA:
		case TRASMISSIONE_ORIGINE_NON_VALORIZZATA:
		case TRASMISSIONE_INDIRIZZO_ORIGINE_NON_VALORIZZATA:
		case TRASMISSIONE_IDPORTA_ORIGINE_NON_VALORIZZATA:
		case TRASMISSIONE_TIPO_DESTINAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_DESTINAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_ORA_REGISTRAZIONE_NON_VALORIZZATA:
		case TRASMISSIONE_NON_VALIDA:
		case TRASMISSIONE_TIPO_ORIGINE_NON_VALIDA:
		case TRASMISSIONE_ORIGINE_NON_VALIDA:
		case TRASMISSIONE_INDIRIZZO_ORIGINE_NON_VALIDA:
		case TRASMISSIONE_IDPORTA_ORIGINE_NON_VALIDA:
		case TRASMISSIONE_TIPO_DESTINAZIONE_NON_VALIDA:
		case TRASMISSIONE_DESTINAZIONE_NON_VALIDA:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE_NON_VALIDA:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE_NON_VALIDA:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_NON_VALIDA:
		case TRASMISSIONE_ORA_REGISTRAZIONE_NON_VALIDA:
		case TRASMISSIONE_SCONOSCIUTA:
		case TRASMISSIONE_TIPO_ORIGINE_SCONOSCIUTA:
		case TRASMISSIONE_ORIGINE_SCONOSCIUTA:
		case TRASMISSIONE_INDIRIZZO_ORIGINE_SCONOSCIUTA:
		case TRASMISSIONE_IDPORTA_ORIGINE_SCONOSCIUTA:
		case TRASMISSIONE_TIPO_DESTINAZIONE_SCONOSCIUTA:
		case TRASMISSIONE_DESTINAZIONE_SCONOSCIUTA:
		case TRASMISSIONE_INDIRIZZO_DESTINAZIONE_SCONOSCIUTA:
		case TRASMISSIONE_IDPORTA_DESTINAZIONE_SCONOSCIUTA:
		case TRASMISSIONE_TIPO_ORA_REGISTRAZIONE_SCONOSCIUTA:
		case TRASMISSIONE_ORA_REGISTRAZIONE_SCONOSCIUTA:
			return prefix+"116";

			// Firma non valida
		case SICUREZZA_FIRMA_INTESTAZIONE_NON_VALIDA:
		case SICUREZZA_FIRMA_INTESTAZIONE_NON_PRESENTE:
			return prefix+"117";	

			// Allegato riferimento non valido
		case ALLEGATI_RIFERIMENTO_NON_PRESENTE:
		case ALLEGATI_RIFERIMENTO_NON_VALIDO:
			return prefix+"118";	

			// Allegato non presente
		case ALLEGATO_NON_PRESENTE:
			return prefix+"119";	

			// Allegato non definito
		case ALLEGATO_NON_DEFINITO_MANIFEST:
			return prefix+"120";	

			// Politiche di sicurezza
		case SICUREZZA:
		case SICUREZZA_CIFRATURA_NON_PRESENTE:
		case SICUREZZA_CIFRATURA_NON_VALIDA:
		case SICUREZZA_CIFRATURA_ALLEGATO_NON_PRESENTE:
		case SICUREZZA_CIFRATURA_ALLEGATO_NON_VALIDA:
		case SICUREZZA_NON_PRESENTE:
			return prefix+"200";	

			// Mittente non autorizzato
		case SICUREZZA_AUTORIZZAZIONE_FALLITA:
		case SICUREZZA_FALSIFICAZIONE_MITTENTE:	
			return prefix+"201";	

			// Firma XML non valida
		case SICUREZZA_FIRMA_NON_VALIDA:
		case SICUREZZA_FIRMA_NON_PRESENTE:
		case SICUREZZA_FIRMA_ALLEGATO_NON_VALIDA:
		case SICUREZZA_FIRMA_ALLEGATO_NON_PRESENTE:
			return prefix+"202";	

			// Firma PKCS#7 non valida
		case SICUREZZA_FIRMA_PKCS7_ALLEGATO_NON_VALIDA:
		case SICUREZZA_FIRMA_PKCS7_ALLEGATO_NON_PRESENTE:
			return prefix+"203";	

			// Eccezione processamento
		case ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO:
			return prefix+"300";	

			// Messaggio scaduto
		case MESSAGGIO_SCADUTO:
			return prefix+"301";	

			// ECCEZIONE_GESTIONE_TRASPARENZA_TEMPORALE
		case CONSEGNA_IN_ORDINE:
			return prefix+"400";	

			// ECCEZIONE_TRASPARENZA_TEMPORALE_NON_SUPPORTATA
		case CONSEGNA_IN_ORDINE_NON_SUPPORTATA:
			return prefix+"401";	

			// ECCEZIONE_TRASPARENZA_TEMPORALE_NON_GESTIBILE
		case CONSEGNA_IN_ORDINE_NON_GESTIBILE:
			return prefix+"402";	

		default:
			return null;
		} 

	}

	@Override
	public CodiceErroreCooperazione toCodiceErroreCooperazione(String codiceCooperazione) {

		String prefix = SPCoopCostanti.ECCEZIONE_PREFIX_CODE;

		// Macro-struttura
		if( (prefix+"001").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.FORMATO_NON_CORRETTO;
		}
		else if( (prefix+"002").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.FORMATO_INTESTAZIONE_NON_CORRETTO;
		}
		else if( (prefix+"003").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.FORMATO_CORPO_NON_CORRETTO;
		}

		// Header
		else if( (prefix+"100").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.INTESTAZIONE_NON_CORRETTA;
		}

		// Mittente
		else if( (prefix+"101").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.MITTENTE;
		}

		// Destinatario
		else if( (prefix+"102").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.DESTINATARIO;
		}

		// Profilo di Collaborazione
		else if( (prefix+"103").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.PROFILO_COLLABORAZIONE;
		}

		// Collaborazione
		else if( (prefix+"104").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.COLLABORAZIONE;
		}

		// Servizio
		else if( (prefix+"105").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SERVIZIO;
		}

		// Azione
		else if( (prefix+"106").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.AZIONE;
		}

		// IdentificativoMessaggio non definito
		else if( (prefix+"107").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO;
		}

		// OraRegistrazione
		else if( (prefix+"108").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.ORA_REGISTRAZIONE;
		}

		// RiferimentoMessaggio non definito
		else if( (prefix+"109").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO;
		}

		// IdentificativoMessaggio non valido
		else if( (prefix+"110").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_NON_VALIDO;
		}

		// RiferimentoMessaggio non valido
		else if( (prefix+"111").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_VALIDO;
		}

		// Scadenza
		else if( (prefix+"112").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SCADENZA;
		}

		// ProfiloTrasmissione
		else if( (prefix+"113").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.PROFILO_TRASMISSIONE;
		}

		// Sequenza
		else if( (prefix+"114").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_VALIDA;
		}

		// ListaRiscontri
		else if( (prefix+"115").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.LISTA_RISCONTRI;
		}

		// ListaTrasmissioni
		else if( (prefix+"116").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.LISTA_TRASMISSIONI;
		}

		// FirmaNonValida
		else if( (prefix+"117").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SICUREZZA_FIRMA_INTESTAZIONE_NON_VALIDA;
		}

		// Allegato riferimento non valido
		else if( (prefix+"118").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.ALLEGATI_RIFERIMENTO_NON_VALIDO;
		}

		// Allegato non presente
		else if( (prefix+"119").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.ALLEGATO_NON_PRESENTE;
		}

		// Allegato non definito
		else if( (prefix+"120").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.ALLEGATO_NON_DEFINITO_MANIFEST;
		}

		// Politiche di sicurezza
		else if( (prefix+"200").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SICUREZZA;
		}

		// Mittente non autorizzato
		else if( (prefix+"201").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SICUREZZA_AUTORIZZAZIONE_FALLITA;
		}

		// Firma non valida
		else if( (prefix+"202").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SICUREZZA_FIRMA_NON_VALIDA;
		}	

		// Firma non valida
		else if( (prefix+"203").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.SICUREZZA_FIRMA_PKCS7_ALLEGATO_NON_VALIDA;
		}		

		// Eccezione processamento
		else if( (prefix+"300").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO;
		}	

		// MessaggioScaduto
		else if( (prefix+"301").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.MESSAGGIO_SCADUTO;
		}	

		// ECCEZIONE_GESTIONE_TRASPARENZA_TEMPORALE
		else if( (prefix+"400").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.CONSEGNA_IN_ORDINE;
		}	

		// ECCEZIONE_TRASPARENZA_TEMPORALE_NON_SUPPORTATA
		else if( (prefix+"401").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_SUPPORTATA;
		}	

		// ECCEZIONE_TRASPARENZA_TEMPORALE_NON_GESTIBILE
		else if( (prefix+"402").equals(codiceCooperazione)){
			return CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_GESTIBILE;
		}	

		else{
			return CodiceErroreCooperazione.UNKNOWN;
		}

	}

	@Override
	public String toString(MessaggiFaultErroreCooperazione msg){
		switch (msg) {
		case FAULT_STRING_PROCESSAMENTO:
			return "EGOV_IT_300 - Errore nel processamento del messaggio SPCoop";
		case FAULT_STRING_PROCESSAMENTO_SENZA_CODICE:
			return "Errore nel processamento del messaggio SPCoop";
		case FAULT_STRING_VALIDAZIONE:
			return "EGOV_IT_001 - Formato Busta non corretto";
		default:
			return msg.toString();
		}
	}

	@Override
	public String toString(ErroreCooperazione msg){

		try{

			if(msg.getCodiceErrore()!=null){
				switch (msg.getCodiceErrore()) {

				case MITTENTE_SCONOSCIUTO:
				case MITTENTE_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString();
					
				case TIPO_MITTENTE_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_MITTENTE_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString();

				case DESTINATARIO_SCONOSCIUTO:
				case DESTINATARIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE.toString();
					
				case TIPO_DESTINATARIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_DESTINATARIO_SCONOSCIUTO_POSIZIONE_IDENTIFICATIVO_PARTE_TIPO.toString();

				case SERVIZIO_SCONOSCIUTO:
				case SERVIZIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE.toString();
					
				case TIPO_SERVIZIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SERVIZIO_SCONOSCIUTO_POSIZIONE_TIPO.toString();

				case AZIONE_NON_VALIDA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_AZIONE_SCONOSCIUTA_POSIZIONE.toString();
					
				case IDENTIFICATIVO_MESSAGGIO_GIA_PROCESSATO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_ID_MESSAGGIO_NON_VALIDO_POSIZIONE.toString();

				case RIFERIMENTO_MESSAGGIO_NON_PRESENTE:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_DEFINITO_POSIZIONE.toString();
				case RIFERIMENTO_MESSAGGIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_RIFERIMENTO_MESSAGGIO_NON_VALIDO_POSIZIONE.toString();

				case MESSAGGIO_SCADUTO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_MESSAGGIO_SCADUTO_POSIZIONE.toString();

				case PROFILO_COLLABORAZIONE_SCONOSCIUTO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString();
				case PROFILO_COLLABORAZIONE_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_COLLABORAZIONE_SCONOSCIUTO_POSIZIONE.toString();

				case COLLABORAZIONE_NON_VALIDA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE.toString();
				case COLLABORAZIONE_SCONOSCIUTA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_COLLABORAZIONE_SCONOSCIUTA_POSIZIONE.toString();

				case PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_PRESENTE:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_PROFILO_TRASMISSIONE_NON_VALIDO_POSIZIONE_CONFERMA_RICEZIONE.toString();

				case CONSEGNA_IN_ORDINE_NON_GESTIBILE:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE.toString();
				case CONSEGNA_IN_ORDINE_FUORI_SEQUENZA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_NUMERO_PROGRESSIVO_BUSTA_CAPOSTIPITE.toString();
				case CONSEGNA_IN_ORDINE_TIPO_MITTENTE_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_TIPO_MITTENTE.toString();
				case CONSEGNA_IN_ORDINE_MITTENTE_NON_VALIDO:		
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_MITTENTE.toString();	
				case CONSEGNA_IN_ORDINE_TIPO_DESTINATARIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_TIPO_DESTINATARIO.toString();
				case CONSEGNA_IN_ORDINE_DESTINATARIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_DESTINATARIO.toString();
				case CONSEGNA_IN_ORDINE_TIPO_SERVIZIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_TIPO_SERVIZIO.toString();
				case CONSEGNA_IN_ORDINE_SERVIZIO_NON_VALIDO:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_SERVIZIO.toString();
				case CONSEGNA_IN_ORDINE_AZIONE_NON_VALIDA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_AZIONE.toString();
				case CONSEGNA_IN_ORDINE_COLLABORAZIONE_IN_BUSTA_NON_CAPOSTIPITE_SCONOSCIUTA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_SEQUENZA_NON_VALIDA_POSIZIONE_COLLABORAZIONE.toString();
				case CONSEGNA_IN_ORDINE_NON_SUPPORTATA:
					return SPCoopCostantiPosizioneEccezione.ECCEZIONE_TRASPARENZA_TEMPORALE_NON_SUPPORTATA_POSIZIONE.toString();

				case SICUREZZA:
				case SICUREZZA_CIFRATURA_ALLEGATO_NON_PRESENTE:
				case SICUREZZA_CIFRATURA_NON_PRESENTE:
				case SICUREZZA_CIFRATURA_ALLEGATO_NON_VALIDA:
				case SICUREZZA_CIFRATURA_NON_VALIDA:
				case SICUREZZA_FIRMA_ALLEGATO_NON_PRESENTE:
				case SICUREZZA_FIRMA_ALLEGATO_NON_VALIDA:
				case SICUREZZA_FIRMA_INTESTAZIONE_NON_PRESENTE:
				case SICUREZZA_FIRMA_INTESTAZIONE_NON_VALIDA:
				case SICUREZZA_FIRMA_NON_PRESENTE:
				case SICUREZZA_FIRMA_NON_VALIDA:
				case SICUREZZA_FIRMA_PKCS7_ALLEGATO_NON_PRESENTE:
				case SICUREZZA_FIRMA_PKCS7_ALLEGATO_NON_VALIDA:
				case SICUREZZA_NON_PRESENTE:
				case SICUREZZA_FALSIFICAZIONE_MITTENTE:
				case SICUREZZA_AUTORIZZAZIONE_FALLITA:
					return msg.getDescrizioneRawValue();

				case ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO:
					return msg.getDescrizioneRawValue();

				case FORMATO_NON_CORRETTO:
					return msg.getDescrizioneRawValue();
					
				default:
					return msg.getDescrizioneRawValue();
				}
			}
			else{
				return  msg.getDescrizioneRawValue();
			}

		}catch(Exception e){
			this.log.error("Errore durante la trasformazione del messaggio di cooperazione: "+e.getMessage(),e);
			return  msg.getDescrizioneRawValue();
		}
	}

	@Override
	public String getDate_protocolFormat() {
		return getDate_protocolFormat(null);
	}

	@Override
	public String getDate_protocolFormat(Date date) {
		return SPCoopUtils.getDate_eGovFormat(date);
	}

	/**
	 * Restituisce il valore dell'identificativo porta di default per il soggetto.
	 * @param soggetto
	 * @return identificativoPortaDefault
	 */
	@Override
	public String getIdentificativoPortaDefault(IDSoggetto soggetto){
		if(SPCoopCostanti.SERVIZIO_SPC.equalsIgnoreCase(soggetto.getTipo())) {
			return soggetto.getNome()+"SPCoopIT";
		}
		else if(SPCoopCostanti.SERVIZIO_AOO.equalsIgnoreCase(soggetto.getTipo())) {
			return "PDD"+soggetto.getNome();
		}
		else {
			return soggetto.getNome()+"PdD"+soggetto.getTipo(); // aggiungo tipo per avere l'univocita'. Tipicamente i tipi diversi da SPC e AOO non esistono. TEST non e' quasi mai stato usato
		}
	}

	@Override
	public String toString(Inoltro inoltro) {
		switch (inoltro) {
		case CON_DUPLICATI: return SPCoopCostanti.PROFILO_TRASMISSIONE_CON_DUPLICATI;
		case SENZA_DUPLICATI: return SPCoopCostanti.PROFILO_TRASMISSIONE_SENZA_DUPLICATI;
		default: return SPCoopCostanti.PROFILO_TRASMISSIONE_SCONOSCIUTO;
		}
	}

	@Override
	public String toString(ProfiloDiCollaborazione profilo) {
		switch (profilo) {
		case ONEWAY: return SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY;
		case SINCRONO: return SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO;
		case ASINCRONO_SIMMETRICO: return SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_SIMMETRICO;
		case ASINCRONO_ASIMMETRICO: return SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_ASIMMETRICO;
		default: return SPCoopCostanti.PROFILO_COLLABORAZIONE_SCONOSCIUTO;
		}
	}

	@Override
	public String toString(TipoOraRegistrazione tipo) {
		switch (tipo) {
		case LOCALE: return SPCoopCostanti.TIPO_TEMPO_LOCALE;
		case SINCRONIZZATO: return SPCoopCostanti.TIPO_TEMPO_SPC;
		default: return SPCoopCostanti.TIPO_TEMPO_SCONOSCIUTO;
		}
	}

	@Override
	public String toString(LivelloRilevanza rilevanza) {
		switch (rilevanza) {
		case DEBUG: return SPCoopCostanti.ECCEZIONE_RILEVANZA_LIEVE;
		case INFO: return SPCoopCostanti.ECCEZIONE_RILEVANZA_INFO;
		case WARN: return SPCoopCostanti.ECCEZIONE_RILEVANZA_LIEVE;
		case ERROR: return SPCoopCostanti.ECCEZIONE_RILEVANZA_GRAVE;
		case FATAL: return SPCoopCostanti.ECCEZIONE_RILEVANZA_GRAVE;
		default: return SPCoopCostanti.ECCEZIONE_RILEVANZA_SCONOSCIUTO;
		}
	}

	@Override
	public LivelloRilevanza toLivelloRilevanza(String livelloRilevanza) {
		if(livelloRilevanza==null) return LivelloRilevanza.UNKNOWN;
		if(livelloRilevanza.equals(SPCoopCostanti.ECCEZIONE_RILEVANZA_LIEVE)) return LivelloRilevanza.DEBUG;
		if(livelloRilevanza.equals(SPCoopCostanti.ECCEZIONE_RILEVANZA_INFO)) return LivelloRilevanza.INFO;
		if(livelloRilevanza.equals(SPCoopCostanti.ECCEZIONE_RILEVANZA_GRAVE)) return LivelloRilevanza.ERROR;
		return LivelloRilevanza.UNKNOWN;
	}

	@Override
	public Inoltro toInoltro(String inoltro) {
		if(inoltro == null) return Inoltro.UNKNOWN;
		if(inoltro.equals(SPCoopCostanti.PROFILO_TRASMISSIONE_SENZA_DUPLICATI)) return Inoltro.SENZA_DUPLICATI;
		if(inoltro.equals(SPCoopCostanti.PROFILO_TRASMISSIONE_CON_DUPLICATI)) return Inoltro.CON_DUPLICATI;
		return Inoltro.UNKNOWN;
	}

	@Override
	public TipoOraRegistrazione toTipoOraRegistrazione(String tipoOraRegistrazione) {
		if(tipoOraRegistrazione == null) return TipoOraRegistrazione.UNKNOWN;
		if(tipoOraRegistrazione.equals(SPCoopCostanti.TIPO_TEMPO_LOCALE)) return TipoOraRegistrazione.LOCALE;
		if(tipoOraRegistrazione.equals(SPCoopCostanti.TIPO_TEMPO_SPC)) return TipoOraRegistrazione.SINCRONIZZATO;
		return TipoOraRegistrazione.UNKNOWN;
	}

	@Override
	public ProfiloDiCollaborazione toProfiloDiCollaborazione(
			String profiloDiCollaborazione) {
		if(profiloDiCollaborazione == null) return ProfiloDiCollaborazione.UNKNOWN;
		if(profiloDiCollaborazione.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ONEWAY)) return ProfiloDiCollaborazione.ONEWAY;
		if(profiloDiCollaborazione.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_SINCRONO)) return ProfiloDiCollaborazione.SINCRONO;
		if(profiloDiCollaborazione.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_SIMMETRICO)) return ProfiloDiCollaborazione.ASINCRONO_SIMMETRICO;
		if(profiloDiCollaborazione.equals(SPCoopCostanti.PROFILO_COLLABORAZIONE_ASINCRONO_ASIMMETRICO)) return ProfiloDiCollaborazione.ASINCRONO_ASIMMETRICO;
		return ProfiloDiCollaborazione.UNKNOWN;
	}

	@Override
	public String toString(ContestoCodificaEccezione contesto) {
		switch (contesto) {
		case INTESTAZIONE:
			return SPCoopCostanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE;
		case PROCESSAMENTO:
			return SPCoopCostanti.CONTESTO_CODIFICA_ECCEZIONE_PROCESSAMENTO;
		default:
			return SPCoopCostanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE;	
		}
	}

	@Override
	public ContestoCodificaEccezione toContestoCodificaEccezione(
			String contestoCodificaEccezione) {
		if(SPCoopCostanti.CONTESTO_CODIFICA_ECCEZIONE_VALIDAZIONE.equals(contestoCodificaEccezione)){
			return ContestoCodificaEccezione.INTESTAZIONE;
		}
		else{
			return ContestoCodificaEccezione.PROCESSAMENTO;
		}
	}

	@Override
	protected String getIdentificativoCodiceIPA_Nome(IDSoggetto idSoggetto){
		String soggetto = null;
		if("spc".equals(idSoggetto.getTipo())){
			// standard, utilizzo solo il nome
			soggetto = idSoggetto.getNome();
		}else{
			// non standard, utilizzo tipo/nome per avere l'univocita'
			soggetto = idSoggetto.toString();
		}
		return soggetto;
	}
}