TipoIntegrazione.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.integrazione;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.openspcoop2.generic_project.exception.NotFoundException;

  24. /**    
  25.  * Enumeration TipoIntegrazione
  26.  *
  27.  * @author Poli Andrea (poli@link.it)
  28.  * @author $Author$
  29.  * @version $Rev$, $Date$
  30.  */
  31. public enum TipoIntegrazione {

  32.     DISABILITATO ("none", "Disabilitato", null),
  33.    
  34.     // NOTA: Usare 'Abilitato' e non  'Genera' perchè si riferisce anche alla lettura dell'header di integrazione in ingresso
  35.    
  36.     TRASPORTO_EXT ("trasportoExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.HTTP),
  37.     TRASPORTO ("trasporto", "Abilitato solo verso dominio interno", GruppoIntegrazione.HTTP),
  38.    
  39.     URL_EXT ("urlBasedExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.URL),
  40.     URL ("urlBased", "Abilitato solo verso dominio interno", GruppoIntegrazione.URL),
  41.     // NON HO CAPITO BENE DOVE SI USA, SEMMAI BASTA REGISTRARLO COME PLUGIN URL_ONLY_READ ("urlBasedOnlyRead", "Abilitato solo per lettura dei metadati forniti dal client", GruppoIntegrazione.URL),
  42.    
  43.     SOAP_EXT ("soapExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.SOAP),
  44.     SOAP ("soap", "Abilitato solo verso dominio interno", GruppoIntegrazione.SOAP),
  45.    
  46.     WSA_EXT ("wsaExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.WSA),
  47.     WSA ("wsa", "Abilitato solo verso dominio interno", GruppoIntegrazione.WSA),
  48.    
  49.     TEMPLATE ("template", "Abilitato su richiesta e risposta", GruppoIntegrazione.TEMPLATE),
  50.     TEMPLATE_REQUEST ("template-request", "Abilitato solo sulla richiesta", GruppoIntegrazione.TEMPLATE),
  51.     TEMPLATE_RESPONSE ("template-response", "Abilitato solo sulla risposta", GruppoIntegrazione.TEMPLATE),
  52.    
  53.     AUTENTICAZIONE ("autenticazione", "Abilitato su richiesta e risposta", GruppoIntegrazione.AUTENTICAZIONE),
  54.    
  55.     OPENSPCOOP2_TRASPORTO_EXT ("openspcoop2-trasportoExt", "Abilitato verso dominio interno e esterno senza prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_HTTP),
  56.     OPENSPCOOP2_TRASPORTO ("openspcoop2-trasporto", "Abilitato solo verso dominio interno senza prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_HTTP),
  57.     OPENSPCOOP2_X_TRASPORTO_EXT ("openspcoop2-x-trasportoExt", "Abilitato verso dominio interno e esterno con prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_HTTP),
  58.     OPENSPCOOP2_X_TRASPORTO ("openspcoop2-x-trasporto", "Abilitato solo verso dominio interno con prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_HTTP),

  59.     OPENSPCOOP1_TRASPORTO_EXT ("openspcoop1-trasportoExt", "Abilitato verso dominio interno e esterno senza prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_HTTP),
  60.     OPENSPCOOP1_TRASPORTO ("openspcoop1-trasporto", "Abilitato solo verso dominio interno senza prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_HTTP),
  61.     OPENSPCOOP1_X_TRASPORTO_EXT ("openspcoop1-x-trasportoExt", "Abilitato verso dominio interno e esterno con prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_HTTP),
  62.     OPENSPCOOP1_X_TRASPORTO ("openspcoop1-x-trasporto", "Abilitato solo verso dominio interno con prefisso 'X-'", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_HTTP),
  63.    
  64.     OPENSPCOOP2_URL_EXT ("openspcoop2-urlBasedExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_URL),
  65.     OPENSPCOOP2_URL ("openspcoop2-urlBased", "Abilitato solo verso dominio interno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_URL),
  66.    
  67.     OPENSPCOOP1_URL_EXT ("openspcoop1-urlBasedExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_URL),
  68.     OPENSPCOOP1_URL ("openspcoop1-urlBased", "Abilitato solo verso dominio interno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_URL),
  69.    
  70.     OPENSPCOOP2_SOAP_EXT ("openspcoop2-soapExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_SOAP),
  71.     OPENSPCOOP2_SOAP ("openspcoop2-soap", "Abilitato solo verso dominio interno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP2_SOAP),
  72.    
  73.     OPENSPCOOP1_SOAP_EXT ("openspcoop1-soapExt", "Abilitato verso dominio interno e esterno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_SOAP),
  74.     OPENSPCOOP1_SOAP ("openspcoop1-soap", "Abilitato solo verso dominio interno", GruppoIntegrazione.BACKWARD_COMPATIBILITY_OPENSPCOOP1_SOAP);
  75.    
  76.    
  77.     /** Value */
  78.     private String value;
  79.     public String getValue()
  80.     {
  81.         return this.value;
  82.     }
  83.    
  84.     /** Label */
  85.     private String label;
  86.     public String getLabel()
  87.     {
  88.         return this.label;
  89.     }
  90.    
  91.     /** Group */
  92.     private GruppoIntegrazione group;
  93.     public GruppoIntegrazione getGroup()
  94.     {
  95.         return this.group;
  96.     }

  97.     /** Official Constructor */
  98.     TipoIntegrazione(String value, String label, GruppoIntegrazione group)
  99.     {
  100.         this.value = value;
  101.         this.label = label;
  102.         this.group = group;
  103.     }
  104.    
  105.     @Override
  106.     public String toString(){
  107.         return this.value;
  108.     }
  109.     public boolean equals(GruppoIntegrazione object){
  110.         if(object==null)
  111.             return false;
  112.         if(object.getValue()==null)
  113.             return false;
  114.         return object.getValue().equals(this.getValue());  
  115.     }
  116.     public boolean equals(String object){
  117.         if(object==null)
  118.             return false;
  119.         return object.equals(this.getValue());  
  120.     }
  121.    
  122.     public static String[] toValues(){
  123.         String[] res = new String[values().length];
  124.         int i=0;
  125.         for (TipoIntegrazione tmp : values()) {
  126.             res[i]=tmp.getValue();
  127.             i++;
  128.         }
  129.         return res;
  130.     }
  131.     public static String[] toLabels(){
  132.         String[] res = new String[values().length];
  133.         int i=0;
  134.         for (TipoIntegrazione tmp : values()) {
  135.             res[i]=tmp.getLabel();
  136.             i++;
  137.         }
  138.         return res;
  139.     }
  140.    
  141.     public static String[] toValues(GruppoIntegrazione gruppo){
  142.         List<String> list = new ArrayList<>();
  143.         for (TipoIntegrazione tmp : values()) {
  144.             if(gruppo==null) {
  145.                 if(tmp.getGroup()!=null) {
  146.                     continue;
  147.                 }
  148.             }
  149.             else {
  150.                 if(!gruppo.equals(tmp.getGroup())) {
  151.                     continue;
  152.                 }
  153.             }
  154.             list.add(tmp.getValue());
  155.         }
  156.         if(list.isEmpty()) {
  157.             return null;
  158.         }
  159.         return list.toArray(new String[list.size()]);
  160.     }
  161.     public static String[] toLabels(GruppoIntegrazione gruppo){
  162.         List<String> list = new ArrayList<>();
  163.         for (TipoIntegrazione tmp : values()) {
  164.             if(gruppo==null) {
  165.                 if(tmp.getGroup()!=null) {
  166.                     continue;
  167.                 }
  168.             }
  169.             else {
  170.                 if(!gruppo.equals(tmp.getGroup())) {
  171.                     continue;
  172.                 }
  173.             }
  174.             list.add(tmp.getLabel());
  175.         }
  176.         if(list.isEmpty()) {
  177.             return null;
  178.         }
  179.         return list.toArray(new String[list.size()]);
  180.     }
  181.    
  182.     public static boolean contains(String value){
  183.         return toEnumConstant(value)!=null;
  184.     }
  185.    
  186.     public static TipoIntegrazione toEnumConstant(String value){
  187.         try{
  188.             return toEnumConstant(value,false);
  189.         }catch(NotFoundException notFound){
  190.             return null;
  191.         }
  192.     }
  193.     public static TipoIntegrazione toEnumConstant(String value, boolean throwNotFoundException) throws NotFoundException{
  194.         TipoIntegrazione res = null;
  195.         for (TipoIntegrazione tmp : values()) {
  196.             if(tmp.getValue().equals(value)){
  197.                 res = tmp;
  198.                 break;
  199.             }
  200.         }
  201.         if(res==null && throwNotFoundException){
  202.             throw new NotFoundException("Enum with value ["+value+"] not found");
  203.         }
  204.         return res;
  205.     }
  206. }