PolicyUtilities.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.utils;

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

  23. import org.apache.commons.lang.StringUtils;
  24. import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
  25. import org.openspcoop2.core.controllo_traffico.AttivazionePolicyFiltro;
  26. import org.openspcoop2.core.controllo_traffico.AttivazionePolicyRaggruppamento;
  27. import org.openspcoop2.core.controllo_traffico.beans.ActivePolicy;
  28. import org.openspcoop2.core.controllo_traffico.beans.IDUnivocoGroupByPolicy;
  29. import org.openspcoop2.core.controllo_traffico.beans.RisultatoStato;
  30. import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy;
  31. import org.openspcoop2.core.transazioni.utils.TipoCredenzialeMittente;
  32. import org.openspcoop2.utils.date.DateUtils;
  33. import org.openspcoop2.utils.properties.PropertiesUtilities;

  34. /**
  35.  * PolicyUtilities
  36.  *
  37.  * @author Andrea Poli (poli@link.it)
  38.  * @author $Author$
  39.  * @version $Rev$, $Date$
  40.  */
  41. public class PolicyUtilities {
  42.    
  43.     private PolicyUtilities() {}

  44.     private static final String DISABILITATO_LABEL = "Disabilitato";
  45.    
  46.     public static String toString(Integer statoAllarme){
  47.        
  48.         StringBuilder bf = new StringBuilder();
  49.        
  50.         if(statoAllarme==null){
  51.             bf.append("N.C.");
  52.         }
  53.         else if(statoAllarme==0){
  54.             bf.append("OK");
  55.         }
  56.         else if(statoAllarme==1){
  57.             bf.append("Warning");
  58.         }
  59.         else if(statoAllarme==2){
  60.             bf.append("Error");
  61.         }
  62.         else{
  63.             bf.append("N.C.");
  64.         }
  65.        
  66.         return bf.toString();
  67.     }
  68.    
  69.     public static String toString(RisultatoStato statoAllarme){
  70.        
  71.         SimpleDateFormat dateFormat = DateUtils.getSimpleDateFormatMs();
  72.        
  73.         StringBuilder bf = new StringBuilder(toString(statoAllarme.getStato()));
  74.        
  75.         bf.append(", ultimo aggiornamento:").
  76.         append(dateFormat.format(statoAllarme.getDateCheck())).
  77.         append(")");
  78.        
  79.         return bf.toString();
  80.     }



  81.     public static String toStringFilter(AttivazionePolicyFiltro filtro) {
  82.         StringBuilder bf = new StringBuilder("");
  83.         if(filtro.isEnabled()){

  84.             if( (filtro.getRuoloPorta()!=null && !RuoloPolicy.ENTRAMBI.equals(filtro.getRuoloPorta())) ){
  85.                 if(bf.length()>0){
  86.                     bf.append(", ");
  87.                 }
  88.                 if(RuoloPolicy.DELEGATA.equals(filtro.getRuoloPorta())){
  89.                     bf.append("Ruolo:Fruitore");
  90.                 }
  91.                 else if(RuoloPolicy.APPLICATIVA.equals(filtro.getRuoloPorta())){
  92.                     bf.append("Ruolo:Erogatore");
  93.                 }
  94.             }
  95.            
  96.             if( !(filtro.getNomePorta()==null || "".equals(filtro.getNomePorta())) ){
  97.                 if(bf.length()>0){
  98.                     bf.append(", ");
  99.                 }
  100.                 bf.append("Porta:");
  101.                 bf.append(filtro.getNomePorta());
  102.             }

  103.             if( !(filtro.getProtocollo()==null || "".equals(filtro.getProtocollo())) ){
  104.                 if(bf.length()>0){
  105.                     bf.append(", ");
  106.                 }
  107.                 bf.append("Protocollo:");
  108.                 bf.append(filtro.getProtocollo());
  109.             }
  110.            
  111.             if(filtro.getRuoloErogatore()!=null && !"".equals(filtro.getRuoloErogatore())){
  112.                 if(bf.length()>0){
  113.                     bf.append(", ");
  114.                 }
  115.                 bf.append("RuoloErogatore:");
  116.                 bf.append(filtro.getRuoloErogatore());
  117.             }
  118.                        
  119.             if( !( (filtro.getTipoErogatore()==null || "".equals(filtro.getTipoErogatore()))
  120.                     ||
  121.                     (filtro.getNomeErogatore()==null || "".equals(filtro.getNomeErogatore())) ) ){
  122.                 if(bf.length()>0){
  123.                     bf.append(", ");
  124.                 }
  125.                 bf.append("Erogatore:");
  126.                 bf.append(filtro.getTipoErogatore()+"/"+filtro.getNomeErogatore());
  127.             }

  128.             if( !(filtro.getTag()==null || "".equals(filtro.getTag())) ){
  129.                 if(bf.length()>0){
  130.                     bf.append(", ");
  131.                 }
  132.                 bf.append("Tag:");
  133.                 bf.append(filtro.getTag());
  134.             }
  135.            
  136.             if( !( (filtro.getTipoServizio()==null || "".equals(filtro.getTipoServizio()))
  137.                     ||
  138.                     (filtro.getNomeServizio()==null || "".equals(filtro.getNomeServizio())) ) ){
  139.                 if(bf.length()>0){
  140.                     bf.append(", ");
  141.                 }
  142.                 bf.append("Servizio:");
  143.                 bf.append(filtro.getTipoServizio()+"/"+filtro.getNomeServizio());
  144.                 if(filtro.getVersioneServizio()!=null && filtro.getVersioneServizio()>0) {
  145.                     bf.append("/v").append(filtro.getVersioneServizio());
  146.                 }
  147.             }
  148.            
  149.             if( !(filtro.getAzione()==null || "".equals(filtro.getAzione())) ){
  150.                 if(bf.length()>0){
  151.                     bf.append(", ");
  152.                 }
  153.                 bf.append("Azione:");
  154.                 bf.append(filtro.getAzione());
  155.             }
  156.            
  157.             if( !(filtro.getServizioApplicativoErogatore()==null || "".equals(filtro.getServizioApplicativoErogatore())) ){
  158.                 if(bf.length()>0){
  159.                     bf.append(", ");
  160.                 }
  161.                 bf.append("SAErogatore:");
  162.                 bf.append(filtro.getServizioApplicativoErogatore());
  163.             }
  164.            
  165.             if(filtro.getRuoloFruitore()!=null && !"".equals(filtro.getRuoloFruitore())){
  166.                 if(bf.length()>0){
  167.                     bf.append(", ");
  168.                 }
  169.                 bf.append("RuoloFruitore:");
  170.                 bf.append(filtro.getRuoloFruitore());
  171.             }
  172.            
  173.             if( !( (filtro.getTipoFruitore()==null || "".equals(filtro.getTipoFruitore()))
  174.                     ||
  175.                     (filtro.getNomeFruitore()==null || "".equals(filtro.getNomeFruitore())) ) ){
  176.                 if(bf.length()>0){
  177.                     bf.append(", ");
  178.                 }
  179.                 bf.append("Fruitore:");
  180.                 bf.append(filtro.getTipoFruitore()+"/"+filtro.getNomeFruitore());
  181.             }

  182.             if( !(filtro.getServizioApplicativoFruitore()==null || "".equals(filtro.getServizioApplicativoFruitore())) ){
  183.                 if(bf.length()>0){
  184.                     bf.append(", ");
  185.                 }
  186.                 bf.append("SAFruitore:");
  187.                 bf.append(filtro.getServizioApplicativoFruitore());
  188.             }
  189.            
  190.             if(filtro.getTokenClaims()!=null){
  191.                 Properties properties = PropertiesUtilities.convertTextToProperties(filtro.getTokenClaims());
  192.                 addStringFilter(properties, "Token-", bf);
  193.             }
  194.            
  195.             if(filtro.isInformazioneApplicativaEnabled()){
  196.                 if(bf.length()>0){
  197.                     bf.append(", ");
  198.                 }
  199.                 bf.append("Chiave:");
  200.                 bf.append(filtro.getInformazioneApplicativaTipo());
  201.             }

  202.         }
  203.         else{
  204.             bf.append(DISABILITATO_LABEL);
  205.         }

  206.         return bf.toString();
  207.     }
  208.     private static void addStringFilter(Properties properties, String prefix, StringBuilder bf) {
  209.         if(properties!=null && properties.size()>0) {
  210.             for (Object o : properties.keySet()) {
  211.                 if(o instanceof String) {
  212.                     String key = (String) o;
  213.                     String value = properties.getProperty(key);
  214.                     if(bf.length()>0){
  215.                         bf.append(", ");
  216.                     }
  217.                     bf.append(prefix).append(key).append(":");
  218.                     bf.append(value);          
  219.                 }
  220.             }
  221.         }
  222.     }
  223.    
  224.     public static String toStringGroupBy(AttivazionePolicyRaggruppamento groupBy,IDUnivocoGroupByPolicy datiGroupBy, boolean printDati) {
  225.         if(printDati) {
  226.             return toStringGroupByWithValues(groupBy, datiGroupBy);
  227.         }
  228.         StringBuilder bf = new StringBuilder("");
  229.         if(groupBy.isEnabled()){

  230.             if(groupBy.isRuoloPorta()){
  231.                 if(bf.length()>0){
  232.                     bf.append(", ");
  233.                 }
  234.                 bf.append("Tipologia");
  235.             }
  236.            
  237.             if(groupBy.isProtocollo()){
  238.                 if(bf.length()>0){
  239.                     bf.append(", ");
  240.                 }
  241.                 bf.append("Modalitร ");
  242.             }
  243.            
  244.             if(groupBy.isErogatore()){
  245.                 if(bf.length()>0){
  246.                     bf.append(", ");
  247.                 }
  248.                 bf.append("Erogatore");
  249.             }
  250.            
  251.             if(groupBy.isServizio()){
  252.                 if(bf.length()>0){
  253.                     bf.append(", ");
  254.                 }
  255.                 bf.append("Servizio");
  256.             }
  257.            
  258.             if(groupBy.isAzione()){
  259.                 if(bf.length()>0){
  260.                     bf.append(", ");
  261.                 }
  262.                 bf.append("Azione");
  263.             }
  264.            
  265.             if(groupBy.isServizioApplicativoErogatore()){
  266.                 if(bf.length()>0){
  267.                     bf.append(", ");
  268.                 }
  269.                 bf.append("SAErogatore");
  270.             }
  271.            
  272.             if(groupBy.isFruitore()){
  273.                 if(bf.length()>0){
  274.                     bf.append(", ");
  275.                 }
  276.                 bf.append("Fruitore");
  277.             }
  278.            
  279.             if(groupBy.isServizioApplicativoFruitore()){
  280.                 if(bf.length()>0){
  281.                     bf.append(", ");
  282.                 }
  283.                 bf.append("SAFruitore");
  284.             }
  285.            
  286.             if(groupBy.getToken()!=null && StringUtils.isNotEmpty(groupBy.getToken())){
  287.                 if(bf.length()>0){
  288.                     bf.append(", ");
  289.                 }
  290.                 bf.append("Token: ").append(groupBy.getToken());
  291.             }
  292.            
  293.             if(groupBy.isInformazioneApplicativaEnabled()){
  294.                 if(bf.length()>0){
  295.                     bf.append(", ");
  296.                 }
  297.                 bf.append("Chiave-Tipo: ");
  298.                 bf.append(groupBy.getInformazioneApplicativaTipo());
  299.                 if(groupBy.getInformazioneApplicativaNome()!=null) {
  300.                     bf.append(", Chiave-Criterio: ");
  301.                     bf.append(groupBy.getInformazioneApplicativaNome());
  302.                 }
  303.                 if(datiGroupBy!=null) {
  304.                     bf.append(", Chiave-Valore: ");
  305.                     bf.append(datiGroupBy.getValoreKey());
  306.                 }
  307.             }

  308.         }
  309.         else{
  310.             bf.append(DISABILITATO_LABEL);
  311.         }

  312.         return bf.toString();
  313.     }
  314.    
  315.    
  316.     private static String toStringGroupByWithValues(AttivazionePolicyRaggruppamento groupBy,IDUnivocoGroupByPolicy datiGroupBy) {
  317.         StringBuilder bf = new StringBuilder("");
  318.         if(groupBy.isEnabled()){

  319.             if(groupBy.isRuoloPorta()){
  320.                 if(bf.length()>0){
  321.                     bf.append(", ");
  322.                 }
  323.                 bf.append("Tipologia: ");
  324.                 bf.append(datiGroupBy.getRuoloPorta());
  325.             }
  326.            
  327.             if(groupBy.isProtocollo()){
  328.                 if(bf.length()>0){
  329.                     bf.append(", ");
  330.                 }
  331.                 bf.append("Protocollo: ");
  332.                 bf.append(datiGroupBy.getProtocollo());
  333.             }
  334.            
  335.             if(groupBy.isErogatore()){
  336.                 if(bf.length()>0){
  337.                     bf.append(", ");
  338.                 }
  339.                 bf.append("Erogatore: ");
  340.                 bf.append(datiGroupBy.getErogatore());
  341.             }
  342.            
  343.             if(groupBy.isServizio()){
  344.                 if(bf.length()>0){
  345.                     bf.append(", ");
  346.                 }
  347.                 bf.append("Servizio: ");
  348.                 bf.append(datiGroupBy.getServizio());
  349.             }
  350.            
  351.             if(groupBy.isAzione()){
  352.                 if(bf.length()>0){
  353.                     bf.append(", ");
  354.                 }
  355.                 bf.append("Azione: ");
  356.                 bf.append(datiGroupBy.getAzione());
  357.             }
  358.            
  359.             if(groupBy.isServizioApplicativoErogatore()){
  360.                 if(bf.length()>0){
  361.                     bf.append(", ");
  362.                 }
  363.                 bf.append("SAErogatore: ");
  364.                 bf.append(datiGroupBy.getServizioApplicativoErogatore());
  365.             }
  366.            
  367.             if(groupBy.isFruitore()){
  368.                 if(bf.length()>0){
  369.                     bf.append(", ");
  370.                 }
  371.                 bf.append("Fruitore: ");
  372.                 bf.append(datiGroupBy.getFruitore());
  373.             }
  374.            
  375.             if(groupBy.isServizioApplicativoFruitore()){
  376.                 if(bf.length()>0){
  377.                     bf.append(", ");
  378.                 }
  379.                 bf.append("SAFruitore: ");
  380.                 bf.append(datiGroupBy.getServizioApplicativoFruitore());
  381.                
  382.                 if(bf.length()>0){
  383.                     bf.append(", ");
  384.                 }
  385.                 bf.append("ApplicativoToken: ");
  386.                 bf.append(datiGroupBy.getServizioApplicativoToken());
  387.             }
  388.            
  389.             if(groupBy.getToken()!=null && StringUtils.isNotEmpty(groupBy.getToken())){
  390.                 String [] token = null;
  391.                 if(groupBy.getToken().contains(",")) {
  392.                     token = groupBy.getToken().split(",");
  393.                 }
  394.                 else {
  395.                     token = new String[] {groupBy.getToken()};
  396.                 }
  397.                 if(token!=null && token.length>0) {
  398.                     for (int i = 0; i < token.length; i++) {
  399.                         if(bf.length()>0){
  400.                             bf.append(", ");
  401.                         }
  402.                         bf.append(token[i]).append(": ");
  403.                         TipoCredenzialeMittente claim = TipoCredenzialeMittente.toEnumConstant(token[i]);
  404.                         if(claim!=null) {
  405.                             switch (claim) {
  406.                             case TOKEN_SUBJECT:
  407.                                 bf.append(datiGroupBy.getTokenSubject());
  408.                                 break;
  409.                             case TOKEN_ISSUER:
  410.                                 bf.append(datiGroupBy.getTokenIssuer());
  411.                                 break;
  412.                             case TOKEN_CLIENT_ID:
  413.                                 bf.append(datiGroupBy.getTokenClientId());
  414.                                 break;
  415.                             case TOKEN_USERNAME:
  416.                                 bf.append(datiGroupBy.getTokenUsername());
  417.                                 break;
  418.                             case TOKEN_EMAIL:
  419.                                 bf.append(datiGroupBy.getTokenEMail());
  420.                                 break;
  421.                             case PDND_ORGANIZATION_NAME:
  422.                                 bf.append(datiGroupBy.getPdndOrganizationName());
  423.                                 break;
  424.                             default:
  425.                                 bf.append("N.D.");
  426.                                 break;
  427.                             }
  428.                         }
  429.                         else {
  430.                             bf.append("N.D.");
  431.                         }
  432.                     }
  433.                 }  
  434.             }
  435.            
  436.             if(groupBy.isInformazioneApplicativaEnabled()){
  437.                 if(bf.length()>0){
  438.                     bf.append(", ");
  439.                 }
  440.                 bf.append("Chiave-Tipo: ");
  441.                 bf.append(groupBy.getInformazioneApplicativaTipo());
  442.                 if(groupBy.getInformazioneApplicativaNome()!=null) {
  443.                     bf.append(", Chiave-Criterio: ");
  444.                     bf.append(groupBy.getInformazioneApplicativaNome());
  445.                 }
  446.                 bf.append(", Chiave-Valore: ");
  447.                 bf.append(datiGroupBy.getValoreKey());
  448.             }

  449.         }
  450.         else{
  451.             bf.append(DISABILITATO_LABEL);
  452.         }

  453.         return bf.toString();
  454.     }
  455.    
  456.     /**
  457.     public static IDUnivocoGroupByPolicy toIDUnivocoGroupByPolicy(String stringGroupBy) {
  458.         IDUnivocoGroupByPolicy id = new IDUnivocoGroupByPolicy();
  459.         if(stringGroupBy==null || stringGroupBy.equals("") || stringGroupBy.equals(DISABILITATO_LABEL)) {
  460.             return id;
  461.         }
  462.        
  463.         String [] split = stringGroupBy.split(",");
  464.         for (int i = 0; i minor split.length; i++) {
  465.             String tmp = split[i].trim();
  466.            
  467.             if(tmp.startsWith("Tipologia: ")) {
  468.                 id.setRuoloPorta(tmp.substring("Tipologia: ".length()));
  469.             }
  470.             else if(tmp.startsWith("Protocollo: ")) {
  471.                 id.setProtocollo(tmp.substring("Protocollo: ".length()));
  472.             }
  473.             else if(tmp.startsWith("Erogatore: ")) {
  474.                 id.setErogatore(tmp.substring("Erogatore: ".length()));
  475.             }
  476.             else if(tmp.startsWith("Servizio: ")) {
  477.                 id.setServizio(tmp.substring("Servizio: ".length()));
  478.             }
  479.             else if(tmp.startsWith("Azione: ")) {
  480.                 id.setAzione(tmp.substring("Azione: ".length()));
  481.             }
  482.             else if(tmp.startsWith("SAErogatore: ")) {
  483.                 id.setServizioApplicativoErogatore(tmp.substring("SAErogatore: ".length()));
  484.             }
  485.             else if(tmp.startsWith("Fruitore: ")) {
  486.                 id.setFruitore(tmp.substring("Fruitore: ".length()));
  487.             }
  488.             else if(tmp.startsWith("SAFruitore: ")) {
  489.                 id.setServizioApplicativoFruitore(tmp.substring("SAFruitore: ".length()));
  490.             }
  491.             else if(tmp.startsWith("ApplicativoToken: ")) {
  492.                 id.setServizioApplicativoToken(tmp.substring("ApplicativoToken: ".length()));
  493.             }
  494.             else if(tmp.startsWith("TokenSubject: ")) {
  495.                 id.setTokenSubject(tmp.substring("TokenSubject: ".length()));
  496.             }
  497.             else if(tmp.startsWith("TokenIssuer: ")) {
  498.                 id.setTokenIssuer(tmp.substring("TokenIssuer: ".length()));
  499.             }
  500.             else if(tmp.startsWith("TokenClientId: ")) {
  501.                 id.setTokenClientId(tmp.substring("TokenClientId: ".length()));
  502.             }
  503.             else if(tmp.startsWith("TokenUsername: ")) {
  504.                 id.setTokenUsername(tmp.substring("TokenUsername: ".length()));
  505.             }
  506.             else if(tmp.startsWith("TokenEMail: ")) {
  507.                 id.setTokenEMail(tmp.substring("TokenEMail: ".length()));
  508.             }
  509.             else if(tmp.startsWith("Chiave-Tipo: ")) {
  510.                 id.setTipoKey(tmp.substring("Chiave-Tipo: ".length()));
  511.             }
  512.             else if(tmp.startsWith("Chiave-Criterio: ")) {
  513.                 id.setNomeKey(tmp.substring("Chiave-Criterio: ".length()));
  514.             }
  515.             else if(tmp.startsWith("Chiave-Valore: ")) {
  516.                 id.setValoreKey(tmp.substring("Chiave-Valore: ".length()));
  517.             }
  518.         }
  519.        
  520.         return id;
  521.     }
  522.     */
  523.    
  524.     public static String buildIdConfigurazioneEventoPerPolicy(ActivePolicy activePolicy, IDUnivocoGroupByPolicy datiGroupBy, String api) {
  525.         AttivazionePolicy attivazionePolicy = activePolicy.getInstanceConfiguration();
  526.         return buildIdConfigurazioneEventoPerPolicy(attivazionePolicy, datiGroupBy, api);
  527.     }
  528.     public static String buildIdConfigurazioneEventoPerPolicy(AttivazionePolicy attivazionePolicy, IDUnivocoGroupByPolicy datiGroupBy, String api) {
  529.         // L'obiettivo รจ di generare un evento differente per ogni raggruppamento violato di una stessa policy
  530.         // All'interno di una stessa policy ci possono essere gruppi che non sono violati ed altri che lo sono
  531.         // Ad esempio se si raggruppa per soggetto fruitore, ci potranno essere soggetti che la violano, altri no.
  532.         // Si vuole un evento per ogni soggetto che viola la policy
  533.         boolean printDati = true;
  534.         String idPolicyConGruppo = PolicyUtilities.getNomeActivePolicy(attivazionePolicy.getAlias(), attivazionePolicy.getIdActivePolicy());
  535.         if(api!=null && !"".equals(api)) {
  536.             idPolicyConGruppo = idPolicyConGruppo + " - API: "+api;
  537.         }
  538.         if(attivazionePolicy.getGroupBy().isEnabled()){
  539.             String toStringRaggruppamentoConDatiIstanza = PolicyUtilities.toStringGroupBy(attivazionePolicy.getGroupBy(), datiGroupBy, printDati);
  540.             idPolicyConGruppo = idPolicyConGruppo +
  541.                     org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO+
  542.                     toStringRaggruppamentoConDatiIstanza;
  543.         }
  544.         return idPolicyConGruppo;
  545.     }
  546.    
  547.     public static final String GLOBALE_PROPERTY = "globale:";
  548.     public static final String ID_ACTIVE_POLICY_PROPERTY = "idActivePolicy:";
  549.     public static final String RUOLO_PORTA_PROPERTY = "ruoloPorta:";
  550.     public static final String NOME_PORTA_PROPERTY = "nomePorta:";
  551.    
  552.     public static String buildConfigurazioneEventoPerPolicy(ActivePolicy activePolicy, boolean policyGlobale) {
  553.         AttivazionePolicy attivazionePolicy = activePolicy.getInstanceConfiguration();
  554.         return buildConfigurazioneEventoPerPolicy(attivazionePolicy, policyGlobale);
  555.     }
  556.     public static String buildConfigurazioneEventoPerPolicy(AttivazionePolicy attivazionePolicy, boolean policyGlobale) {
  557.         StringBuilder sb = new StringBuilder();
  558.         sb.append(GLOBALE_PROPERTY).append(policyGlobale);
  559.         sb.append("\n").append(ID_ACTIVE_POLICY_PROPERTY).append(attivazionePolicy.getIdActivePolicy());
  560.         if(!policyGlobale &&
  561.             attivazionePolicy.getFiltro()!=null &&
  562.                 attivazionePolicy.getFiltro().getNomePorta()!=null &&
  563.                 StringUtils.isNotEmpty(attivazionePolicy.getFiltro().getNomePorta()) &&
  564.                 attivazionePolicy.getFiltro().getRuoloPorta()!=null) {
  565.             String nomePorta = attivazionePolicy.getFiltro().getNomePorta();
  566.             String ruoloPorta = attivazionePolicy.getFiltro().getRuoloPorta().getValue();
  567.             sb.append("\n").append(RUOLO_PORTA_PROPERTY).append(ruoloPorta);
  568.             sb.append("\n").append(NOME_PORTA_PROPERTY).append(nomePorta);
  569.         }
  570.         return sb.toString();
  571.     }
  572.    
  573.     public static boolean isConfigurazioneEventoPerPolicy(String configurazione) {
  574.         return configurazione!=null && configurazione.startsWith(GLOBALE_PROPERTY);
  575.     }
  576.     public static boolean isConfigurazioneEventoPerPolicy_policyGlobale(String configurazione) {
  577.         if(isConfigurazioneEventoPerPolicy(configurazione)) {
  578.             String [] tmp = configurazione.split("\n");
  579.             if(tmp!=null && tmp.length>0) {
  580.                 String firstLine = tmp[0];
  581.                 if(firstLine!=null && firstLine.startsWith(GLOBALE_PROPERTY) && firstLine.length()>GLOBALE_PROPERTY.length()) {
  582.                     String s = firstLine.substring(GLOBALE_PROPERTY.length());
  583.                     return Boolean.valueOf(s);
  584.                 }
  585.             }
  586.         }
  587.         return false;
  588.     }
  589.     public static String getConfigurazioneEventoPerPolicy_idActivePolicy(String configurazione) {
  590.         if(isConfigurazioneEventoPerPolicy(configurazione)) {
  591.             String [] tmp = configurazione.split("\n");
  592.             if(tmp!=null && tmp.length>1) {
  593.                 String firstLine = tmp[1];
  594.                 if(firstLine!=null && firstLine.startsWith(ID_ACTIVE_POLICY_PROPERTY) && firstLine.length()>ID_ACTIVE_POLICY_PROPERTY.length()) {
  595.                     return firstLine.substring(ID_ACTIVE_POLICY_PROPERTY.length());
  596.                 }
  597.             }
  598.         }
  599.         return null;
  600.     }
  601.     public static String getConfigurazioneEventoPerPolicy_ruoloPorta(String configurazione) {
  602.         if(isConfigurazioneEventoPerPolicy(configurazione)) {
  603.             String [] tmp = configurazione.split("\n");
  604.             if(tmp!=null && tmp.length>2) {
  605.                 String firstLine = tmp[2];
  606.                 if(firstLine!=null && firstLine.startsWith(RUOLO_PORTA_PROPERTY) && firstLine.length()>RUOLO_PORTA_PROPERTY.length()) {
  607.                     return firstLine.substring(RUOLO_PORTA_PROPERTY.length());
  608.                 }
  609.             }
  610.         }
  611.         return null;
  612.     }
  613.     public static String getConfigurazioneEventoPerPolicy_nomePorta(String configurazione) {
  614.         if(isConfigurazioneEventoPerPolicy(configurazione)) {
  615.             String [] tmp = configurazione.split("\n");
  616.             if(tmp!=null && tmp.length>3) {
  617.                 String firstLine = tmp[3];
  618.                 if(firstLine!=null && firstLine.startsWith(NOME_PORTA_PROPERTY) && firstLine.length()>NOME_PORTA_PROPERTY.length()) {
  619.                     return firstLine.substring(NOME_PORTA_PROPERTY.length());
  620.                 }
  621.             }
  622.         }
  623.         return null;
  624.     }
  625.    
  626.    
  627.     public static String extractIdPolicyFromIdConfigurazioneEvento(String idConfigurazioneEvento) {
  628.         if(idConfigurazioneEvento.contains(org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO)) {
  629.             return idConfigurazioneEvento.split(org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO)[0];
  630.         }
  631.         else {
  632.             return idConfigurazioneEvento;
  633.         }
  634.     }
  635.    
  636.     public static String extractIDUnivocoGroupByPolicyFromIdConfigurazioneEventoAsString(String idConfigurazioneEvento) {
  637.         String datiGruppo = null;
  638.         if(idConfigurazioneEvento.contains(org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO)) {
  639.             int indexOf = idConfigurazioneEvento.indexOf(org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO);
  640.             datiGruppo = idConfigurazioneEvento.substring(indexOf+org.openspcoop2.core.controllo_traffico.constants.Costanti.SEPARATORE_IDPOLICY_RAGGRUPPAMENTO.length());
  641.         }
  642.         return datiGruppo;
  643.     }
  644.    
  645.     /**
  646.     public static IDUnivocoGroupByPolicy extractIDUnivocoGroupByPolicyFromIdConfigurazioneEvento(String idConfigurazioneEvento) {
  647.         return toIDUnivocoGroupByPolicy(extractIDUnivocoGroupByPolicyFromIdConfigurazioneEventoAsString(idConfigurazioneEvento));
  648.     }
  649.     */
  650.    
  651.     public static String getNomeActivePolicy(String alias, String id) {
  652.         if(alias==null || "".equals(alias)) {
  653.             return id.replace(":", "_");
  654.         }
  655.         else {
  656.             return alias;
  657.         }
  658.     }
  659. }