BasicTraduttore.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.basic.config;

  21. import java.text.SimpleDateFormat;
  22. import java.util.Date;

  23. import org.openspcoop2.core.id.IDSoggetto;
  24. import org.openspcoop2.protocol.basic.BasicComponentFactory;
  25. import org.openspcoop2.protocol.basic.Costanti;
  26. import org.openspcoop2.protocol.manifest.OrganizationType;
  27. import org.openspcoop2.protocol.manifest.ServiceType;
  28. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  29. import org.openspcoop2.protocol.sdk.ProtocolException;
  30. import org.openspcoop2.protocol.sdk.constants.CodiceErroreCooperazione;
  31. import org.openspcoop2.protocol.sdk.constants.CodiceErroreIntegrazione;
  32. import org.openspcoop2.protocol.sdk.constants.ContestoCodificaEccezione;
  33. import org.openspcoop2.protocol.sdk.constants.ErroreCooperazione;
  34. import org.openspcoop2.protocol.sdk.constants.ErroreIntegrazione;
  35. import org.openspcoop2.protocol.sdk.constants.Inoltro;
  36. import org.openspcoop2.protocol.sdk.constants.LivelloRilevanza;
  37. import org.openspcoop2.protocol.sdk.constants.MessaggiFaultErroreCooperazione;
  38. import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;
  39. import org.openspcoop2.protocol.sdk.constants.SubCodiceErrore;
  40. import org.openspcoop2.protocol.sdk.constants.TipoOraRegistrazione;
  41. import org.openspcoop2.utils.date.DateManager;
  42. import org.openspcoop2.utils.date.DateUtils;


  43. /**
  44.  * BasicTraduttore
  45.  *
  46.  * @author Poli Andrea (apoli@link.it)
  47.  * @author $Author$
  48.  * @version $Rev$, $Date$
  49.  */
  50. public class BasicTraduttore extends BasicComponentFactory implements org.openspcoop2.protocol.sdk.config.ITraduttore {


  51.     public BasicTraduttore(IProtocolFactory<?> factory) throws ProtocolException{
  52.         super(factory);
  53.     }

  54.    
  55.    
  56.     public String getPrefissoEccezioni() {
  57.         return org.openspcoop2.protocol.basic.Costanti.ERRORE_PROTOCOLLO_PREFIX_CODE;
  58.     }

  59.     @Override
  60.     public String toString(CodiceErroreCooperazione cod) {
  61.         return toString(cod, null);
  62.     }
  63.    
  64.     @Override
  65.     public String toString(CodiceErroreCooperazione cod,SubCodiceErrore subCode) {
  66.         if(subCode==null || subCode.getSubCodice()==null)
  67.             return getPrefissoEccezioni() + cod.getCodice();
  68.         else
  69.             return getPrefissoEccezioni() + cod.getCodice() + "_" + subCode.getSubCodice();
  70.     }
  71.    
  72.     @Override
  73.     public CodiceErroreCooperazione toCodiceErroreCooperazione(String codiceCooperazione) {
  74.         if(codiceCooperazione == null) return CodiceErroreCooperazione.UNKNOWN;
  75.         // Elimino il prefisso
  76.         String codiceNum = codiceCooperazione.replace(getPrefissoEccezioni(), "");
  77.        
  78.         try{
  79.             if(codiceNum.contains("_")){
  80.                 // e' presente il subCode
  81.                 codiceNum = codiceNum.split("_")[0];
  82.             }
  83.            
  84.             //Provo a convertire i 3 caratteri in un codice intero registrato.
  85.             return CodiceErroreCooperazione.toCodiceErroreCooperazione(Integer.parseInt(codiceNum));
  86.         } catch (Exception e){
  87.             return CodiceErroreCooperazione.UNKNOWN;
  88.         }
  89.     }

  90.     @Override
  91.     public String toString(MessaggiFaultErroreCooperazione msg){
  92.         return msg.toString();
  93.     }
  94.    
  95.     @Override
  96.     public String toString(ErroreCooperazione msg){
  97.         return msg.getDescrizioneRawValue();
  98.     }
  99.    
  100.     @Override
  101.     public String toString(CodiceErroreIntegrazione cod,String prefix, boolean isGenericCodeFor5XX) {
  102.        
  103.         String codiceMappato = cod.getCodice() + "";
  104.        
  105.         if(isGenericCodeFor5XX){
  106.             // devo ritornare un codice generico, elimino ultime due cifre e aggiungo 00
  107.             if(cod.getCodice() >= 500 &&
  108.                     !cod.equals(CodiceErroreIntegrazione.CODICE_516_CONNETTORE_UTILIZZO_CON_ERRORE) &&
  109.                     !cod.equals(CodiceErroreIntegrazione.CODICE_517_RISPOSTA_RICHIESTA_NON_RITORNATA) &&
  110.                     !cod.equals(CodiceErroreIntegrazione.CODICE_518_RISPOSTA_RICHIESTA_RITORNATA_COME_FAULT) &&
  111.                     !cod.equals(CodiceErroreIntegrazione.CODICE_559_RICEVUTA_RISPOSTA_CON_ERRORE_TRASPORTO)  &&
  112.                     !cod.equals(CodiceErroreIntegrazione.CODICE_550_PD_SERVICE_NOT_ACTIVE)  &&
  113.                     !cod.equals(CodiceErroreIntegrazione.CODICE_551_PA_SERVICE_NOT_ACTIVE)  &&
  114.                     !cod.equals(CodiceErroreIntegrazione.CODICE_552_IM_SERVICE_NOT_ACTIVE) ){
  115.                 codiceMappato = "500";
  116.             }
  117.         }
  118.        
  119.         return this._toStringCodiceErroreIntegrazione(codiceMappato, prefix, isGenericCodeFor5XX);
  120.        
  121.     }
  122.    
  123.     @Override
  124.     public String toCodiceErroreIntegrazioneAsString(ErroreIntegrazione errore,String prefix, boolean isGenericCodeFor5XX) {
  125.         if(errore.getCodiceCustom()!=null) {
  126.             return this._toStringCodiceErroreIntegrazione(errore.getCodiceCustom(), prefix, isGenericCodeFor5XX);
  127.         }
  128.         else {
  129.             return this.toString(errore.getCodiceErrore(), prefix, isGenericCodeFor5XX);
  130.         }
  131.     }
  132.    
  133.     private String _toStringCodiceErroreIntegrazione(String codiceMappato,String prefix, boolean isGenericCodeFor5XX) {
  134.        
  135.         codiceMappato = (prefix == null ? Costanti.ERRORE_INTEGRAZIONE_PREFIX_CODE : prefix) + codiceMappato;
  136.        
  137.         return codiceMappato;
  138.        
  139.     }

  140.     @Override
  141.     public CodiceErroreIntegrazione toCodiceErroreIntegrazione(
  142.             String codiceErroreIntegrazione, String prefix) {
  143.        
  144.         try{
  145.             String intValue = codiceErroreIntegrazione.substring(prefix.length());
  146.             return CodiceErroreIntegrazione.toCodiceErroreIntegrazione(Integer.parseInt(intValue));
  147.         }catch(Exception e){
  148.             this.log.error("Conversione in CodiceErroreIntegrazione della stringa["+codiceErroreIntegrazione+"] prefix["+prefix+"] non riuscita: "+e.getMessage(),e);
  149.             return CodiceErroreIntegrazione.UNKNOWN;
  150.         }
  151.        
  152.     }
  153.    
  154.     @Override
  155.     public String toString(ErroreIntegrazione msg) {
  156.         return msg.getDescrizioneRawValue();
  157.     }
  158.    
  159.     @Override
  160.     public String getDate_protocolFormat() {
  161.         return getDate_protocolFormat(null);
  162.     }
  163.    
  164.     @Override
  165.     public String getDate_protocolFormat(Date date) {
  166.         if(date == null)
  167.             date = DateManager.getDate();
  168.         SimpleDateFormat dateformat = DateUtils.getSimpleDateFormatMs();
  169.         return dateformat.format(date).replace('_','T');
  170.     }

  171.     /**
  172.      * Restituisce il valore dell'identificativo porta di default per il soggetto.
  173.      * @param soggetto
  174.      * @return IdentificativoPortaDefault
  175.      */
  176.     @Override
  177.     public String getIdentificativoPortaDefault(IDSoggetto soggetto){
  178.         return "domain/"+getIdentificativoPorta_Nome(soggetto);
  179.     }
  180.     protected String getIdentificativoPorta_Nome(IDSoggetto idSoggetto){
  181.         // non standard, utilizzo tipo/nome per avere l'univocita'
  182.         return idSoggetto.toString();
  183.     }

  184.     /**
  185.      * Restituisce il valore del Codice IPA di Default
  186.      * @param soggetto
  187.      * @return IdentificativoCodiceIPADefault
  188.      * @throws ProtocolException
  189.      */
  190.     @Override
  191.     public String getIdentificativoCodiceIPADefault(IDSoggetto soggetto,boolean createURI) throws ProtocolException{
  192.         if(soggetto==null)
  193.             throw new ProtocolException("Identificativo soggetto non fornito");
  194.         StringBuilder bf = new StringBuilder();
  195.         if(createURI){
  196.             bf.append("uri:dn:");
  197.         }
  198.         bf.append("o=");
  199.         bf.append(getIdentificativoCodiceIPA_Nome(soggetto));
  200.         bf.append(",c=it");
  201.         return bf.toString();
  202.     }
  203.     protected String getIdentificativoCodiceIPA_Nome(IDSoggetto idSoggetto){
  204.         // non standard, utilizzo tipo/nome per avere l'univocita'
  205.         return idSoggetto.toString();
  206.     }
  207.    
  208.     @Override
  209.     public String toString(Inoltro inoltro) {
  210.         return inoltro.getEngineValue();
  211.     }

  212.     @Override
  213.     public String toString(ProfiloDiCollaborazione profilo) {
  214.         return profilo.getEngineValue();
  215.     }

  216.     @Override
  217.     public String toString(TipoOraRegistrazione tipo) {
  218.         return tipo.getEngineValue();
  219.     }

  220.     @Override
  221.     public String toString(LivelloRilevanza rilevanza) {
  222.         return rilevanza.getEngineValue();
  223.     }
  224.    
  225.     @Override
  226.     public LivelloRilevanza toLivelloRilevanza(String livelloRilevanza) {
  227.         return LivelloRilevanza.toLivelloRilevanza(livelloRilevanza);
  228.     }

  229.     @Override
  230.     public Inoltro toInoltro(String inoltro) {
  231.         return Inoltro.toInoltro(inoltro);
  232.     }

  233.     @Override
  234.     public TipoOraRegistrazione toTipoOraRegistrazione(
  235.             String tipoOraRegistrazione) {
  236.         return TipoOraRegistrazione.toTipoOraRegistrazione(tipoOraRegistrazione);
  237.     }

  238.     @Override
  239.     public ProfiloDiCollaborazione toProfiloDiCollaborazione(
  240.             String profiloDiCollaborazione) {
  241.         return ProfiloDiCollaborazione.toProfiloDiCollaborazione(profiloDiCollaborazione);
  242.     }

  243.     @Override
  244.     public String toString(ContestoCodificaEccezione contesto) {
  245.         return contesto.getEngineValue();
  246.     }

  247.     @Override
  248.     public ContestoCodificaEccezione toContestoCodificaEccezione(
  249.             String contestoCodificaEccezione) {
  250.         return ContestoCodificaEccezione.toContestoCodificaEccezione(contestoCodificaEccezione);
  251.     }

  252.    
  253.     @Override
  254.     public String toProtocolOrganizationType(String type) throws ProtocolException{
  255.         for (OrganizationType organization : this.getProtocolFactory().getManifest().getRegistry().getOrganization().getTypes().getTypeList()) {
  256.             if(organization.getName().equals(type)) {
  257.                 return organization.getProtocol()!=null ? organization.getProtocol() : organization.getName();
  258.             }
  259.         }
  260.         throw new ProtocolException("Organization Type '"+type+"' not found");
  261.     }
  262.    
  263.     @Override
  264.     public String toProtocolServiceType(String type) throws ProtocolException{
  265.         for (ServiceType service : this.getProtocolFactory().getManifest().getRegistry().getService().getTypes().getTypeList()) {
  266.             if(service.getName().equals(type)) {
  267.                 return service.getProtocol()!=null ? service.getProtocol() : service.getName();
  268.             }
  269.         }
  270.         throw new ProtocolException("Service Type '"+type+"' not found");
  271.     }
  272.    
  273.     @Override
  274.     public String toRegistryOrganizationType(String type) throws ProtocolException{
  275.         for (OrganizationType organization : this.getProtocolFactory().getManifest().getRegistry().getOrganization().getTypes().getTypeList()) {
  276.             if(organization.getProtocol()==null) {
  277.                 if(organization.getName().equals(type)) {
  278.                     return organization.getName();
  279.                 }
  280.             }
  281.             else {
  282.                 if(organization.getProtocol().equals(type)) {
  283.                     return organization.getName();
  284.                 }
  285.             }
  286.         }
  287.         throw new ProtocolException("Protocol Organization Type '"+type+"' not found");
  288.     }
  289.    
  290.     @Override
  291.     public String toRegistryServiceType(String type) throws ProtocolException{
  292.         for (ServiceType service : this.getProtocolFactory().getManifest().getRegistry().getService().getTypes().getTypeList()) {
  293.             if(service.getProtocol()==null) {
  294.                 if(service.getName().equals(type)) {
  295.                     return service.getName();
  296.                 }
  297.             }
  298.             else {
  299.                 if(service.getProtocol().equals(type)) {
  300.                     return service.getName();
  301.                 }
  302.             }
  303.         }
  304.         throw new ProtocolException("Protocol Service Type '"+type+"' not found");
  305.     }

  306. }