GestioneConsegnaNotificheUtils.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.pdd.core.behaviour.built_in.multi_deliver;

  21. import org.apache.commons.lang.StringUtils;
  22. import org.openspcoop2.core.config.GestioneErrore;
  23. import org.openspcoop2.core.config.GestioneErroreCodiceTrasporto;
  24. import org.openspcoop2.core.config.GestioneErroreSoapFault;
  25. import org.openspcoop2.core.config.constants.GestioneErroreComportamento;
  26. import org.openspcoop2.pdd.core.behaviour.BehaviourException;

  27. /**
  28.  * ConfigurazioneGestoneErrori
  29.  *
  30.  * @author Andrea Poli (apoli@link.it)
  31.  * @author $Author$
  32.  * @version $Rev$, $Date$
  33.  */
  34. public class GestioneConsegnaNotificheUtils  {
  35.    
  36.     public static final String LABEL_CODE = "Code";
  37.     public static final String LABEL_ACTOR = "Actor";
  38.     public static final String LABEL_MESSAGE = "Message";
  39.     public static final String LABEL_TYPE = "Type";
  40.     public static final String LABEL_STATUS = "Status";
  41.     public static final String LABEL_CLAIMS = "Claims";
  42.    
  43.     public static ConfigurazioneGestioneConsegnaNotifiche getGestioneDefault() throws BehaviourException {
  44.        
  45.         ConfigurazioneGestioneConsegnaNotifiche config = new ConfigurazioneGestioneConsegnaNotifiche();
  46.        
  47.         config.setGestioneTrasporto2xx(TipoGestioneNotificaTrasporto.CONSEGNA_COMPLETATA);
  48.         config.setGestioneTrasporto3xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
  49.         config.setGestioneTrasporto4xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
  50.         config.setGestioneTrasporto5xx(TipoGestioneNotificaTrasporto.CONSEGNA_FALLITA);
  51.         config.setFault(TipoGestioneNotificaFault.CONSEGNA_COMPLETATA);
  52.        
  53.         return config;
  54.        
  55.     }
  56.    
  57.     public static GestioneErrore toGestioneErrore(ConfigurazioneGestioneConsegnaNotifiche config) throws BehaviourException {
  58.        
  59.         GestioneErrore gestioneErrore = new GestioneErrore();
  60.         gestioneErrore.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  61.        
  62.         if(config.getCadenzaRispedizione()!=null) {
  63.             gestioneErrore.setCadenzaRispedizione(config.getCadenzaRispedizione()+"");
  64.         }
  65.        
  66.         if(config.getGestioneTrasporto2xx()!=null) {
  67.             switch (config.getGestioneTrasporto2xx()) {
  68.             case CONSEGNA_COMPLETATA:
  69.                 GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
  70.                 codiceTrasportoCompletata.setValoreMinimo(200);
  71.                 codiceTrasportoCompletata.setValoreMassimo(299);
  72.                 codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
  73.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
  74.                 break;
  75.             case CONSEGNA_FALLITA:
  76.                 GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
  77.                 codiceTrasportoFallita.setValoreMinimo(200);
  78.                 codiceTrasportoFallita.setValoreMassimo(299);
  79.                 codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  80.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
  81.                 break;
  82.             case CODICI_CONSEGNA_COMPLETATA:
  83.                 if(config.getGestioneTrasporto2xx_codes()==null || config.getGestioneTrasporto2xx_codes().isEmpty()) {
  84.                     throw new BehaviourException("Lista dei codici accettati (classe 2xx) non fornita");
  85.                 }
  86.                 for (Integer code : config.getGestioneTrasporto2xx_codes()) {
  87.                     GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  88.                     codiceTrasporto.setValoreMinimo(code);
  89.                     codiceTrasporto.setValoreMassimo(code);
  90.                     codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  91.                     gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  92.                 }
  93.                 break;
  94.             case INTERVALLO_CONSEGNA_COMPLETATA:
  95.                 if(config.getGestioneTrasporto2xx_leftInterval()==null) {
  96.                     throw new BehaviourException("Intervallo sinistro (classe 2xx) non definito");
  97.                 }
  98.                 if(config.getGestioneTrasporto2xx_rightInterval()==null) {
  99.                     throw new BehaviourException("Intervallo destro (classe 2xx) non definito");
  100.                 }
  101.                 GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  102.                 codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto2xx_leftInterval());
  103.                 codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto2xx_rightInterval());
  104.                 codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  105.                 gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  106.                 break;
  107.             }
  108.         }
  109.        
  110.         if(config.getGestioneTrasporto3xx()!=null) {
  111.             switch (config.getGestioneTrasporto3xx()) {
  112.             case CONSEGNA_COMPLETATA:
  113.                 GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
  114.                 codiceTrasportoCompletata.setValoreMinimo(300);
  115.                 codiceTrasportoCompletata.setValoreMassimo(399);
  116.                 codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
  117.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
  118.                 break;
  119.             case CONSEGNA_FALLITA:
  120.                 GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
  121.                 codiceTrasportoFallita.setValoreMinimo(300);
  122.                 codiceTrasportoFallita.setValoreMassimo(399);
  123.                 codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  124.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
  125.                 break;
  126.             case CODICI_CONSEGNA_COMPLETATA:
  127.                 if(config.getGestioneTrasporto3xx_codes()==null || config.getGestioneTrasporto3xx_codes().isEmpty()) {
  128.                     throw new BehaviourException("Lista dei codici accettati (classe 3xx) non fornita");
  129.                 }
  130.                 for (Integer code : config.getGestioneTrasporto3xx_codes()) {
  131.                     GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  132.                     codiceTrasporto.setValoreMinimo(code);
  133.                     codiceTrasporto.setValoreMassimo(code);
  134.                     codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  135.                     gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  136.                 }
  137.                 break;
  138.             case INTERVALLO_CONSEGNA_COMPLETATA:
  139.                 if(config.getGestioneTrasporto3xx_leftInterval()==null) {
  140.                     throw new BehaviourException("Intervallo sinistro (classe 3xx) non definito");
  141.                 }
  142.                 if(config.getGestioneTrasporto3xx_rightInterval()==null) {
  143.                     throw new BehaviourException("Intervallo destro (classe 3xx) non definito");
  144.                 }
  145.                 GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  146.                 codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto3xx_leftInterval());
  147.                 codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto3xx_rightInterval());
  148.                 codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  149.                 gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  150.                 break;
  151.             }      
  152.         }
  153.        
  154.         if(config.getGestioneTrasporto4xx()!=null) {
  155.             switch (config.getGestioneTrasporto4xx()) {
  156.             case CONSEGNA_COMPLETATA:
  157.                 GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
  158.                 codiceTrasportoCompletata.setValoreMinimo(400);
  159.                 codiceTrasportoCompletata.setValoreMassimo(499);
  160.                 codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
  161.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
  162.                 break;
  163.             case CONSEGNA_FALLITA:
  164.                 GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
  165.                 codiceTrasportoFallita.setValoreMinimo(400);
  166.                 codiceTrasportoFallita.setValoreMassimo(499);
  167.                 codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  168.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
  169.                 break;
  170.             case CODICI_CONSEGNA_COMPLETATA:
  171.                 if(config.getGestioneTrasporto4xx_codes()==null || config.getGestioneTrasporto4xx_codes().isEmpty()) {
  172.                     throw new BehaviourException("Lista dei codici accettati (classe 4xx) non fornita");
  173.                 }
  174.                 for (Integer code : config.getGestioneTrasporto4xx_codes()) {
  175.                     GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  176.                     codiceTrasporto.setValoreMinimo(code);
  177.                     codiceTrasporto.setValoreMassimo(code);
  178.                     codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  179.                     gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  180.                 }
  181.                 break;
  182.             case INTERVALLO_CONSEGNA_COMPLETATA:
  183.                 if(config.getGestioneTrasporto4xx_leftInterval()==null) {
  184.                     throw new BehaviourException("Intervallo sinistro (classe 4xx) non definito");
  185.                 }
  186.                 if(config.getGestioneTrasporto4xx_rightInterval()==null) {
  187.                     throw new BehaviourException("Intervallo destro (classe 4xx) non definito");
  188.                 }
  189.                 GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  190.                 codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto4xx_leftInterval());
  191.                 codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto4xx_rightInterval());
  192.                 codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  193.                 gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  194.                 break;
  195.             }
  196.         }
  197.        
  198.         if(config.getGestioneTrasporto5xx()!=null) {
  199.             switch (config.getGestioneTrasporto5xx()) {
  200.             case CONSEGNA_COMPLETATA:
  201.                 GestioneErroreCodiceTrasporto codiceTrasportoCompletata = new GestioneErroreCodiceTrasporto();
  202.                 codiceTrasportoCompletata.setValoreMinimo(500);
  203.                 codiceTrasportoCompletata.setValoreMassimo(599);
  204.                 codiceTrasportoCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
  205.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoCompletata);
  206.                 break;
  207.             case CONSEGNA_FALLITA:
  208.                 GestioneErroreCodiceTrasporto codiceTrasportoFallita = new GestioneErroreCodiceTrasporto();
  209.                 codiceTrasportoFallita.setValoreMinimo(500);
  210.                 codiceTrasportoFallita.setValoreMassimo(599);
  211.                 codiceTrasportoFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  212.                 gestioneErrore.addCodiceTrasporto(codiceTrasportoFallita);
  213.                 break;
  214.             case CODICI_CONSEGNA_COMPLETATA:
  215.                 if(config.getGestioneTrasporto5xx_codes()==null || config.getGestioneTrasporto5xx_codes().isEmpty()) {
  216.                     throw new BehaviourException("Lista dei codici accettati (classe 5xx) non fornita");
  217.                 }
  218.                 for (Integer code : config.getGestioneTrasporto5xx_codes()) {
  219.                     GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  220.                     codiceTrasporto.setValoreMinimo(code);
  221.                     codiceTrasporto.setValoreMassimo(code);
  222.                     codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  223.                     gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  224.                 }
  225.                 break;
  226.             case INTERVALLO_CONSEGNA_COMPLETATA:
  227.                 if(config.getGestioneTrasporto5xx_leftInterval()==null) {
  228.                     throw new BehaviourException("Intervallo sinistro (classe 5xx) non definito");
  229.                 }
  230.                 if(config.getGestioneTrasporto5xx_rightInterval()==null) {
  231.                     throw new BehaviourException("Intervallo destro (classe 5xx) non definito");
  232.                 }
  233.                 GestioneErroreCodiceTrasporto codiceTrasporto = new GestioneErroreCodiceTrasporto();
  234.                 codiceTrasporto.setValoreMinimo(config.getGestioneTrasporto5xx_leftInterval());
  235.                 codiceTrasporto.setValoreMassimo(config.getGestioneTrasporto5xx_rightInterval());
  236.                 codiceTrasporto.setComportamento(GestioneErroreComportamento.ACCETTA);  
  237.                 gestioneErrore.addCodiceTrasporto(codiceTrasporto);
  238.                 break;
  239.             }
  240.         }
  241.        
  242.         if(config.getFault()!=null) {
  243.             switch (config.getFault()) {
  244.             case CONSEGNA_COMPLETATA:
  245.                 GestioneErroreSoapFault faultCompletata = new GestioneErroreSoapFault();
  246.                 faultCompletata.setComportamento(GestioneErroreComportamento.ACCETTA);
  247.                 gestioneErrore.addSoapFault(faultCompletata);
  248.                 break;
  249.             case CONSEGNA_FALLITA:
  250.                 GestioneErroreSoapFault faultFallita = new GestioneErroreSoapFault();
  251.                 faultFallita.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  252.                 gestioneErrore.addSoapFault(faultFallita);
  253.                 break;
  254.             case CONSEGNA_COMPLETATA_PERSONALIZZATA:
  255.             case CONSEGNA_FALLITA_PERSONALIZZATA:
  256.                 GestioneErroreSoapFault faultCustom = new GestioneErroreSoapFault();
  257.                 if(TipoGestioneNotificaFault.CONSEGNA_FALLITA_PERSONALIZZATA.equals(config.getFault())) {
  258.                     faultCustom.setComportamento(GestioneErroreComportamento.RISPEDISCI);
  259.                 }
  260.                 else {
  261.                     faultCustom.setComportamento(GestioneErroreComportamento.ACCETTA);
  262.                 }
  263.                 if(config.getFaultCode()!=null && !"".equals(config.getFaultCode())) {
  264.                     faultCustom.setFaultCode(config.getFaultCode());
  265.                 }
  266.                 if(config.getFaultActor()!=null && !"".equals(config.getFaultActor())) {
  267.                     faultCustom.setFaultActor(config.getFaultActor());
  268.                 }
  269.                 if(config.getFaultMessage()!=null && !"".equals(config.getFaultMessage())) {
  270.                     faultCustom.setFaultString(config.getFaultMessage());
  271.                 }
  272.                 gestioneErrore.addSoapFault(faultCustom);
  273.                 break;
  274.             }
  275.         }
  276.        
  277.         return gestioneErrore;
  278.     }
  279.    
  280.    
  281.     public static String toString(ConfigurazioneGestioneConsegnaNotifiche config, boolean soap) throws BehaviourException {
  282.        
  283.         StringBuilder bf = new StringBuilder("Consegna ");
  284.         if(config.getMessaggioDaNotificare()!=null) {
  285.             switch (config.getMessaggioDaNotificare()) {
  286.             case RICHIESTA:
  287.                 bf.append("della richiesta ");
  288.                 break;
  289.             case RISPOSTA:
  290.                 bf.append("della risposta ");
  291.                 break;
  292.             case ENTRAMBI:
  293.                 //bf.append("");
  294.                 break;
  295.             }
  296.         }
  297.         else {
  298.             bf.append("della richiesta ");
  299.         }
  300.         bf.append("completata con codice");
  301.        
  302.         boolean first = true;
  303.        
  304.         if(config.getGestioneTrasporto2xx()!=null) {
  305.             switch (config.getGestioneTrasporto2xx()) {
  306.             case CONSEGNA_COMPLETATA:
  307.                 bf.append(" 200-299");
  308.                 first = false;
  309.                 break;
  310.             case CONSEGNA_FALLITA:
  311.                 break;
  312.             case CODICI_CONSEGNA_COMPLETATA:
  313.                 if(config.getGestioneTrasporto2xx_codes()==null || config.getGestioneTrasporto2xx_codes().isEmpty()) {
  314.                     throw new BehaviourException("Lista dei codici accettati (classe 2xx) non fornita");
  315.                 }
  316.                 bf.append(" ");
  317.                 int index = 0;
  318.                 for (Integer code : config.getGestioneTrasporto2xx_codes()) {
  319.                     if(index>0) {
  320.                         bf.append(",");
  321.                     }
  322.                     bf.append(code);
  323.                     index++;
  324.                 }
  325.                 first = false;
  326.                 break;
  327.             case INTERVALLO_CONSEGNA_COMPLETATA:
  328.                 if(config.getGestioneTrasporto2xx_leftInterval()==null) {
  329.                     throw new BehaviourException("Intervallo sinistro (classe 2xx) non definito");
  330.                 }
  331.                 if(config.getGestioneTrasporto2xx_rightInterval()==null) {
  332.                     throw new BehaviourException("Intervallo destro (classe 2xx) non definito");
  333.                 }
  334.                 bf.append(" ").append(config.getGestioneTrasporto2xx_leftInterval()).append("-").append(config.getGestioneTrasporto2xx_rightInterval());
  335.                 first = false;
  336.                 break;
  337.             }
  338.         }
  339.        
  340.         if(config.getGestioneTrasporto3xx()!=null) {
  341.             switch (config.getGestioneTrasporto3xx()) {
  342.             case CONSEGNA_COMPLETATA:
  343.                 if(!first) {
  344.                     bf.append(" o");
  345.                 }
  346.                 bf.append(" 300-399");
  347.                 first = false;
  348.                 break;
  349.             case CONSEGNA_FALLITA:
  350.                 break;
  351.             case CODICI_CONSEGNA_COMPLETATA:
  352.                 if(config.getGestioneTrasporto3xx_codes()==null || config.getGestioneTrasporto3xx_codes().isEmpty()) {
  353.                     throw new BehaviourException("Lista dei codici accettati (classe 3xx) non fornita");
  354.                 }
  355.                 if(!first) {
  356.                     bf.append(" o");
  357.                 }
  358.                 bf.append(" ");
  359.                 int index = 0;
  360.                 for (Integer code : config.getGestioneTrasporto3xx_codes()) {
  361.                     if(index>0) {
  362.                         bf.append(",");
  363.                     }
  364.                     bf.append(code);
  365.                     index++;
  366.                 }
  367.                 first = false;
  368.                 break;
  369.             case INTERVALLO_CONSEGNA_COMPLETATA:
  370.                 if(config.getGestioneTrasporto3xx_leftInterval()==null) {
  371.                     throw new BehaviourException("Intervallo sinistro (classe 3xx) non definito");
  372.                 }
  373.                 if(config.getGestioneTrasporto3xx_rightInterval()==null) {
  374.                     throw new BehaviourException("Intervallo destro (classe 3xx) non definito");
  375.                 }
  376.                 if(!first) {
  377.                     bf.append(" o");
  378.                 }
  379.                 bf.append(" ").append(config.getGestioneTrasporto3xx_leftInterval()).append("-").append(config.getGestioneTrasporto3xx_rightInterval());
  380.                 first = false;
  381.                 break;
  382.             }
  383.         }
  384.        
  385.         if(config.getGestioneTrasporto4xx()!=null) {
  386.             switch (config.getGestioneTrasporto4xx()) {
  387.             case CONSEGNA_COMPLETATA:
  388.                 if(!first) {
  389.                     bf.append(" o");
  390.                 }
  391.                 bf.append(" 400-499");
  392.                 first = false;
  393.                 break;
  394.             case CONSEGNA_FALLITA:
  395.                 break;
  396.             case CODICI_CONSEGNA_COMPLETATA:
  397.                 if(config.getGestioneTrasporto4xx_codes()==null || config.getGestioneTrasporto4xx_codes().isEmpty()) {
  398.                     throw new BehaviourException("Lista dei codici accettati (classe 4xx) non fornita");
  399.                 }
  400.                 if(!first) {
  401.                     bf.append(" o");
  402.                 }
  403.                 bf.append(" ");
  404.                 int index = 0;
  405.                 for (Integer code : config.getGestioneTrasporto4xx_codes()) {
  406.                     if(index>0) {
  407.                         bf.append(",");
  408.                     }
  409.                     bf.append(code);
  410.                     index++;
  411.                 }
  412.                 first = false;
  413.                 break;
  414.             case INTERVALLO_CONSEGNA_COMPLETATA:
  415.                 if(config.getGestioneTrasporto4xx_leftInterval()==null) {
  416.                     throw new BehaviourException("Intervallo sinistro (classe 4xx) non definito");
  417.                 }
  418.                 if(config.getGestioneTrasporto4xx_rightInterval()==null) {
  419.                     throw new BehaviourException("Intervallo destro (classe 4xx) non definito");
  420.                 }
  421.                 if(!first) {
  422.                     bf.append(" o");
  423.                 }
  424.                 bf.append(" ").append(config.getGestioneTrasporto4xx_leftInterval()).append("-").append(config.getGestioneTrasporto4xx_rightInterval());
  425.                 first = false;
  426.                 break;
  427.             }
  428.         }
  429.        
  430.         if(config.getGestioneTrasporto5xx()!=null) {
  431.             switch (config.getGestioneTrasporto5xx()) {
  432.             case CONSEGNA_COMPLETATA:
  433.                 if(!first) {
  434.                     bf.append(" o");
  435.                 }
  436.                 bf.append(" 500-599");
  437.                 first = false;
  438.                 break;
  439.             case CONSEGNA_FALLITA:
  440.                 break;
  441.             case CODICI_CONSEGNA_COMPLETATA:
  442.                 if(config.getGestioneTrasporto5xx_codes()==null || config.getGestioneTrasporto5xx_codes().isEmpty()) {
  443.                     throw new BehaviourException("Lista dei codici accettati (classe 5xx) non fornita");
  444.                 }
  445.                 if(!first) {
  446.                     bf.append(" o");
  447.                 }
  448.                 bf.append(" ");
  449.                 int index = 0;
  450.                 for (Integer code : config.getGestioneTrasporto5xx_codes()) {
  451.                     if(index>0) {
  452.                         bf.append(",");
  453.                     }
  454.                     bf.append(code);
  455.                     index++;
  456.                 }
  457.                 first = false;
  458.                 break;
  459.             case INTERVALLO_CONSEGNA_COMPLETATA:
  460.                 if(config.getGestioneTrasporto5xx_leftInterval()==null) {
  461.                     throw new BehaviourException("Intervallo sinistro (classe 5xx) non definito");
  462.                 }
  463.                 if(config.getGestioneTrasporto5xx_rightInterval()==null) {
  464.                     throw new BehaviourException("Intervallo destro (classe 5xx) non definito");
  465.                 }
  466.                 if(!first) {
  467.                     bf.append(" o");
  468.                 }
  469.                 bf.append(" ").append(config.getGestioneTrasporto5xx_leftInterval()).append("-").append(config.getGestioneTrasporto5xx_rightInterval());
  470.                 first = false;
  471.                 break;
  472.             }
  473.         }
  474.        
  475.         if(config.getFault()!=null) {
  476.             switch (config.getFault()) {
  477.             case CONSEGNA_COMPLETATA:
  478.                 if(!first) {
  479.                     bf.append(" o");
  480.                 }
  481.                 if(soap) {
  482.                     bf.append(" SOAP Fault");
  483.                 }
  484.                 else {
  485.                     bf.append(" Problem Detail");
  486.                 }
  487.                 break;
  488.             case CONSEGNA_FALLITA:
  489.                 break;
  490.             case CONSEGNA_FALLITA_PERSONALIZZATA:
  491.                 break;
  492.             case CONSEGNA_COMPLETATA_PERSONALIZZATA:
  493.                 if(!first) {
  494.                     bf.append(" o");
  495.                 }
  496.                 if(soap) {
  497.                     bf.append(" SOAP Fault");
  498.                 }
  499.                 else {
  500.                     bf.append(" Problem Detail");
  501.                 }
  502.                
  503.                 String tipoFaultCompletato = null;
  504.                 if(!StringUtils.isEmpty(config.getFaultCode())) {
  505.                     String label = soap ? LABEL_CODE : LABEL_TYPE;
  506.                     tipoFaultCompletato = label;
  507.                 }
  508.                 if(!StringUtils.isEmpty(config.getFaultActor())) {
  509.                     String label = soap ? LABEL_ACTOR : LABEL_STATUS;
  510.                     if(tipoFaultCompletato!=null) {
  511.                         tipoFaultCompletato = tipoFaultCompletato +", ";
  512.                     }
  513.                     else {
  514.                         tipoFaultCompletato = "";
  515.                     }
  516.                     tipoFaultCompletato = tipoFaultCompletato + label;
  517.                 }
  518.                 if(!StringUtils.isEmpty(config.getFaultMessage())) {
  519.                     String label = soap ? LABEL_MESSAGE : LABEL_CLAIMS;
  520.                     if(tipoFaultCompletato!=null) {
  521.                         tipoFaultCompletato = tipoFaultCompletato +", ";
  522.                     }
  523.                     else {
  524.                         tipoFaultCompletato = "";
  525.                     }
  526.                     tipoFaultCompletato = tipoFaultCompletato + label;
  527.                 }
  528.                 String prefix = "";
  529.                 // Siamo costruendo una stringa che indica quando vi è una consegna completata.
  530.                 // Se il fault ha un match ed è configurato per fallire, non vi è chiamarente una consegna completata.
  531.                 // Se non si ha un fault con il match si passa ad analizzare il codice di trasporto, quindi non vale dire "non" contenente
  532. //              if(TipoGestioneNotificaFault.CONSEGNA_FALLITA_PERSONALIZZATA.equals(config.getFault())) {
  533. //                  prefix = " non";
  534. //              }
  535.                 if(tipoFaultCompletato!=null) {
  536.                     tipoFaultCompletato = prefix+" contenente le personalizzazioni definite per "+tipoFaultCompletato;
  537.                 }
  538.                 else {
  539.                     tipoFaultCompletato = prefix+" contenente le personalizzazioni indicate"; // configurazione in corso
  540.                 }
  541.                 bf.append(tipoFaultCompletato);
  542.                
  543.                 break;
  544.             }
  545.         }
  546.        
  547.         String s = bf.toString();
  548.         if(s!=null) {
  549.             // check caso limite senza consegne completate in alcun codice http
  550.             String errorMsg = null;
  551.             String replaceMsg = null;
  552.             if(soap) {
  553.                 errorMsg = "codice SOAP Fault";
  554.                 replaceMsg = "SOAP Fault";
  555.             }
  556.             else {
  557.                 errorMsg = "codice Problem Detail";
  558.                 replaceMsg = "Problem Detail";
  559.             }
  560.             if(s.contains(errorMsg)) {
  561.                 s = s.replace(errorMsg, replaceMsg);
  562.             }
  563.         }
  564.         return s;
  565.     }
  566. }