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.                             case PDND_ORGANIZATION_EXTERNAL_ID:
  425.                                 bf.append(datiGroupBy.getPdndOrganizationExternalId());
  426.                                 break;
  427.                             case PDND_ORGANIZATION_CONSUMER_ID:
  428.                                 bf.append(datiGroupBy.getPdndOrganizationConsumerId());
  429.                                 break;
  430.                             default:
  431.                                 bf.append("N.D.");
  432.                                 break;
  433.                             }
  434.                         }
  435.                         else {
  436.                             bf.append("N.D.");
  437.                         }
  438.                     }
  439.                 }  
  440.             }
  441.            
  442.             if(groupBy.isInformazioneApplicativaEnabled()){
  443.                 if(bf.length()>0){
  444.                     bf.append(", ");
  445.                 }
  446.                 bf.append("Chiave-Tipo: ");
  447.                 bf.append(groupBy.getInformazioneApplicativaTipo());
  448.                 if(groupBy.getInformazioneApplicativaNome()!=null) {
  449.                     bf.append(", Chiave-Criterio: ");
  450.                     bf.append(groupBy.getInformazioneApplicativaNome());
  451.                 }
  452.                 bf.append(", Chiave-Valore: ");
  453.                 bf.append(datiGroupBy.getValoreKey());
  454.             }

  455.         }
  456.         else{
  457.             bf.append(DISABILITATO_LABEL);
  458.         }

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