ErroriCooperazione.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.constants;

  21. /**
  22. *
  23. * @author Poli Andrea (apoli@link.it)
  24. * @author $Author$
  25. * @version $Rev$, $Date$
  26. */
  27. public enum ErroriCooperazione {

  28.     MITTENTE_SCONOSCIUTO("Il Mittente non risulta registrato nel Registro dei Servizi",
  29.             CodiceErroreCooperazione.MITTENTE_SCONOSCIUTO),
  30.     MITTENTE_NON_VALIDO("Il Mittente presente nella busta non è valido",
  31.             CodiceErroreCooperazione.MITTENTE_NON_VALIDO),
  32.            
  33.     TIPO_MITTENTE_NON_VALIDO("Il Tipo del mittente presente nella busta non è valido",
  34.             CodiceErroreCooperazione.TIPO_MITTENTE_NON_VALIDO),
  35.    
  36.     DESTINATARIO_SCONOSCIUTO("Il Destinatario non risulta registrato nel Registro dei Servizi",
  37.             CodiceErroreCooperazione.DESTINATARIO_SCONOSCIUTO),
  38.     DESTINATARIO_NON_VALIDO("Il Destinatario presente nella busta non è valido",
  39.             CodiceErroreCooperazione.DESTINATARIO_NON_VALIDO),
  40.            
  41.     TIPO_DESTINATARIO_NON_VALIDO("Il Tipo del destinatario presente nella busta non è valido",
  42.             CodiceErroreCooperazione.TIPO_DESTINATARIO_NON_VALIDO),
  43.                    
  44.     SERVIZIO_SCONOSCIUTO("Il Servizio non risulta registrato nel Registro dei Servizi",
  45.             CodiceErroreCooperazione.SERVIZIO_SCONOSCIUTO),
  46.     SERVIZIO_NON_VALIDO("Il Servizio presente nella busta non è valido",
  47.             CodiceErroreCooperazione.SERVIZIO_NON_VALIDO),
  48.            
  49.     TIPO_SERVIZIO_NON_VALIDO("Il Tipo del servizio presente nella busta non è valido",
  50.             CodiceErroreCooperazione.TIPO_SERVIZIO_NON_VALIDO),
  51.    
  52.     VERSIONE_SERVIZIO_NON_VALIDO("La versione del servizio presente nella busta non è valido",
  53.             CodiceErroreCooperazione.VERSIONE_SERVIZIO_NON_VALIDO),
  54.    
  55.     AZIONE_NON_VALIDA("L'azione presente nella busta non è valida",
  56.             CodiceErroreCooperazione.AZIONE_NON_VALIDA),        
  57.            
  58.     IDENTIFICATIVO_MESSAGGIO_GIA_PROCESSATO("La busta presenta un identificativo già processato in precedenza",
  59.             CodiceErroreCooperazione.IDENTIFICATIVO_MESSAGGIO_GIA_PROCESSATO),
  60.            
  61.     RIFERIMENTO_MESSAGGIO_NON_PRESENTE("La busta non contiene un RiferimentoMessaggio alla precedente busta a cui è correlata logicamente come richiede il profilo",
  62.             CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_PRESENTE),
  63.     RIFERIMENTO_MESSAGGIO_NON_VALIDO("IdentificativoBusta presente nel RiferimentoMessaggio non è valido",
  64.             CodiceErroreCooperazione.RIFERIMENTO_MESSAGGIO_NON_VALIDO),
  65.    
  66.     MESSAGGIO_SCADUTO("Messaggio scaduto",
  67.             CodiceErroreCooperazione.MESSAGGIO_SCADUTO),
  68.    
  69.     PROFILO_COLLABORAZIONE_SCONOSCIUTO("Busta con profilo di collaborazione sconosciuto",
  70.             CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_SCONOSCIUTO),
  71.     PROFILO_COLLABORAZIONE_NON_VALIDO("Busta con profilo di collaborazione non valido rispetto al tipo di cooperazione in corso",
  72.             CodiceErroreCooperazione.PROFILO_COLLABORAZIONE_NON_VALIDO),
  73.            
  74.     COLLABORAZIONE_NON_VALIDA("La collaborazione presente nella busta non è valida",
  75.             CodiceErroreCooperazione.COLLABORAZIONE_NON_VALIDA),
  76.    
  77.     COLLABORAZIONE_SCONOSCIUTA("La collaborazione presente nella busta non appartiene a nessuna sessione valida",
  78.             CodiceErroreCooperazione.COLLABORAZIONE_SCONOSCIUTA),
  79.    
  80.     PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_PRESENTE("La busta non contiene una richiesta di 'conferma ricezione', nonostante il servizio indicato richieda, tramite la definizione dell'accordo nel registro, una consegna affidabile",
  81.             CodiceErroreCooperazione.PROFILO_TRASMISSIONE_CONFERMA_RICEZIONE_NON_PRESENTE),
  82.        
  83.     CONSEGNA_IN_ORDINE_NON_GESTIBILE("La busta non contiene una richiesta di 'consegna in ordine', nonostante il servizio indicato richieda, tramite la definizione dell'accordo nel registro, un ordinamento",
  84.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_GESTIBILE),
  85.    
  86.     CONSEGNA_IN_ORDINE_FUORI_SEQUENZA("Riscontrato numero di sequenza diverso da 1, in una busta capostipite di una sequenza",
  87.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_FUORI_SEQUENZA),
  88.    
  89.     CONSEGNA_IN_ORDINE_TIPO_MITTENTE_NON_VALIDO("Il tipo di mittente non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  90.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_TIPO_MITTENTE_NON_VALIDO),
  91.    
  92.     CONSEGNA_IN_ORDINE_MITTENTE_NON_VALIDO("Il nome del mittente non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  93.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_MITTENTE_NON_VALIDO),
  94.    
  95.     CONSEGNA_IN_ORDINE_TIPO_DESTINATARIO_NON_VALIDO("Il tipo di destinatario non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  96.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_TIPO_DESTINATARIO_NON_VALIDO),
  97.    
  98.     CONSEGNA_IN_ORDINE_DESTINATARIO_NON_VALIDO("Il nome del destinatario non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  99.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_DESTINATARIO_NON_VALIDO),
  100.    
  101.     CONSEGNA_IN_ORDINE_TIPO_SERVIZIO_NON_VALIDO("Il tipo di servizio non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  102.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_TIPO_SERVIZIO_NON_VALIDO),
  103.    
  104.     CONSEGNA_IN_ORDINE_SERVIZIO_NON_VALIDO("Il nome del servizio non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  105.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_SERVIZIO_NON_VALIDO),
  106.    
  107.     CONSEGNA_IN_ORDINE_AZIONE_NON_VALIDA("Il nome dell'azione non rispetta quello atteso nella gestione della collaborazione con consegna in ordine",
  108.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_AZIONE_NON_VALIDA),
  109.    
  110.     CONSEGNA_IN_ORDINE_COLLABORAZIONE_IN_BUSTA_NON_CAPOSTIPITE_SCONOSCIUTA("Busta non capostipite che richiede funzionalità di consegna in ordine presenta una collaborazione non registrata per le funzioni di consegna in ordine",
  111.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_COLLABORAZIONE_IN_BUSTA_NON_CAPOSTIPITE_SCONOSCIUTA),
  112.    
  113.     CONSEGNA_IN_ORDINE_NON_SUPPORTATA("Funzionalità di consegna in ordine non supportata",
  114.             CodiceErroreCooperazione.CONSEGNA_IN_ORDINE_NON_SUPPORTATA),
  115.            
  116.     MESSAGE_SECURITY("E' occorso un errore durante la gestione della Sicurezza sul Messaggio",
  117.             null),
  118.            
  119.     AUTENTICAZIONE_FALLITA_CREDENZIALI_NON_FORNITE(CostantiProtocollo.PREFISSO_AUTENTICAZIONE_FALLITA+CostantiProtocollo.CREDENZIALI_NON_FORNITE,
  120.             CodiceErroreCooperazione.MITTENTE_NON_VALORIZZATO),
  121.    
  122.     AUTENTICAZIONE_FALLITA_CREDENZIALI_FORNITE_NON_CORRETTE(CostantiProtocollo.PREFISSO_AUTENTICAZIONE_FALLITA+CostantiProtocollo.CREDENZIALI_FORNITE_NON_CORRETTE,
  123.             CodiceErroreCooperazione.MITTENTE_SCONOSCIUTO),
  124.    
  125.     AUTORIZZAZIONE_FALLITA("Il Mittente non è autorizzato a fruire del servizio richiesto",
  126.             null),
  127.            
  128.     ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO("E' occorso un errore durante il processamento del messaggio",
  129.             CodiceErroreCooperazione.ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO),
  130.            
  131.     ERRORE_GENERICO_PROTOCOLLO_NON_CORRETTO("E' stato rilevata una violazione per quanto concerne le informazioni richieste del protocollo in gestione",
  132.             CodiceErroreCooperazione.FORMATO_NON_CORRETTO),
  133.    
  134.     TOKEN_NON_PRESENTE("Token non presente",
  135.             CodiceErroreCooperazione.SICUREZZA_TOKEN_NON_PRESENTE),
  136.    
  137.     TOKEN_NON_VALIDO("Token non valido",
  138.             CodiceErroreCooperazione.SICUREZZA_TOKEN_NON_VALIDO),
  139.    
  140.     TOKEN_AUTORIZZAZIONE_FALLITA("La richiesta presenta un token non sufficiente per fruire del servizio richiesto",
  141.             CodiceErroreCooperazione.SICUREZZA_TOKEN_AUTORIZZAZIONE_FALLITA),
  142.    
  143.     TOKEN_PRESENTE_PIU_VOLTE("Token presente più volte",
  144.             CodiceErroreCooperazione.SICUREZZA_TOKEN_PRESENTE_PIU_VOLTE);
  145.    
  146.     private final String descrizione;
  147.     private final CodiceErroreCooperazione codiceErrore;

  148.     ErroriCooperazione(String descrizione,CodiceErroreCooperazione codiceErrore){
  149.         this.descrizione = descrizione;
  150.         this.codiceErrore = codiceErrore;
  151.     }
  152.    
  153.     @Override
  154.     public String toString(){
  155.         return this.newErroreCooperazione().toString();
  156.     }
  157.    
  158.     private ErroreCooperazione newErroreCooperazione(){
  159.         return newErroreCooperazione(this.descrizione, this.codiceErrore);
  160.     }
  161.     private ErroreCooperazione newErroreCooperazione(String descrizioneParam){
  162.         return newErroreCooperazione(descrizioneParam, this.codiceErrore);
  163.     }
  164.     @SuppressWarnings("unused")
  165.     private ErroreCooperazione newErroreCooperazione(CodiceErroreCooperazione codiceParam){
  166.         return newErroreCooperazione(this.descrizione, codiceParam);
  167.     }
  168.     private ErroreCooperazione newErroreCooperazione(String descrizioneParam,CodiceErroreCooperazione codiceParam){
  169.         String newDescrizione = new String(descrizioneParam);
  170.         return new ErroreCooperazione(newDescrizione, codiceParam);
  171.     }
  172.    
  173.     public ErroreCooperazione getErroreCooperazione() {
  174.         return getErroreCooperazione(null);
  175.     }
  176.     public ErroreCooperazione getErroreCooperazione(String descrizione) {
  177.         if(this.equals(MESSAGE_SECURITY) ||
  178.             this.equals(AUTORIZZAZIONE_FALLITA)){
  179.             throw new RuntimeException("Il metodo non può essere utilizzato con il messaggio "+this.name());
  180.         }
  181.         if(descrizione!=null){
  182.             return newErroreCooperazione(descrizione);
  183.         }
  184.         else{
  185.             return newErroreCooperazione();
  186.         }
  187.     }
  188.    
  189.     public ErroreCooperazione getErroreProfiloCollaborazioneSconosciuto(String profiloCollaborazione) {
  190.         if(this.equals(PROFILO_COLLABORAZIONE_SCONOSCIUTO)){
  191.             if(profiloCollaborazione==null){
  192.                 return newErroreCooperazione("Busta senza Profilo di Collaborazione");  
  193.             }else{
  194.                 return newErroreCooperazione("Busta con profilo di collaborazione non gestito ["+profiloCollaborazione+"]");    
  195.             }  
  196.         }else{
  197.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+PROFILO_COLLABORAZIONE_SCONOSCIUTO.name());
  198.         }
  199.     }
  200.    
  201.     public ErroreCooperazione getErroreProfiloCollaborazioneNonValido(String descrizione) {
  202.         if(this.equals(PROFILO_COLLABORAZIONE_NON_VALIDO)){
  203.             return newErroreCooperazione(descrizione);
  204.         }else{
  205.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+PROFILO_COLLABORAZIONE_NON_VALIDO.name());
  206.         }
  207.     }
  208.        
  209.     public ErroreCooperazione getErroreMessageSecurity(String descrizione,CodiceErroreCooperazione codiceErrore) {
  210.         if(this.equals(MESSAGE_SECURITY)){
  211.             if(CodiceErroreCooperazione.isEccezioneMessageSecurity(codiceErrore)==false &&
  212.                     CodiceErroreCooperazione.isEccezioneSicurezzaAutorizzazione(codiceErrore)==false &&
  213.                     CodiceErroreCooperazione.isEccezioneSicurezzaToken(codiceErrore)==false){ //messageSecurity internamente possiede anche un engine di autorizzazione
  214.                 throw new RuntimeException("Il metodo può essere utilizzato solo con codici associati alla sicurezza, relativamente ad errori di messageSecurity, token o erroreAutorizzazione, codice fornito: "+codiceErrore);
  215.             }
  216.             return newErroreCooperazione(descrizione, codiceErrore);    
  217.         }else{
  218.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+MESSAGE_SECURITY.name());
  219.         }
  220.     }
  221.    
  222.     public ErroreCooperazione getErroreAutorizzazione(String descrizione,CodiceErroreCooperazione codiceErrore) {
  223.         if(this.equals(AUTORIZZAZIONE_FALLITA)){
  224.             if(CodiceErroreCooperazione.isEccezioneSicurezzaAutorizzazione(codiceErrore)==false){
  225.                 throw new RuntimeException("Il metodo può essere utilizzato solo con codici associati alla sicurezza, relativamente a fallimenti di autorizzazione, codice fornito: "+codiceErrore);
  226.             }
  227.             return newErroreCooperazione(descrizione, codiceErrore);    
  228.         }else{
  229.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+AUTORIZZAZIONE_FALLITA.name());
  230.         }
  231.     }
  232.        
  233.     public ErroreCooperazione getErroreProcessamento(String descrizione) {
  234.         if(this.equals(ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO)){
  235.             return newErroreCooperazione(descrizione);
  236.         }else{
  237.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+ERRORE_GENERICO_PROCESSAMENTO_MESSAGGIO.name());
  238.         }
  239.     }
  240.    
  241.     public ErroreCooperazione getErroreGestioneProtocollo(String descrizione) {
  242.         if(this.equals(ERRORE_GENERICO_PROTOCOLLO_NON_CORRETTO)){
  243.             return newErroreCooperazione(descrizione);
  244.         }else{
  245.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+ERRORE_GENERICO_PROTOCOLLO_NON_CORRETTO.name());
  246.         }
  247.     }
  248.    
  249.     public ErroreCooperazione getErroreCredenzialiForniteNonCorrette(String errore) {
  250.         if(this.equals(AUTENTICAZIONE_FALLITA_CREDENZIALI_FORNITE_NON_CORRETTE)){
  251.             return newErroreCooperazione(CostantiProtocollo.PREFISSO_AUTENTICAZIONE_FALLITA+CostantiProtocollo.CREDENZIALI_FORNITE_NON_CORRETTE+": "+errore, CodiceErroreCooperazione.MITTENTE_SCONOSCIUTO);
  252.         }else{
  253.             throw new RuntimeException("Il metodo può essere utilizzato solo con il messaggio "+AUTENTICAZIONE_FALLITA_CREDENZIALI_FORNITE_NON_CORRETTE.name());
  254.         }
  255.     }
  256. }