Eccezione.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.protocol.sdk;

  21. import org.apache.commons.lang.NotImplementedException;
  22. import org.openspcoop2.core.tracciamento.CodiceEccezione;
  23. import org.openspcoop2.core.tracciamento.constants.TipoCodificaEccezione;
  24. import org.openspcoop2.core.tracciamento.constants.TipoRilevanzaEccezione;
  25. import org.openspcoop2.message.soap.SOAPFaultCode;
  26. import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
  27. import org.openspcoop2.protocol.sdk.constants.ContestoCodificaEccezione;
  28. import org.openspcoop2.protocol.sdk.constants.ErroreCooperazione;
  29. import org.openspcoop2.protocol.sdk.constants.LivelloRilevanza;
  30. import org.openspcoop2.protocol.sdk.constants.SubCodiceErrore;




  31. /**
  32.  * Classe utilizzata per rappresentare una Eccezione.
  33.  *
  34.  *
  35.  * @author Poli Andrea (apoli@link.it)
  36.  * @author Nardi Lorenzo
  37.  * @author $Author$
  38.  * @version $Rev$, $Date$
  39.  */

  40. public class Eccezione implements java.io.Serializable{

  41.     /**
  42.      * serialVersionUID
  43.      */
  44.     private static final long serialVersionUID = 1L;

  45.     private org.openspcoop2.core.tracciamento.Eccezione eccezione;
  46.    
  47.     private ErroreCooperazione errore;
  48.    
  49.     private SOAPFaultCode soapFaultCode;
  50.    

  51.    
  52.    
  53.     /* Metodi da utilizzare solo nelle implementazioni dei protocolli */
  54.     public Eccezione() {
  55.         this.eccezione = new org.openspcoop2.core.tracciamento.Eccezione();
  56.     }
  57.    
  58.     public Eccezione(String codiceEcc, String descrizione, boolean isErroreValidazione, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  59.         this(new ErroreCooperazione(descrizione,CodiceErroreCooperazione.UNKNOWN), isErroreValidazione, null, protocolFactory); // codice lo imposto subito dopo
  60.         this.setCodiceEccezioneValue(codiceEcc);
  61.         this.setCodiceEccezione(protocolFactory.createTraduttore().toCodiceErroreCooperazione(codiceEcc));
  62.         this.setDescrizione(descrizione); // in modo che non venga tradotto alla chiamata della get
  63.     }
  64.     public Eccezione(CodiceErroreCooperazione codiceEcc, String descrizione, boolean isErroreValidazione, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  65.         this(new ErroreCooperazione(descrizione,codiceEcc), isErroreValidazione, null, protocolFactory);
  66.         this.setDescrizione(descrizione); // in modo che non venga tradotto alla chiamata della get
  67.     }
  68.    
  69.     /* Metodi da utilizzare per fare attuare la traduzione della descrizione */
  70.     public Eccezione(ErroreCooperazione errore,boolean isErroreValidazione, String modulo,IProtocolFactory<?> protocolFactory) throws ProtocolException{
  71.         if(protocolFactory==null) {
  72.             throw new ProtocolException("ProtocolFactory is null");
  73.         }
  74.         this.eccezione = new org.openspcoop2.core.tracciamento.Eccezione();
  75.         if(isErroreValidazione){
  76.             this.setContestoCodifica(ContestoCodificaEccezione.INTESTAZIONE);
  77.             this.setContestoCodificaValue(protocolFactory.createTraduttore().toString(this.getContestoCodifica()));
  78.         }else{
  79.             this.setContestoCodifica(ContestoCodificaEccezione.PROCESSAMENTO);
  80.             this.setContestoCodificaValue(protocolFactory.createTraduttore().toString(this.getContestoCodifica()));
  81.         }
  82.         this.errore = errore;
  83.         this.setCodiceEccezione(this.errore.getCodiceErrore()); // viene tradotto dopo nel metodo get
  84.         //this.setDescrizione(this.errore.getDescrizioneRawValue()); // viene tradotto dopo nel metodo get
  85.         this.setRilevanza(LivelloRilevanza.ERROR);
  86.     }
  87.    
  88.     /* Wrapper */
  89.     public Eccezione(org.openspcoop2.core.tracciamento.Eccezione eccezione){
  90.         this.eccezione = eccezione;
  91.         this.errore = new ErroreCooperazione(this.eccezione.getDescrizione(),this.getCodiceEccezione());
  92.     }

  93.     // base
  94.    
  95.     public org.openspcoop2.core.tracciamento.Eccezione getEccezione() {
  96.         return this.eccezione;
  97.     }
  98.     public void setEccezione(org.openspcoop2.core.tracciamento.Eccezione eccezione) {
  99.         this.eccezione = eccezione;
  100.         this.errore = new ErroreCooperazione(this.eccezione.getDescrizione(),this.getCodiceEccezione());
  101.     }
  102.    
  103.    
  104.    
  105.     // id  [Wrapper]
  106.    
  107.     public Long getId() {
  108.         return this.eccezione.getId();
  109.     }
  110.     public void setId(Long id) {
  111.         this.eccezione.setId(id);
  112.     }
  113.    
  114.    
  115.    
  116.     /* Metodi da utilizzare solo nelle implementazioni dei protocolli */
  117.     public static Eccezione newEccezione(){
  118.         Eccezione ecc = new Eccezione();
  119.         return ecc;
  120.     }
  121.     public static Eccezione getEccezioneValidazione(CodiceErroreCooperazione codiceEcc, String descrizione, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  122.         return new Eccezione(codiceEcc,descrizione, true, protocolFactory);
  123.     }
  124.     public static Eccezione getEccezioneProcessamento(CodiceErroreCooperazione codiceEcc, String descrizione, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  125.         return new Eccezione(codiceEcc,descrizione, false, protocolFactory);
  126.     }
  127.    
  128.     /* Metodi da utilizzare per fare attuare la traduzione della descrizione */
  129.     public static Eccezione getEccezioneValidazione(ErroreCooperazione errore, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  130.         return new Eccezione(errore, true, null, protocolFactory);
  131.     }
  132.     public static Eccezione getEccezioneProcessamento(ErroreCooperazione errore, IProtocolFactory<?> protocolFactory) throws ProtocolException{
  133.         return new Eccezione(errore, false, null, protocolFactory);
  134.     }
  135.    
  136.    
  137.    
  138.    
  139.    
  140.     /* --- CODICE ECCEZIONE [Wrapper] --- */
  141.    
  142.     public CodiceErroreCooperazione getCodiceEccezione() {
  143.         if(this.eccezione.getCodice()!=null && this.eccezione.getCodice().getTipo()!=null){
  144.             return CodiceErroreCooperazione.toCodiceErroreCooperazione(this.eccezione.getCodice().getTipo());
  145.         }
  146.         return null;
  147.     }
  148.     public void setCodiceEccezione(CodiceErroreCooperazione value) {
  149.         if(value!=null){
  150.             if(this.eccezione.getCodice()==null){
  151.                 this.eccezione.setCodice(new CodiceEccezione());
  152.             }
  153.             this.eccezione.getCodice().setTipo(value.getCodice());
  154.         }
  155.         else{
  156.             if(this.eccezione.getCodice()!=null){
  157.                 if(this.eccezione.getCodice().getBase()==null && this.eccezione.getCodice().getSottotipo()==null){
  158.                     this.eccezione.setCodice(null);
  159.                 }
  160.                 else{
  161.                     this.eccezione.getCodice().setTipo(null);
  162.                 }
  163.             }
  164.         }
  165.     }
  166.    
  167.     public String getCodiceEccezioneValue(IProtocolFactory<?> protocolFactory) throws ProtocolException {
  168.         String codiceEccezioneValue = null;
  169.         if(this.eccezione.getCodice()!=null){
  170.             codiceEccezioneValue = this.eccezione.getCodice().getBase();
  171.         }
  172.         return codiceEccezioneValue == null ? protocolFactory.createTraduttore().toString(this.getCodiceEccezione(),this.getSubCodiceEccezione()) : codiceEccezioneValue;
  173.     }
  174.     public void setCodiceEccezioneValue(String value) {
  175.         if(value!=null){
  176.             if(this.eccezione.getCodice()==null){
  177.                 this.eccezione.setCodice(new CodiceEccezione());
  178.             }
  179.             this.eccezione.getCodice().setBase(value);
  180.         }
  181.         else{
  182.             if(this.eccezione.getCodice()!=null){
  183.                 if(this.eccezione.getCodice().getTipo()==null && this.eccezione.getCodice().getSottotipo()==null){
  184.                     this.eccezione.setCodice(null);
  185.                 }
  186.                 else{
  187.                     this.eccezione.getCodice().setBase(null);
  188.                 }
  189.             }
  190.         }
  191.     }
  192.    
  193.     public SubCodiceErrore getSubCodiceEccezione() {
  194.         if(this.eccezione.getCodice()!=null && this.eccezione.getCodice().getSottotipo()!=null){
  195.             SubCodiceErrore sub = new SubCodiceErrore();
  196.             sub.setSubCodice(this.eccezione.getCodice().getSottotipo());
  197.             return sub;
  198.         }
  199.         return null;
  200.     }
  201.     public void setSubCodiceEccezione(SubCodiceErrore subCodiceEccezione) {
  202.         if(subCodiceEccezione!=null){
  203.             if(this.eccezione.getCodice()==null){
  204.                 this.eccezione.setCodice(new CodiceEccezione());
  205.             }
  206.             this.eccezione.getCodice().setSottotipo(subCodiceEccezione.getSubCodice());
  207.         }
  208.         else{
  209.             if(this.eccezione.getCodice()!=null){
  210.                 if(this.eccezione.getCodice().getTipo()==null && this.eccezione.getCodice().getBase()==null){
  211.                     this.eccezione.setCodice(null);
  212.                 }
  213.                 else{
  214.                     this.eccezione.getCodice().setSottotipo(null);
  215.                 }
  216.             }
  217.         }
  218.     }
  219.    
  220.    
  221.    
  222.    
  223.     /* --- DESCRIZIONE ECCEZIONE [Wrapper] --- */
  224.    
  225.     public String getDescrizione(IProtocolFactory<?> protocolFactory) throws ProtocolException {
  226.         String descrizione = this.eccezione.getDescrizione();
  227.         return descrizione == null ? protocolFactory.createTraduttore().toString(this.getErrore()) : descrizione;
  228.     }
  229.     public void setDescrizione(String value) {
  230.        this.eccezione.setDescrizione(value);
  231.     }

  232.    
  233.    
  234.    
  235.     /* --- ERRORE COOPERAZIONE --- */
  236.    
  237.     public ErroreCooperazione getErrore() {
  238.         return this.errore;
  239.     }
  240.    
  241.    
  242.    
  243.    
  244.     /* --- CONTESTO CODIFICA ECCEZIONE --- */

  245.     public ContestoCodificaEccezione getContestoCodifica() {
  246.         if(this.eccezione.getContestoCodifica()!=null && this.eccezione.getContestoCodifica().getTipo()!=null){
  247.             switch (this.eccezione.getContestoCodifica().getTipo()) {
  248.             case ECCEZIONE_PROCESSAMENTO:
  249.                 return ContestoCodificaEccezione.PROCESSAMENTO;
  250.             case ECCEZIONE_VALIDAZIONE_PROTOCOLLO:
  251.                 return ContestoCodificaEccezione.INTESTAZIONE;
  252.             case SCONOSCIUTO:
  253.                 return null;
  254.             }
  255.         }
  256.         return null;
  257.     }
  258.     public void setContestoCodifica(ContestoCodificaEccezione value) {
  259.         if(value!=null){
  260.             if(this.eccezione.getContestoCodifica()==null){
  261.                 this.eccezione.setContestoCodifica(new org.openspcoop2.core.tracciamento.ContestoCodificaEccezione());
  262.             }
  263.             switch (value) {
  264.             case INTESTAZIONE:
  265.                 this.eccezione.getContestoCodifica().setTipo(TipoCodificaEccezione.ECCEZIONE_VALIDAZIONE_PROTOCOLLO);
  266.                 break;
  267.             case PROCESSAMENTO:
  268.                 this.eccezione.getContestoCodifica().setTipo(TipoCodificaEccezione.ECCEZIONE_PROCESSAMENTO);
  269.                 break;
  270.             default:
  271.                 this.eccezione.getContestoCodifica().setTipo(TipoCodificaEccezione.SCONOSCIUTO);
  272.                 break;
  273.             }
  274.         }
  275.         else{
  276.             if(this.eccezione.getContestoCodifica()!=null){
  277.                 if(this.eccezione.getContestoCodifica().getBase()==null){
  278.                     this.eccezione.setContestoCodifica(null);
  279.                 }
  280.                 else{
  281.                     this.eccezione.getContestoCodifica().setTipo(null);
  282.                 }
  283.             }
  284.         }
  285.     }
  286.    
  287.     public String getContestoCodificaValue(IProtocolFactory<?> protocolFactory) throws ProtocolException {
  288.         String contestoCodificaValue = null;
  289.         if(this.eccezione.getContestoCodifica()!=null){
  290.             contestoCodificaValue = this.eccezione.getContestoCodifica().getBase();
  291.         }
  292.         return contestoCodificaValue == null ? protocolFactory.createTraduttore().toString(this.getContestoCodifica()) : contestoCodificaValue;
  293.     }
  294.     public void setContestoCodificaValue(String value) {
  295.         if(value!=null){
  296.             if(this.eccezione.getContestoCodifica()==null){
  297.                 this.eccezione.setContestoCodifica(new org.openspcoop2.core.tracciamento.ContestoCodificaEccezione());
  298.             }
  299.             this.eccezione.getContestoCodifica().setBase(value);
  300.         }
  301.         else{
  302.             if(this.eccezione.getContestoCodifica()!=null){
  303.                 if(this.eccezione.getContestoCodifica().getTipo()==null){
  304.                     this.eccezione.setContestoCodifica(null);
  305.                 }
  306.                 else{
  307.                     this.eccezione.getContestoCodifica().setBase(null);
  308.                 }
  309.             }
  310.         }
  311.     }
  312.  
  313.    
  314.    
  315.    
  316.    
  317.     /* --- LIVELLO RILEVANZA ECCEZIONE --- */
  318.    
  319.     public LivelloRilevanza getRilevanza() {
  320.         if(this.eccezione.getRilevanza()!=null && this.eccezione.getRilevanza().getTipo()!=null){
  321.             switch (this.eccezione.getRilevanza().getTipo()) {
  322.             case DEBUG:
  323.                 return LivelloRilevanza.DEBUG;
  324.             case INFO:
  325.                 return LivelloRilevanza.INFO;
  326.             case WARN:
  327.                 return LivelloRilevanza.WARN;
  328.             case ERROR:
  329.                 return LivelloRilevanza.ERROR;
  330.             case FATAL:
  331.                 return LivelloRilevanza.FATAL;
  332.             case SCONOSCIUTO:
  333.                 return LivelloRilevanza.UNKNOWN;
  334.             }
  335.         }
  336.         return null;
  337.     }
  338.     public void setRilevanza(LivelloRilevanza value) {
  339.         if(value!=null){
  340.             if(this.eccezione.getRilevanza()==null){
  341.                 this.eccezione.setRilevanza(new org.openspcoop2.core.tracciamento.RilevanzaEccezione());
  342.             }
  343.             switch (value) {
  344.             case DEBUG:
  345.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.DEBUG);
  346.                 break;
  347.             case INFO:
  348.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.INFO);
  349.                 break;
  350.             case ERROR:
  351.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.ERROR);
  352.                 break;
  353.             case FATAL:
  354.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.FATAL);
  355.                 break;
  356.             case WARN:
  357.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.WARN);
  358.                 break;
  359.             case UNKNOWN:
  360.                 this.eccezione.getRilevanza().setTipo(TipoRilevanzaEccezione.SCONOSCIUTO);
  361.                 break;
  362.             }
  363.         }
  364.         else{
  365.             if(this.eccezione.getRilevanza()!=null){
  366.                 if(this.eccezione.getRilevanza().getBase()==null){
  367.                     this.eccezione.setRilevanza(null);
  368.                 }
  369.                 else{
  370.                     this.eccezione.getRilevanza().setTipo(null);
  371.                 }
  372.             }
  373.         }
  374.     }
  375.    
  376.     public String getRilevanzaValue(IProtocolFactory<?> protocolFactory) throws ProtocolException {
  377.         String rilevanzaValue = null;
  378.         if(this.eccezione.getRilevanza()!=null){
  379.             rilevanzaValue = this.eccezione.getRilevanza().getBase();
  380.         }
  381.         return rilevanzaValue == null ? protocolFactory.createTraduttore().toString(this.getRilevanza()) : rilevanzaValue;
  382.     }
  383.     public void setRilevanzaValue(String value) {
  384.         if(value!=null){
  385.             if(this.eccezione.getRilevanza()==null){
  386.                 this.eccezione.setRilevanza(new org.openspcoop2.core.tracciamento.RilevanzaEccezione());
  387.             }
  388.             this.eccezione.getRilevanza().setBase(value);
  389.         }
  390.         else{
  391.             if(this.eccezione.getRilevanza()!=null){
  392.                 if(this.eccezione.getRilevanza().getTipo()==null){
  393.                     this.eccezione.setRilevanza(null);
  394.                 }
  395.                 else{
  396.                     this.eccezione.getRilevanza().setBase(null);
  397.                 }
  398.             }
  399.         }
  400.     }



  401.    
  402.    
  403.     /* --- MODULO FUNZIONALE --- */
  404.    
  405.     public String getModulo() {
  406.         return this.eccezione.getModulo();
  407.     }
  408.     public void setModulo(String modulo) {
  409.         this.eccezione.setModulo(modulo);
  410.     }
  411.    
  412.    
  413.     public SOAPFaultCode getSoapFaultCode() {
  414.         return this.soapFaultCode;
  415.     }
  416.    
  417.     public void setSoapFaultCode(SOAPFaultCode soapFaultCode) {
  418.         this.soapFaultCode = soapFaultCode;
  419.     }
  420.    
  421.    
  422.    
  423.    
  424.    
  425.     /* --- TO STRING --- */
  426.     @Override
  427.     public String toString(){
  428.         throw new NotImplementedException("Use with protocolFactory");
  429.     }
  430.    
  431.     public String toString(IProtocolFactory<?> protocolFactory) throws ProtocolException{
  432.         StringBuilder bf = new StringBuilder();
  433.         bf.append("Eccezione");
  434.        
  435.         if(this.getRilevanza()!=null){
  436.             bf.append(" ");
  437.             bf.append(this.getRilevanzaValue(protocolFactory));
  438.         }
  439.        
  440.         if(this.getCodiceEccezione()!=null){
  441.             bf.append(" con codice [");
  442.             bf.append(this.getCodiceEccezioneValue(protocolFactory));
  443.             bf.append("]");
  444.         }
  445.        
  446.         if(this.getCodiceEccezione()!=null && this.getContestoCodifica()!=null){
  447.             bf.append(" -");
  448.         }
  449.        
  450.         if(this.getContestoCodifica()!=null){
  451.             bf.append(" ");
  452.             bf.append(this.getContestoCodificaValue(protocolFactory));
  453.         }
  454.        
  455.         //if(this.descrizione!=null){
  456.         String descrizioneErrore = this.getDescrizione(protocolFactory);
  457.         if(descrizioneErrore!=null && !"".equals(descrizioneErrore)){
  458.             //bf.append(" , descrizione errore: ");
  459.             bf.append(": ");
  460.             bf.append(descrizioneErrore);
  461.         }
  462.         //}
  463.        
  464.         return bf.toString();
  465.     }

  466.     public Eccezione newInstance(){
  467.         Eccezione clone = new Eccezione();
  468.        
  469.         // id
  470.         clone.setId(this.getId()!=null ? Long.valueOf(this.getId()+"") : null);
  471.        
  472.         clone.setCodiceEccezione(this.getCodiceEccezione());
  473.         clone.setCodiceEccezioneValue(this.eccezione.getCodice()!=null && this.eccezione.getCodice().getBase()!=null ?
  474.                 new String(this.eccezione.getCodice().getBase()) : null );
  475.         clone.setSubCodiceEccezione(this.getSubCodiceEccezione()!=null ? this.getSubCodiceEccezione().newInstance() : null);
  476.        
  477.         clone.setDescrizione(this.eccezione.getDescrizione()!=null ? new String(this.eccezione.getDescrizione()) : null);
  478.        
  479.         clone.errore = (this.errore!=null ? this.errore.clone() : null);
  480.        
  481.         clone.setContestoCodifica(this.getContestoCodifica());
  482.         clone.setContestoCodificaValue(this.eccezione.getContestoCodifica()!=null && this.eccezione.getContestoCodifica().getBase()!=null ?
  483.                 new String(this.eccezione.getContestoCodifica().getBase()) : null);
  484.        
  485.         clone.setRilevanza(this.getRilevanza());
  486.         clone.setRilevanzaValue(this.eccezione.getRilevanza()!=null && this.eccezione.getRilevanza().getBase()!=null ?
  487.                 new String(this.eccezione.getRilevanza().getBase()) : null);
  488.        
  489.         clone.setModulo(this.getModulo()!=null ? new String(this.getModulo()) : null);
  490.        
  491.         clone.setSoapFaultCode(this.soapFaultCode);
  492.        
  493.         return clone;
  494.     }

  495. }