Costanti.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.core.controllo_traffico.constants;

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

  23. import org.openspcoop2.core.controllo_traffico.driver.PolicyGroupByActiveThreadsType;
  24. import org.openspcoop2.utils.Map;
  25. import org.openspcoop2.utils.MapKey;

  26. /**
  27.  * Costanti
  28.  *
  29.  * @author Andrea Poli (poli@link.it)
  30.  * @author $Author$
  31.  * @version $Rev$, $Date$
  32.  */
  33. public class Costanti {
  34.    
  35.     private Costanti() {}

  36.     public static final MapKey<String> PDD_CONTEXT_NAME_CONTROLLO_TRAFFICO_VIOLAZIONE = Map.newMapKey("controlloTrafficoViolazione");
  37.    
  38.     public static final String PDD_CONTEXT_VALUE_CONNECTION_TIMEOUT = "controlloTrafficoConnectionTimeout";
  39.     public static final String PDD_CONTEXT_VALUE_REQUEST_READ_TIMEOUT = "controlloTrafficoRequestReadTimeout";
  40.     public static final String PDD_CONTEXT_VALUE_RESPONSE_READ_TIMEOUT = "controlloTrafficoResponseReadTimeout";
  41.     public static final String PDD_CONTEXT_VALUE_READ_TIMEOUT = "controlloTrafficoReadTimeout";
  42.    
  43.     public static final String PDD_CONTEXT_VALUE_POLICY_VIOLATA = "controlloTrafficoRateLimitingPolicyViolata";
  44.     public static final String PDD_CONTEXT_VALUE_POLICY_VIOLATA_WARNING_ONLY = "controlloTrafficoRateLimitingPolicyViolataWarningOnly";
  45.     public static final String PDD_CONTEXT_VALUE_POLICY_IN_ERRORE = "controlloTrafficoRateLimitingPolicyInErrore";
  46.     public static final MapKey<String> PDD_CONTEXT_VALUE_POLICY_IN_ERROR_ESITO = Map.newMapKey("controlloTrafficoRateLimitingPolicyInErroreEsito");
  47.    
  48.     public static final String SEPARATORE_IDPOLICY_RAGGRUPPAMENTO = " - ";
  49.    
  50.     private static String controlloTrafficoImagePrefix = "image";
  51.     private static String controlloTrafficoEventiImagePrefix = "imageEventi";
  52.     private static String controlloTrafficoImageExt = ".bin";
  53.    
  54.     public static String getControlloTrafficoImage(String ctPolicyType) {
  55.         return getEngineControlloTrafficoImagePrefix(ctPolicyType, controlloTrafficoImagePrefix);
  56.     }
  57.     public static String getControlloTrafficoEventiImage(String ctPolicyType) {
  58.         return getEngineControlloTrafficoImagePrefix(ctPolicyType, controlloTrafficoEventiImagePrefix);
  59.     }
  60.     private static String getEngineControlloTrafficoImagePrefix(String ctPolicyType, String prefix) {
  61.         StringBuilder sb = new StringBuilder(prefix);
  62.         if(ctPolicyType!=null && !"LOCAL".equals(ctPolicyType)) {
  63.             sb.append("-").append(ctPolicyType);
  64.         }
  65.         sb.append(controlloTrafficoImageExt);
  66.         return sb.toString();
  67.     }
  68.    
  69.     public static final String POLICY_GLOBALE = "Globale";
  70.     public static final String POLICY_API = "API";
  71.    
  72.    
  73.     public static final String GESTORE = "ctGestore";
  74.     public static final String GESTORE_HAZELCAST_MAP_BACKWARD_COMPATIBILITY = "HAZELCAST";
  75.    
  76.     public static final String GESTORE_CONFIG_DATE = "ctGestoreConfigDate";
  77.    
  78.     public static final String MODALITA_SINCRONIZZAZIONE = "ctSyncMode";
  79.    
  80.     public static final String VALUE_MODALITA_SINCRONIZZAZIONE_DEFAULT = "default";
  81.     public static final String VALUE_MODALITA_SINCRONIZZAZIONE_LOCALE = "locale";
  82.     public static final String VALUE_MODALITA_SINCRONIZZAZIONE_LOCALE_SUDDIVISA_TRA_NODI = "localePiuNodi";
  83.     public static final String VALUE_MODALITA_SINCRONIZZAZIONE_DISTRIBUITA = "distribuita";
  84.     public static final List<String> getVALUES_MODALITA_SINCRONIZZAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati){
  85.         return getEngineMODALITA_SINCRONIZZAZIONE(tipiSupportati, true);
  86.     }
  87.    
  88.     public static final String LABEL_MODALITA_SINCRONIZZAZIONE = "Sincronizzazione";    
  89.     public static final String LABEL_MODALITA_SINCRONIZZAZIONE_DEFAULT = "Default";
  90.     public static final String LABEL_MODALITA_SINCRONIZZAZIONE_LOCALE = "Locale";
  91.     public static final String LABEL_MODALITA_SINCRONIZZAZIONE_LOCALE_SUDDIVISA_TRA_NODI = "Locale - Quota divisa sui nodi";
  92.     public static final String LABEL_MODALITA_SINCRONIZZAZIONE_DISTRIBUITA = "Distribuita";
  93.    
  94.     public static final List<String> getLABELS_MODALITA_SINCRONIZZAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati){
  95.         return getEngineMODALITA_SINCRONIZZAZIONE(tipiSupportati, false);
  96.     }
  97.    
  98.     private static final List<String> getEngineMODALITA_SINCRONIZZAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati, boolean values){
  99.         boolean locale = false;
  100.         boolean localeNodi = false;
  101.         boolean distribuita = false;
  102.         for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  103.             if(PolicyGroupByActiveThreadsType.LOCAL.equals(tipo)) {
  104.                 locale = true;
  105.             }
  106.             else if(PolicyGroupByActiveThreadsType.LOCAL_DIVIDED_BY_NODES.equals(tipo)) {
  107.                 localeNodi = true;
  108.             }
  109.             else {
  110.                 distribuita = true;
  111.             }
  112.         }
  113.         List<String> l = new ArrayList<>();
  114.         l.add(values ? VALUE_MODALITA_SINCRONIZZAZIONE_DEFAULT : LABEL_MODALITA_SINCRONIZZAZIONE_DEFAULT);
  115.         if(locale) {
  116.             l.add(values ? VALUE_MODALITA_SINCRONIZZAZIONE_LOCALE : LABEL_MODALITA_SINCRONIZZAZIONE_LOCALE);
  117.         }
  118.         if(localeNodi) {
  119.             l.add(values ? VALUE_MODALITA_SINCRONIZZAZIONE_LOCALE_SUDDIVISA_TRA_NODI : LABEL_MODALITA_SINCRONIZZAZIONE_LOCALE_SUDDIVISA_TRA_NODI);
  120.         }
  121.         if(distribuita) {
  122.             l.add(values ? VALUE_MODALITA_SINCRONIZZAZIONE_DISTRIBUITA : LABEL_MODALITA_SINCRONIZZAZIONE_DISTRIBUITA);
  123.         }
  124.         return l;
  125.     }
  126.    
  127.    
  128.     public static final String MODALITA_IMPLEMENTAZIONE = "ctImpl";
  129.    
  130.     public static final String VALUE_MODALITA_IMPLEMENTAZIONE_DATABASE = "database";
  131.     public static final String VALUE_MODALITA_IMPLEMENTAZIONE_HAZELCAST = "hazelcast";
  132.     public static final String VALUE_MODALITA_IMPLEMENTAZIONE_REDIS = "redis";
  133.     public static final List<String> getVALUES_MODALITA_IMPLEMENTAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati){
  134.         return getEngineMODALITA_IMPLEMENTAZIONE(tipiSupportati, true);
  135.     }
  136.    
  137.     public static final String LABEL_MODALITA_IMPLEMENTAZIONE = "Implementazione";
  138.    
  139.     public static final String LABEL_MODALITA_IMPLEMENTAZIONE_DATABASE = "embedded";
  140.     public static final String LABEL_MODALITA_IMPLEMENTAZIONE_HAZELCAST = "hazelcast";
  141.     public static final String LABEL_MODALITA_IMPLEMENTAZIONE_REDIS = "redis";  
  142.     public static final List<String> getLABELS_MODALITA_IMPLEMENTAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati){
  143.         return getEngineMODALITA_IMPLEMENTAZIONE(tipiSupportati, false);
  144.     }
  145.    
  146.     private static final List<String> getEngineMODALITA_IMPLEMENTAZIONE(List<PolicyGroupByActiveThreadsType> tipiSupportati, boolean values){
  147.         boolean database = false;
  148.         boolean hazelcast = false;
  149.         boolean redis = false;
  150.         for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  151.             if(PolicyGroupByActiveThreadsType.DATABASE.equals(tipo)) {
  152.                 database = true;
  153.             }
  154.             else if(tipo.isHazelcast()) {
  155.                 hazelcast = true;
  156.             }
  157.             else if(tipo.isRedis()) {
  158.                 redis = true;
  159.             }
  160.         }
  161.         List<String> l = new ArrayList<>();
  162.         if(hazelcast) {
  163.             l.add(values ? VALUE_MODALITA_IMPLEMENTAZIONE_HAZELCAST : LABEL_MODALITA_IMPLEMENTAZIONE_HAZELCAST);
  164.         }
  165.         if(redis) {
  166.             l.add(values ? VALUE_MODALITA_IMPLEMENTAZIONE_REDIS : LABEL_MODALITA_IMPLEMENTAZIONE_REDIS);
  167.         }
  168.         if(database) {
  169.             l.add(values ? VALUE_MODALITA_IMPLEMENTAZIONE_DATABASE : LABEL_MODALITA_IMPLEMENTAZIONE_DATABASE);
  170.         }
  171.         return l;
  172.     }
  173.    
  174.    
  175.    
  176.     public static final String MODALITA_CONTATORI = "ctCount";
  177.    
  178.     public static final String VALUE_MODALITA_CONTATORI_EXACT = "exact";
  179.     public static final String VALUE_MODALITA_CONTATORI_APPROXIMATED = "approximated";
  180.     public static final String VALUE_MODALITA_CONTATORI_INCONSISTENT = "inconsistent";
  181.     public static final List<String> getVALUES_MODALITA_CONTATORI(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl){
  182.         return getEngineMODALITA_CONTATORI(tipiSupportati, impl, true);
  183.     }
  184.    
  185.     public static final String LABEL_MODALITA_CONTATORI = "Misurazione";
  186.    
  187.     public static final String LABEL_MODALITA_CONTATORI_EXACT = "esatta";
  188.     public static final String LABEL_MODALITA_CONTATORI_APPROXIMATED = "approssimata";
  189.     public static final String LABEL_MODALITA_CONTATORI_INCONSISTENT = "inconsistente";
  190.     public static final List<String> getLABELS_MODALITA_CONTATORI(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl){
  191.         return getEngineMODALITA_CONTATORI(tipiSupportati, impl, false);
  192.     }
  193.    
  194.     private static final List<String> getEngineMODALITA_CONTATORI(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl, boolean values){
  195.         boolean exact = false;
  196.         boolean approximated = false;
  197.         boolean inconsistent = false;
  198.         if(VALUE_MODALITA_IMPLEMENTAZIONE_HAZELCAST.equals(impl)) {
  199.             for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  200.                 if(!tipo.isHazelcast()) {
  201.                     continue;
  202.                 }
  203.                
  204.                 if(tipo.isExact()) {
  205.                     exact = true;
  206.                 }
  207.                 else if(tipo.isApproximated()) {
  208.                     approximated = true;
  209.                 }
  210.                 else if(tipo.isInconsistent()) {
  211.                     inconsistent = true;
  212.                 }
  213.             }
  214.         }
  215.         else if(VALUE_MODALITA_IMPLEMENTAZIONE_REDIS.equals(impl)) {
  216.             for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  217.                 if(!tipo.isRedis()) {
  218.                     continue;
  219.                 }
  220.                
  221.                 if(tipo.isExact()) {
  222.                     exact = true;
  223.                 }
  224.                 else if(tipo.isApproximated()) {
  225.                     approximated = true;
  226.                 }
  227.                 else if(tipo.isInconsistent()) {
  228.                     inconsistent = true;
  229.                 }
  230.             }
  231.         }
  232.         List<String> l = new ArrayList<>();
  233.         if(exact) {
  234.             l.add(values ? VALUE_MODALITA_CONTATORI_EXACT : LABEL_MODALITA_CONTATORI_EXACT);
  235.         }
  236.         if(approximated) {
  237.             l.add(values ? VALUE_MODALITA_CONTATORI_APPROXIMATED : LABEL_MODALITA_CONTATORI_APPROXIMATED);
  238.         }
  239.         if(inconsistent) {
  240.             l.add(values ? VALUE_MODALITA_CONTATORI_INCONSISTENT : LABEL_MODALITA_CONTATORI_INCONSISTENT);
  241.         }
  242.         return l;
  243.     }
  244.    
  245.    
  246.    
  247.    
  248.     public static final String MODALITA_TIPOLOGIA = "ctEngineType";
  249.    
  250.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_FULL_SYNC = "full-sync";
  251.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_NEAR_CACHE = "near-cache";
  252.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_LOCAL_CACHE = "local-cache";
  253.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_SYNC = "remote-sync";
  254.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_ASYNC = "remote-async";
  255.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REPLICATED_MAP = "replicated-map";
  256.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG = "atomic-long-counters";
  257.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG_ASYNC = "atomic-long-async-counters";
  258.     public static final String VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_PNCOUNTER = "pn-counters";  
  259.    
  260.     public static final String VALUE_MODALITA_TIPOLOGIA_REDIS_REDDISSON_MAP = "redisson-map";
  261.     public static final String VALUE_MODALITA_TIPOLOGIA_REDIS_CONTATORI_ATOMIC_LONG = "atomic-long-counters";
  262.     public static final String VALUE_MODALITA_TIPOLOGIA_REDIS_CONTATORI_LONGADDER = "longadder-counters";
  263.    
  264.     public static final List<String> getVALUES_MODALITA_TIPOLOGIA(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl, String counter){
  265.         return getEngineMODALITA_TIPOLOGIA(tipiSupportati, impl, counter, true);
  266.     }
  267.    
  268.     public static final String LABEL_MODALITA_TIPOLOGIA = "Algoritmo";
  269.    
  270.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_FULL_SYNC = "map";
  271.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_NEAR_CACHE = "near-cache";
  272.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_LOCAL_CACHE = "local-cache";
  273.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_SYNC = "remote-sync";
  274.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_ASYNC = "remote-async";
  275.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REPLICATED_MAP = "replicated-map";
  276.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG = "atomic-long-counters";
  277.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG_ASYNC = "atomic-long-async-counters";
  278.     public static final String LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_PNCOUNTER = "pn-counters";
  279.    
  280.     public static final String LABEL_MODALITA_TIPOLOGIA_REDIS_REDDISSON = "map";
  281.     public static final String LABEL_MODALITA_TIPOLOGIA_REDIS_CONTATORI_ATOMIC_LONG = "atomic-long-counters";
  282.     public static final String LABEL_MODALITA_TIPOLOGIA_REDIS_CONTATORI_LONGADDER = "longadder-counters";


  283.     public static final List<String> getLABELS_MODALITA_TIPOLOGIA(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl, String counter){
  284.         return getEngineMODALITA_TIPOLOGIA(tipiSupportati, impl, counter, false);
  285.     }
  286.    
  287.     private static final List<String> getEngineMODALITA_TIPOLOGIA(List<PolicyGroupByActiveThreadsType> tipiSupportati, String impl, String counter, boolean values){
  288.         List<String> l = new ArrayList<>();
  289.         if(VALUE_MODALITA_IMPLEMENTAZIONE_HAZELCAST.equals(impl)) {
  290.             for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  291.                 if(VALUE_MODALITA_CONTATORI_EXACT.equals(counter)) {
  292.                     if(PolicyGroupByActiveThreadsType.HAZELCAST_ATOMIC_LONG.equals(tipo)) {
  293.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG: LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG);
  294.                     }
  295.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_MAP.equals(tipo)) {
  296.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_FULL_SYNC : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_FULL_SYNC);
  297.                     }
  298.                 }
  299.                 else if(VALUE_MODALITA_CONTATORI_APPROXIMATED.equals(counter)) {
  300.                     if(PolicyGroupByActiveThreadsType.HAZELCAST_PNCOUNTER.equals(tipo)) {
  301.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_PNCOUNTER: LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_PNCOUNTER);
  302.                     }
  303.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_ATOMIC_LONG_ASYNC.equals(tipo)) {
  304.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG_ASYNC: LABEL_MODALITA_TIPOLOGIA_HAZELCAST_CONTATORI_ATOMIC_LONG_ASYNC);
  305.                     }
  306.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_NEAR_CACHE.equals(tipo)) {
  307.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_NEAR_CACHE : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_NEAR_CACHE);
  308.                     }
  309.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_LOCAL_CACHE.equals(tipo)) {
  310.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_LOCAL_CACHE : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_LOCAL_CACHE);
  311.                     }
  312.                 }
  313.                 else if(VALUE_MODALITA_CONTATORI_INCONSISTENT.equals(counter)) {
  314.                     if(PolicyGroupByActiveThreadsType.HAZELCAST_NEAR_CACHE_UNSAFE_SYNC_MAP.equals(tipo)) {
  315.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_SYNC : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_SYNC);
  316.                     }
  317.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_NEAR_CACHE_UNSAFE_ASYNC_MAP.equals(tipo)) {
  318.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_ASYNC : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REMOTE_ASYNC);
  319.                     }
  320.                     else if(PolicyGroupByActiveThreadsType.HAZELCAST_REPLICATED_MAP.equals(tipo)) {
  321.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_HAZELCAST_REPLICATED_MAP : LABEL_MODALITA_TIPOLOGIA_HAZELCAST_REPLICATED_MAP);
  322.                     }
  323.                 }
  324.             }
  325.         }
  326.         else if(VALUE_MODALITA_IMPLEMENTAZIONE_REDIS.equals(impl)) {
  327.             for (PolicyGroupByActiveThreadsType tipo : tipiSupportati) {
  328.                 if(VALUE_MODALITA_CONTATORI_EXACT.equals(counter)) {
  329.                     if(PolicyGroupByActiveThreadsType.REDISSON_ATOMIC_LONG.equals(tipo)) {
  330.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_REDIS_CONTATORI_ATOMIC_LONG : LABEL_MODALITA_TIPOLOGIA_REDIS_CONTATORI_ATOMIC_LONG);
  331.                     }
  332.                     else if(PolicyGroupByActiveThreadsType.REDISSON_MAP.equals(tipo)) {
  333.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_REDIS_REDDISSON_MAP : LABEL_MODALITA_TIPOLOGIA_REDIS_REDDISSON);
  334.                     }
  335.                 }
  336.                 else if(VALUE_MODALITA_CONTATORI_INCONSISTENT.equals(counter)) {
  337.                     /*
  338.                      * Si potrebbe pensare che debba finire in approximatedModes come per il PNCounter
  339.                      * Non è così poichè per il PNCounter abbiamo le versioni incrementAndGet e addAndGet e in questo caso invece no, si fa prima l'increment e poi si ottiene il valore tramite sum().
  340.                      * Una volta che lo si recupera tramite la 'sum()' potrebbero essere tornati anche risultati derivanti da altre richieste in corso.
  341.                      **/
  342.                     if(PolicyGroupByActiveThreadsType.REDISSON_LONGADDER.equals(tipo)) {
  343.                         l.add(values ? VALUE_MODALITA_TIPOLOGIA_REDIS_CONTATORI_LONGADDER: LABEL_MODALITA_TIPOLOGIA_REDIS_CONTATORI_LONGADDER);
  344.                     }
  345.                 }
  346.             }
  347.         }
  348.         return l;
  349.     }
  350.    

  351.    
  352.    
  353.    
  354.     // HTTP HEADERS
  355.    
  356.     public static final String VALUE_HTTP_HEADER_DEFAULT = "default";
  357.     public static final String VALUE_HTTP_HEADER_DISABILITATO = "disabilitato";
  358.     public static final String VALUE_HTTP_HEADER_ABILITATO = "abilitato";
  359.     public static final String VALUE_HTTP_HEADER_ABILITATO_NO_WINDOWS = "noWindows";
  360.     public static final String VALUE_HTTP_HEADER_ABILITATO_WINDOWS = "windows";
  361.     public static final String VALUE_HTTP_HEADER_ABILITATO_NO_BACKOFF = "noBackoff";
  362.     public static final String VALUE_HTTP_HEADER_ABILITATO_BACKOFF = "backoff";
  363.     public static final String VALUE_HTTP_HEADER_RIDEFINITO = "ridefinito";
  364.    
  365.     public static final String LABEL_HTTP_HEADER_DEFAULT = "Default";
  366.     public static final String LABEL_HTTP_HEADER_DISABILITATO = "Disabilitato";
  367.     public static final String LABEL_HTTP_HEADER_ABILITATO = "Abilitato";
  368.     public static final String LABEL_HTTP_HEADER_ABILITATO_NO_WINDOWS = "Abilitato (senza finestra temporale)";
  369.     public static final String LABEL_HTTP_HEADER_ABILITATO_WINDOWS = "Abilitato (con finestra temporale)";
  370.     public static final String LABEL_HTTP_HEADER_ABILITATO_NO_BACKOFF = "Abilitato (senza backoff)";
  371.     public static final String LABEL_HTTP_HEADER_ABILITATO_BACKOFF = "Abilitato (con backoff)";
  372.     public static final String LABEL_HTTP_HEADER_RIDEFINITO = "Ridefinito";
  373.    
  374.    
  375.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP = "ctHttpMode";
  376.     public static final List<String> VALUES_MODALITA_GENERAZIONE_HEADER_HTTP = new ArrayList<>();
  377.     static {
  378.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP.add(VALUE_HTTP_HEADER_DEFAULT);
  379.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP.add(VALUE_HTTP_HEADER_DISABILITATO);
  380.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP.add(VALUE_HTTP_HEADER_RIDEFINITO);
  381.     }
  382.    
  383.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP = "HTTP Headers";
  384.     public static final List<String> LABELS_MODALITA_GENERAZIONE_HEADER_HTTP = new ArrayList<>();
  385.     static {
  386.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP.add(LABEL_HTTP_HEADER_DEFAULT);
  387.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP.add(LABEL_HTTP_HEADER_DISABILITATO);
  388.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP.add(LABEL_HTTP_HEADER_RIDEFINITO);
  389.     }
  390.    
  391.    
  392.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT = "ctHttpQuota";  
  393.     public static final List<String> VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT = new ArrayList<>();
  394.     static {
  395.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(VALUE_HTTP_HEADER_DEFAULT);
  396.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(VALUE_HTTP_HEADER_ABILITATO_NO_WINDOWS);
  397.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(VALUE_HTTP_HEADER_ABILITATO_WINDOWS);
  398.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(VALUE_HTTP_HEADER_DISABILITATO);
  399.     }
  400.    
  401.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT = "Limiti di Quota";    
  402.     public static final List<String> LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT = new ArrayList<>();
  403.     static {
  404.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(LABEL_HTTP_HEADER_DEFAULT);
  405.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(LABEL_HTTP_HEADER_ABILITATO_NO_WINDOWS);
  406.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(LABEL_HTTP_HEADER_ABILITATO_WINDOWS);
  407.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_LIMIT.add(LABEL_HTTP_HEADER_DISABILITATO);
  408.     }
  409.    

  410.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING = "ctHttpRemaining";  
  411.     public static final List<String> VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING = new ArrayList<>();
  412.     static {
  413.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(VALUE_HTTP_HEADER_DEFAULT);
  414.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(VALUE_HTTP_HEADER_ABILITATO);
  415.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(VALUE_HTTP_HEADER_DISABILITATO);
  416.     }
  417.    
  418.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING = "Rimanenza della Quota";  
  419.     public static final List<String> LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING = new ArrayList<>();
  420.     static {
  421.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(LABEL_HTTP_HEADER_DEFAULT);
  422.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(LABEL_HTTP_HEADER_ABILITATO);
  423.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_REMAINING.add(LABEL_HTTP_HEADER_DISABILITATO);
  424.     }
  425.    
  426.    
  427.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP_RESET = "ctHttpReset";  
  428.     public static final List<String> VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RESET = new ArrayList<>();
  429.     static {
  430.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(VALUE_HTTP_HEADER_DEFAULT);
  431.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(VALUE_HTTP_HEADER_ABILITATO);
  432.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(VALUE_HTTP_HEADER_DISABILITATO);
  433.     }
  434.    
  435.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP_RESET = "Reset della Quota (secondi)";    
  436.     public static final List<String> LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RESET = new ArrayList<>();
  437.     static {
  438.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(LABEL_HTTP_HEADER_DEFAULT);
  439.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(LABEL_HTTP_HEADER_ABILITATO);
  440.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RESET.add(LABEL_HTTP_HEADER_DISABILITATO);
  441.     }
  442.    
  443.    
  444.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER = "ctHttpRetryAfter";  
  445.     public static final List<String> VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER = new ArrayList<>();
  446.     static {
  447.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(VALUE_HTTP_HEADER_DEFAULT);
  448.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(VALUE_HTTP_HEADER_ABILITATO_NO_BACKOFF);
  449.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(VALUE_HTTP_HEADER_ABILITATO_BACKOFF);
  450.         VALUES_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(VALUE_HTTP_HEADER_DISABILITATO);
  451.     }
  452.    
  453.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER = "Retry-After";  
  454.     public static final List<String> LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER = new ArrayList<>();
  455.     static {
  456.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(LABEL_HTTP_HEADER_DEFAULT);
  457.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(LABEL_HTTP_HEADER_ABILITATO_NO_BACKOFF);
  458.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(LABEL_HTTP_HEADER_ABILITATO_BACKOFF);
  459.         LABELS_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER.add(LABEL_HTTP_HEADER_DISABILITATO);
  460.     }
  461.    
  462.     public static final String MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER_BACKOFF_SECONDS = "ctHttpRetryAfterBackoff";    
  463.    
  464.     public static final String LABEL_MODALITA_GENERAZIONE_HEADER_HTTP_RETRY_AFTER_BACKOFF_SECONDS = "Backoff (secondi)";    
  465. }