GestioneConsegnaNotificheUtils.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.pdd.core.behaviour.built_in.multi_deliver;

import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.config.GestioneErrore;
import org.openspcoop2.core.config.GestioneErroreCodiceTrasporto;
import org.openspcoop2.core.config.GestioneErroreSoapFault;
import org.openspcoop2.core.config.constants.GestioneErroreComportamento;
import org.openspcoop2.pdd.core.behaviour.BehaviourException;

/**
 * ConfigurazioneGestoneErrori
 *
 * @author Andrea Poli (apoli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class GestioneConsegnaNotificheUtils  {
	
	public static final String LABEL_CODE = "Code";
	public static final String LABEL_ACTOR = "Actor";
	public static final String LABEL_MESSAGE = "Message";
	public static final String LABEL_TYPE = "Type";
	public static final String LABEL_STATUS = "Status";
	public static final String LABEL_CLAIMS = "Claims";
	
	public static ConfigurazioneGestioneConsegnaNotifiche getGestioneDefault() throws BehaviourException {
		
		ConfigurazioneGestioneConsegnaNotifiche config = new ConfigurazioneGestioneConsegnaNotifiche();
		
		config.setGestioneTrasporto2xx(TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA);
		config.setGestioneTrasporto3xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
		config.setGestioneTrasporto4xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
		config.setGestioneTrasporto5xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
		config.setFault(TipoGestioneNotificaFault.CONSEGNA_COMPLETATA);
		
		return config;
		
	}
	
	public static GestioneErrore toGestioneErrore(ConfigurazioneGestioneConsegnaNotifiche config) throws BehaviourException {
		
		GestioneErrore gestioneErrore = new GestioneErrore();
		gestioneErrore.setComportamento(GestioneErroreComportamento.RISPEDISCI);
		
		if(config.getCadenzaRispedizione()!=null) {
			gestioneErrore.setCadenzaRispedizione(config.getCadenzaRispedizione()+"");
		}
		
		if(config.getGestioneTrasporto2xx()!=null) {
			switch (config.getGestioneTrasporto2xx()) {
			case CONSEGNA_COMPLETATA:
				GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
				codiceTrasportoCompletata.setValoreMinimo(200);
				codiceTrasportoCompletata.setValoreMassimo(299);
				codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
				break;
			case CONSEGNA_FALLITA:
				GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
				codiceTrasportoFallita.setValoreMinimo(200);
				codiceTrasportoFallita.setValoreMassimo(299);
				codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto2xx_codes()==null || config.getGestioneTrasporto2xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 2xx) non fornita");
				}
				for (Integer code : config.getGestioneTrasporto2xx_codes()) {
					GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
					codiceTrasporto.setValoreMinimo(code);
					codiceTrasporto.setValoreMassimo(code);
					codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
					gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				}
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto2xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 2xx) non definito");
				}
				if(config.getGestioneTrasporto2xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 2xx) non definito");
				}
				GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
				codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto2xx_leftInterval());
				codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto2xx_rightInterval());
				codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
				gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				break;
			}
		}
		
		if(config.getGestioneTrasporto3xx()!=null) {
			switch (config.getGestioneTrasporto3xx()) {
			case CONSEGNA_COMPLETATA:
				GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
				codiceTrasportoCompletata.setValoreMinimo(300);
				codiceTrasportoCompletata.setValoreMassimo(399);
				codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
				break;
			case CONSEGNA_FALLITA:
				GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
				codiceTrasportoFallita.setValoreMinimo(300);
				codiceTrasportoFallita.setValoreMassimo(399);
				codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto3xx_codes()==null || config.getGestioneTrasporto3xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 3xx) non fornita");
				}
				for (Integer code : config.getGestioneTrasporto3xx_codes()) {
					GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
					codiceTrasporto.setValoreMinimo(code);
					codiceTrasporto.setValoreMassimo(code);
					codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
					gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				}
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto3xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 3xx) non definito");
				}
				if(config.getGestioneTrasporto3xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 3xx) non definito");
				}
				GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
				codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto3xx_leftInterval());
				codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto3xx_rightInterval());
				codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
				gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				break;
			}		
		}
		
		if(config.getGestioneTrasporto4xx()!=null) {
			switch (config.getGestioneTrasporto4xx()) {
			case CONSEGNA_COMPLETATA:
				GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
				codiceTrasportoCompletata.setValoreMinimo(400);
				codiceTrasportoCompletata.setValoreMassimo(499);
				codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
				break;
			case CONSEGNA_FALLITA:
				GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
				codiceTrasportoFallita.setValoreMinimo(400);
				codiceTrasportoFallita.setValoreMassimo(499);
				codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto4xx_codes()==null || config.getGestioneTrasporto4xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 4xx) non fornita");
				}
				for (Integer code : config.getGestioneTrasporto4xx_codes()) {
					GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
					codiceTrasporto.setValoreMinimo(code);
					codiceTrasporto.setValoreMassimo(code);
					codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
					gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				}
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto4xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 4xx) non definito");
				}
				if(config.getGestioneTrasporto4xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 4xx) non definito");
				}
				GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
				codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto4xx_leftInterval());
				codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto4xx_rightInterval());
				codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
				gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				break;
			}
		}
		
		if(config.getGestioneTrasporto5xx()!=null) {
			switch (config.getGestioneTrasporto5xx()) {
			case CONSEGNA_COMPLETATA:
				GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
				codiceTrasportoCompletata.setValoreMinimo(500);
				codiceTrasportoCompletata.setValoreMassimo(599);
				codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
				break;
			case CONSEGNA_FALLITA:
				GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
				codiceTrasportoFallita.setValoreMinimo(500);
				codiceTrasportoFallita.setValoreMassimo(599);
				codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto5xx_codes()==null || config.getGestioneTrasporto5xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 5xx) non fornita");
				}
				for (Integer code : config.getGestioneTrasporto5xx_codes()) {
					GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
					codiceTrasporto.setValoreMinimo(code);
					codiceTrasporto.setValoreMassimo(code);
					codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
					gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				}
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto5xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 5xx) non definito");
				}
				if(config.getGestioneTrasporto5xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 5xx) non definito");
				}
				GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
				codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto5xx_leftInterval());
				codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto5xx_rightInterval());
				codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);	
				gestioneErrore.addCodiceTrasporto(codiceTrasporto);
				break;
			}
		}
		
		if(config.getFault()!=null) {
			switch (config.getFault()) {
			case CONSEGNA_COMPLETATA:
				GestioneErroreSoapFault faultCompletata = new GestioneErroreSoapFault();
				faultCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
				gestioneErrore.addSoapFault(faultCompletata);
				break;
			case CONSEGNA_FALLITA:
				GestioneErroreSoapFault faultFallita = new GestioneErroreSoapFault();
				faultFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				gestioneErrore.addSoapFault(faultFallita);
				break;
			case CONSEGNA_COMPLETATA_PERSONALIZZATA:
			case CONSEGNA_FALLITA_PERSONALIZZATA:
				GestioneErroreSoapFault faultCustom = new GestioneErroreSoapFault();
				if(TipoGestioneNotificaFault.CONSEGNA_FALLITA_PERSONALIZZATA.equals(config.getFault())) {
					faultCustom.setComportamento(GestioneErroreComportamento.RISPEDISCI);
				}
				else {
					faultCustom.setComportamento(GestioneErroreComportamento.ACCETTA);
				}
				if(config.getFaultCode()!=null && !"".equals(config.getFaultCode())) {
					faultCustom.setFaultCode(config.getFaultCode());
				}
				if(config.getFaultActor()!=null && !"".equals(config.getFaultActor())) {
					faultCustom.setFaultActor(config.getFaultActor());
				}
				if(config.getFaultMessage()!=null && !"".equals(config.getFaultMessage())) {
					faultCustom.setFaultString(config.getFaultMessage());
				}
				gestioneErrore.addSoapFault(faultCustom);
				break;
			}
		}
		
		return gestioneErrore;
	}
	
	
	public static String toString(ConfigurazioneGestioneConsegnaNotifiche config, boolean soap) throws BehaviourException {
		
		StringBuilder bf = new StringBuilder("Consegna ");
		if(config.getMessaggioDaNotificare()!=null) {
			switch (config.getMessaggioDaNotificare()) {
			case RICHIESTA:
				bf.append("della richiesta ");
				break;
			case RISPOSTA:
				bf.append("della risposta ");
				break;
			case ENTRAMBI:
				//bf.append("");
				break;
			}
		}
		else {
			bf.append("della richiesta ");
		}
		bf.append("completata con codice");
		
		boolean first = true;
		
		if(config.getGestioneTrasporto2xx()!=null) {
			switch (config.getGestioneTrasporto2xx()) {
			case CONSEGNA_COMPLETATA:
				bf.append(" 200-299");
				first = false;
				break;
			case CONSEGNA_FALLITA:
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto2xx_codes()==null || config.getGestioneTrasporto2xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 2xx) non fornita");
				}
				bf.append(" ");
				int index = 0;
				for (Integer code : config.getGestioneTrasporto2xx_codes()) {
					if(index>0) {
						bf.append(",");
					}
					bf.append(code);
					index++;
				}
				first = false;
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto2xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 2xx) non definito");
				}
				if(config.getGestioneTrasporto2xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 2xx) non definito");
				}
				bf.append(" ").append(config.getGestioneTrasporto2xx_leftInterval()).append("-").append(config.getGestioneTrasporto2xx_rightInterval());
				first = false;
				break;
			}
		}
		
		if(config.getGestioneTrasporto3xx()!=null) {
			switch (config.getGestioneTrasporto3xx()) {
			case CONSEGNA_COMPLETATA:
				if(!first) {
					bf.append(" o");
				}
				bf.append(" 300-399");
				first = false;
				break;
			case CONSEGNA_FALLITA:
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto3xx_codes()==null || config.getGestioneTrasporto3xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 3xx) non fornita");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ");
				int index = 0;
				for (Integer code : config.getGestioneTrasporto3xx_codes()) {
					if(index>0) {
						bf.append(",");
					}
					bf.append(code);
					index++;
				}
				first = false;
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto3xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 3xx) non definito");
				}
				if(config.getGestioneTrasporto3xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 3xx) non definito");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ").append(config.getGestioneTrasporto3xx_leftInterval()).append("-").append(config.getGestioneTrasporto3xx_rightInterval());
				first = false;
				break;
			}
		}
		
		if(config.getGestioneTrasporto4xx()!=null) {
			switch (config.getGestioneTrasporto4xx()) {
			case CONSEGNA_COMPLETATA:
				if(!first) {
					bf.append(" o");
				}
				bf.append(" 400-499");
				first = false;
				break;
			case CONSEGNA_FALLITA:
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto4xx_codes()==null || config.getGestioneTrasporto4xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 4xx) non fornita");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ");
				int index = 0;
				for (Integer code : config.getGestioneTrasporto4xx_codes()) {
					if(index>0) {
						bf.append(",");
					}
					bf.append(code);
					index++;
				}
				first = false;
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto4xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 4xx) non definito");
				}
				if(config.getGestioneTrasporto4xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 4xx) non definito");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ").append(config.getGestioneTrasporto4xx_leftInterval()).append("-").append(config.getGestioneTrasporto4xx_rightInterval());
				first = false;
				break;
			}
		}
		
		if(config.getGestioneTrasporto5xx()!=null) {
			switch (config.getGestioneTrasporto5xx()) {
			case CONSEGNA_COMPLETATA:
				if(!first) {
					bf.append(" o");
				}
				bf.append(" 500-599");
				first = false;
				break;
			case CONSEGNA_FALLITA:
				break;
			case CODICI_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto5xx_codes()==null || config.getGestioneTrasporto5xx_codes().isEmpty()) {
					throw new BehaviourException("Lista dei codici accettati (classe 5xx) non fornita");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ");
				int index = 0;
				for (Integer code : config.getGestioneTrasporto5xx_codes()) {
					if(index>0) {
						bf.append(",");
					}
					bf.append(code);
					index++;
				}
				first = false;
				break;
			case INTERVALLO_CONSEGNA_COMPLETATA:
				if(config.getGestioneTrasporto5xx_leftInterval()==null) {
					throw new BehaviourException("Intervallo sinistro (classe 5xx) non definito");
				}
				if(config.getGestioneTrasporto5xx_rightInterval()==null) {
					throw new BehaviourException("Intervallo destro (classe 5xx) non definito");
				}
				if(!first) {
					bf.append(" o");
				}
				bf.append(" ").append(config.getGestioneTrasporto5xx_leftInterval()).append("-").append(config.getGestioneTrasporto5xx_rightInterval());
				first = false;
				break;
			}
		}
		
		if(config.getFault()!=null) {
			switch (config.getFault()) {
			case CONSEGNA_COMPLETATA:
				if(!first) {
					bf.append(" o");
				}
				if(soap) {
					bf.append(" SOAP Fault");
				}
				else {
					bf.append(" Problem Detail");
				}
				break;
			case CONSEGNA_FALLITA:
				break;
			case CONSEGNA_FALLITA_PERSONALIZZATA:
				break;
			case CONSEGNA_COMPLETATA_PERSONALIZZATA:
				if(!first) {
					bf.append(" o");
				}
				if(soap) {
					bf.append(" SOAP Fault");
				}
				else {
					bf.append(" Problem Detail");
				}
				
				String tipoFaultCompletato = null;
				if(!StringUtils.isEmpty(config.getFaultCode())) { 
					String label = soap ? LABEL_CODE : LABEL_TYPE;
					tipoFaultCompletato = label;
				}
				if(!StringUtils.isEmpty(config.getFaultActor())) {
					String label = soap ? LABEL_ACTOR : LABEL_STATUS;
					if(tipoFaultCompletato!=null) {
						tipoFaultCompletato = tipoFaultCompletato +", ";
					}
					else {
						tipoFaultCompletato = "";
					}
					tipoFaultCompletato = tipoFaultCompletato + label;
				}
				if(!StringUtils.isEmpty(config.getFaultMessage())) {
					String label = soap ? LABEL_MESSAGE : LABEL_CLAIMS;
					if(tipoFaultCompletato!=null) {
						tipoFaultCompletato = tipoFaultCompletato +", ";
					}
					else {
						tipoFaultCompletato = "";
					}
					tipoFaultCompletato = tipoFaultCompletato + label;
				}
				String prefix = "";
				// Siamo costruendo una stringa che indica quando vi è una consegna completata.
				// Se il fault ha un match ed è configurato per fallire, non vi è chiamarente una consegna completata.
				// Se non si ha un fault con il match si passa ad analizzare il codice di trasporto, quindi non vale dire "non" contenente
//				if(TipoGestioneNotificaFault.CONSEGNA_FALLITA_PERSONALIZZATA.equals(config.getFault())) {
//					prefix = " non";
//				}
				if(tipoFaultCompletato!=null) {
					tipoFaultCompletato = prefix+" contenente le personalizzazioni definite per "+tipoFaultCompletato;
				}
				else {
					tipoFaultCompletato = prefix+" contenente le personalizzazioni indicate"; // configurazione in corso
				}
				bf.append(tipoFaultCompletato);
				
				break;
			}
		}
		
		String s = bf.toString();
		if(s!=null) {
			// check caso limite senza consegne completate in alcun codice http
			String errorMsg = null;
			String replaceMsg = null;
			if(soap) {
				errorMsg = "codice SOAP Fault";
				replaceMsg = "SOAP Fault";
			}
			else {
				errorMsg = "codice Problem Detail";
				replaceMsg = "Problem Detail";
			}
			if(s.contains(errorMsg)) {
				s = s.replace(errorMsg, replaceMsg);
			}
		}
		return s;
	}
}