IDUnivocoGroupByPolicy.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.beans;

  21. import java.io.Serializable;

  22. import org.openspcoop2.core.commons.CoreException;
  23. import org.openspcoop2.core.constants.TipoPdD;
  24. import org.openspcoop2.core.id.IDServizio;
  25. import org.openspcoop2.core.id.IDServizioApplicativo;
  26. import org.openspcoop2.core.id.IDSoggetto;

  27. /**
  28.  * IDUnivocoGroupByPolicy
  29.  *
  30.  * @author Andrea Poli (poli@link.it)
  31.  * @author $Author$
  32.  * @version $Rev$, $Date$
  33.  */
  34. public class IDUnivocoGroupByPolicy implements IDUnivocoGroupBy<IDUnivocoGroupByPolicy>, Serializable {

  35.     /**
  36.      *
  37.      */
  38.     private static final long serialVersionUID = 1L;
  39.    
  40.     public static final String QUALSIASI = "*";
  41.    
  42.     private String ruoloPorta = QUALSIASI;
  43.     private String protocollo = QUALSIASI;
  44.     private String fruitore = QUALSIASI;
  45.     private String servizioApplicativoFruitore = QUALSIASI;
  46.     private String servizioApplicativoToken = QUALSIASI;
  47.     private String erogatore = QUALSIASI;
  48.     private String servizioApplicativoErogatore = QUALSIASI;
  49.     private String servizio = QUALSIASI;
  50.     private String azione = QUALSIASI;
  51.     private String tipoKey = QUALSIASI;
  52.     private String nomeKey = QUALSIASI;
  53.     private String valoreKey = QUALSIASI;
  54.     private String identificativoAutenticato = QUALSIASI;
  55.     private String tokenSubject = QUALSIASI;
  56.     private String tokenIssuer = QUALSIASI;
  57.     private String tokenUsername = QUALSIASI;
  58.     private String tokenClientId = QUALSIASI;
  59.     private String tokenEMail = QUALSIASI;
  60.     private String pdndOrganizationName = QUALSIASI;
  61.     private String pdndOrganizationExternalId = QUALSIASI;
  62.     private String pdndOrganizationConsumerId = QUALSIASI;
  63.    

  64.    
  65.     @Override
  66.     public boolean match(IDUnivocoGroupByPolicy filtro){
  67.        
  68.         return
  69.                 this.ruoloPorta.equals(filtro.getRuoloPorta())
  70.                 &&
  71.                 this.protocollo.equals(filtro.getProtocollo())
  72.                 &&
  73.                 this.fruitore.equals(filtro.getFruitore())
  74.                 &&
  75.                 this.servizioApplicativoFruitore.equals(filtro.getServizioApplicativoFruitore())
  76.                 &&
  77.                 this.servizioApplicativoToken.equals(filtro.getServizioApplicativoToken())
  78.                 &&
  79.                 this.erogatore.equals(filtro.getErogatore())
  80.                 &&
  81.                 this.servizioApplicativoErogatore.equals(filtro.getServizioApplicativoErogatore())
  82.                 &&
  83.                 this.servizio.equals(filtro.getServizio())
  84.                 &&
  85.                 this.azione.equals(filtro.getAzione())
  86.                 &&
  87.                 this.tipoKey.equals(filtro.getTipoKey())
  88.                 &&
  89.                 this.nomeKey.equals(filtro.getNomeKey())
  90.                 &&
  91.                 this.valoreKey.equals(filtro.getValoreKey())
  92.                 &&
  93.                 this.identificativoAutenticato.equals(filtro.getIdentificativoAutenticato())
  94.                 &&
  95.                 this.tokenSubject.equals(filtro.getTokenSubject())
  96.                 &&
  97.                 this.tokenIssuer.equals(filtro.getTokenIssuer())
  98.                 &&
  99.                 this.tokenClientId.equals(filtro.getTokenClientId())
  100.                 &&
  101.                 this.tokenUsername.equals(filtro.getTokenUsername())
  102.                 &&
  103.                 this.tokenEMail.equals(filtro.getTokenEMail())
  104.                 &&
  105.                 this.pdndOrganizationName.equals(filtro.getPdndOrganizationName())
  106.                 &&
  107.                 this.pdndOrganizationExternalId.equals(filtro.getPdndOrganizationExternalId())
  108.                 &&
  109.                 this.pdndOrganizationConsumerId.equals(filtro.getPdndOrganizationConsumerId())
  110.                 ;
  111.        
  112.     }
  113.    
  114.     @Override
  115.     public boolean equals(Object param){
  116.         if(!(param instanceof IDUnivocoGroupByPolicy))
  117.             return false;
  118.         IDUnivocoGroupByPolicy id = (IDUnivocoGroupByPolicy) param;
  119.         return this.match(id);
  120.     }
  121.    
  122.    
  123.     // Utile per usare l'oggetto in hashtable come chiave
  124.     @Override
  125.     public int hashCode(){
  126.         return this.toString().hashCode();
  127.     }
  128.    
  129.     @Override
  130.     public String toString(){
  131.         return this.toString(false);
  132.     }
  133.     public String toString(boolean filterGroupByNotSet){
  134.        
  135.         StringBuilder bf = new StringBuilder();
  136.        
  137.         if(!QUALSIASI.equals(this.ruoloPorta) || !filterGroupByNotSet){
  138.             if(filterGroupByNotSet){
  139.                 if(bf.length()>0){
  140.                     bf.append("\n");
  141.                 }
  142.                 bf.append("\t");
  143.             }
  144.             bf.append("RuoloPorta:");
  145.             if(filterGroupByNotSet){
  146.                 bf.append(" ");
  147.             }
  148.             bf.append(this.ruoloPorta);
  149.         }
  150.        
  151.         if(!QUALSIASI.equals(this.protocollo) || !filterGroupByNotSet){
  152.             if(filterGroupByNotSet){
  153.                 if(bf.length()>0){
  154.                     bf.append("\n");
  155.                 }
  156.                 bf.append("\t");
  157.             }
  158.             else{
  159.                 bf.append(" ");
  160.             }
  161.             bf.append("Protocollo:");
  162.             if(filterGroupByNotSet){
  163.                 bf.append(" ");
  164.             }
  165.             bf.append(this.protocollo);
  166.         }
  167.        
  168.         if(!QUALSIASI.equals(this.fruitore) || !filterGroupByNotSet){
  169.             if(filterGroupByNotSet){
  170.                 if(bf.length()>0){
  171.                     bf.append("\n");
  172.                 }
  173.                 bf.append("\t");
  174.             }
  175.             else{
  176.                 bf.append(" ");
  177.             }
  178.             bf.append("Fruitore:");
  179.             if(filterGroupByNotSet){
  180.                 bf.append(" ");
  181.             }
  182.             bf.append(this.fruitore);
  183.         }
  184.        
  185.         if(!QUALSIASI.equals(this.servizioApplicativoFruitore) || !filterGroupByNotSet){
  186.             if(filterGroupByNotSet){
  187.                 if(bf.length()>0){
  188.                     bf.append("\n");
  189.                 }
  190.                 bf.append("\t");
  191.             }
  192.             else{
  193.                 bf.append(" ");
  194.             }
  195.             bf.append("Applicativo:");
  196.             if(filterGroupByNotSet){
  197.                 bf.append(" ");
  198.             }
  199.             bf.append(this.servizioApplicativoFruitore);
  200.         }
  201.        
  202.         if(!QUALSIASI.equals(this.servizioApplicativoToken) || !filterGroupByNotSet){
  203.             if(filterGroupByNotSet){
  204.                 if(bf.length()>0){
  205.                     bf.append("\n");
  206.                 }
  207.                 bf.append("\t");
  208.             }
  209.             else{
  210.                 bf.append(" ");
  211.             }
  212.             bf.append("ApplicativoToken:");
  213.             if(filterGroupByNotSet){
  214.                 bf.append(" ");
  215.             }
  216.             bf.append(this.servizioApplicativoToken);
  217.         }
  218.        
  219.         if(!QUALSIASI.equals(this.erogatore) || !filterGroupByNotSet){
  220.             if(filterGroupByNotSet){
  221.                 if(bf.length()>0){
  222.                     bf.append("\n");
  223.                 }
  224.                 bf.append("\t");
  225.             }
  226.             else{
  227.                 bf.append(" ");
  228.             }
  229.             bf.append("Erogatore:");
  230.             if(filterGroupByNotSet){
  231.                 bf.append(" ");
  232.             }
  233.             bf.append(this.erogatore);
  234.         }
  235.        
  236.         if(!QUALSIASI.equals(this.servizioApplicativoErogatore) || !filterGroupByNotSet){
  237.             if(filterGroupByNotSet){
  238.                 if(bf.length()>0){
  239.                     bf.append("\n");
  240.                 }
  241.                 bf.append("\t");
  242.             }
  243.             else{
  244.                 bf.append(" ");
  245.             }
  246.             bf.append("ApplicativoErogatore:");
  247.             if(filterGroupByNotSet){
  248.                 bf.append(" ");
  249.             }
  250.             bf.append(this.servizioApplicativoErogatore);
  251.         }
  252.        
  253.         if(!QUALSIASI.equals(this.servizio) || !filterGroupByNotSet){
  254.             if(filterGroupByNotSet){
  255.                 if(bf.length()>0){
  256.                     bf.append("\n");
  257.                 }
  258.                 bf.append("\t");
  259.             }
  260.             else{
  261.                 bf.append(" ");
  262.             }
  263.             bf.append("API:");
  264.             if(filterGroupByNotSet){
  265.                 bf.append(" ");
  266.             }
  267.             bf.append(this.servizio);
  268.         }
  269.        
  270.         if(!QUALSIASI.equals(this.azione) || !filterGroupByNotSet){
  271.             if(filterGroupByNotSet){
  272.                 if(bf.length()>0){
  273.                     bf.append("\n");
  274.                 }
  275.                 bf.append("\t");
  276.             }
  277.             else{
  278.                 bf.append(" ");
  279.             }
  280.             bf.append("Azione:");
  281.             if(filterGroupByNotSet){
  282.                 bf.append(" ");
  283.             }
  284.             bf.append(this.azione);
  285.         }
  286.        
  287.         if(!QUALSIASI.equals(this.tipoKey) || !filterGroupByNotSet){
  288.             if(filterGroupByNotSet){
  289.                 if(bf.length()>0){
  290.                     bf.append("\n");
  291.                 }
  292.                 bf.append("\t");
  293.             }
  294.             else{
  295.                 bf.append(" ");
  296.             }
  297.             bf.append("TipoKey:");
  298.             if(filterGroupByNotSet){
  299.                 bf.append(" ");
  300.             }
  301.             bf.append(this.tipoKey);
  302.         }
  303.        
  304.         if(!QUALSIASI.equals(this.nomeKey) || !filterGroupByNotSet){
  305.             if(filterGroupByNotSet){
  306.                 if(bf.length()>0){
  307.                     bf.append("\n");
  308.                 }
  309.                 bf.append("\t");
  310.             }
  311.             else{
  312.                 bf.append(" ");
  313.             }
  314.             bf.append("NomeKey:");
  315.             if(filterGroupByNotSet){
  316.                 bf.append(" ");
  317.             }
  318.             bf.append(this.nomeKey);
  319.         }
  320.        
  321.         if(!QUALSIASI.equals(this.valoreKey) || !filterGroupByNotSet){
  322.             if(filterGroupByNotSet){
  323.                 if(bf.length()>0){
  324.                     bf.append("\n");
  325.                 }
  326.                 bf.append("\t");
  327.             }
  328.             else{
  329.                 bf.append(" ");
  330.             }
  331.             bf.append("ValoreKey:");
  332.             if(filterGroupByNotSet){
  333.                 bf.append(" ");
  334.             }
  335.             bf.append(this.valoreKey);
  336.         }
  337.        
  338.         if(!QUALSIASI.equals(this.identificativoAutenticato) || !filterGroupByNotSet){
  339.             if(filterGroupByNotSet){
  340.                 if(bf.length()>0){
  341.                     bf.append("\n");
  342.                 }
  343.                 bf.append("\t");
  344.             }
  345.             else{
  346.                 bf.append(" ");
  347.             }
  348.             bf.append("Credenziali:");
  349.             if(filterGroupByNotSet){
  350.                 bf.append(" ");
  351.             }
  352.             bf.append(this.identificativoAutenticato);
  353.         }
  354.        
  355.         if(!QUALSIASI.equals(this.tokenSubject) || !filterGroupByNotSet){
  356.             if(filterGroupByNotSet){
  357.                 if(bf.length()>0){
  358.                     bf.append("\n");
  359.                 }
  360.                 bf.append("\t");
  361.             }
  362.             else{
  363.                 bf.append(" ");
  364.             }
  365.             bf.append("TokenSubject:");
  366.             if(filterGroupByNotSet){
  367.                 bf.append(" ");
  368.             }
  369.             bf.append(this.tokenSubject);
  370.         }
  371.        
  372.         if(!QUALSIASI.equals(this.tokenIssuer) || !filterGroupByNotSet){
  373.             if(filterGroupByNotSet){
  374.                 if(bf.length()>0){
  375.                     bf.append("\n");
  376.                 }
  377.                 bf.append("\t");
  378.             }
  379.             else{
  380.                 bf.append(" ");
  381.             }
  382.             bf.append("TokenIssuer:");
  383.             if(filterGroupByNotSet){
  384.                 bf.append(" ");
  385.             }
  386.             bf.append(this.tokenIssuer);
  387.         }
  388.        
  389.         if(!QUALSIASI.equals(this.tokenClientId) || !filterGroupByNotSet){
  390.             if(filterGroupByNotSet){
  391.                 if(bf.length()>0){
  392.                     bf.append("\n");
  393.                 }
  394.                 bf.append("\t");
  395.             }
  396.             else{
  397.                 bf.append(" ");
  398.             }
  399.             bf.append("TokenClientId:");
  400.             if(filterGroupByNotSet){
  401.                 bf.append(" ");
  402.             }
  403.             bf.append(this.tokenClientId);
  404.         }
  405.        
  406.         if(!QUALSIASI.equals(this.tokenUsername) || !filterGroupByNotSet){
  407.             if(filterGroupByNotSet){
  408.                 if(bf.length()>0){
  409.                     bf.append("\n");
  410.                 }
  411.                 bf.append("\t");
  412.             }
  413.             else{
  414.                 bf.append(" ");
  415.             }
  416.             bf.append("TokenUsername:");
  417.             if(filterGroupByNotSet){
  418.                 bf.append(" ");
  419.             }
  420.             bf.append(this.tokenUsername);
  421.         }
  422.        
  423.         if(!QUALSIASI.equals(this.tokenEMail) || !filterGroupByNotSet){
  424.             if(filterGroupByNotSet){
  425.                 if(bf.length()>0){
  426.                     bf.append("\n");
  427.                 }
  428.                 bf.append("\t");
  429.             }
  430.             else{
  431.                 bf.append(" ");
  432.             }
  433.             bf.append("TokenEMail:");
  434.             if(filterGroupByNotSet){
  435.                 bf.append(" ");
  436.             }
  437.             bf.append(this.tokenEMail);
  438.         }
  439.        
  440.         if(!QUALSIASI.equals(this.pdndOrganizationName) || !filterGroupByNotSet){
  441.             if(filterGroupByNotSet){
  442.                 if(bf.length()>0){
  443.                     bf.append("\n");
  444.                 }
  445.                 bf.append("\t");
  446.             }
  447.             else{
  448.                 bf.append(" ");
  449.             }
  450.             bf.append("PDNDOrganizationName:");
  451.             if(filterGroupByNotSet){
  452.                 bf.append(" ");
  453.             }
  454.             bf.append(this.pdndOrganizationName);
  455.         }
  456.        
  457.         if(!QUALSIASI.equals(this.pdndOrganizationExternalId) || !filterGroupByNotSet){
  458.             if(filterGroupByNotSet){
  459.                 if(bf.length()>0){
  460.                     bf.append("\n");
  461.                 }
  462.                 bf.append("\t");
  463.             }
  464.             else{
  465.                 bf.append(" ");
  466.             }
  467.             bf.append("PDNDExternalId:");
  468.             if(filterGroupByNotSet){
  469.                 bf.append(" ");
  470.             }
  471.             bf.append(this.pdndOrganizationExternalId);
  472.         }
  473.        
  474.         if(!QUALSIASI.equals(this.pdndOrganizationConsumerId) || !filterGroupByNotSet){
  475.             if(filterGroupByNotSet){
  476.                 if(bf.length()>0){
  477.                     bf.append("\n");
  478.                 }
  479.                 bf.append("\t");
  480.             }
  481.             else{
  482.                 bf.append(" ");
  483.             }
  484.             bf.append("PDNDConsumerId:");
  485.             if(filterGroupByNotSet){
  486.                 bf.append(" ");
  487.             }
  488.             bf.append(this.pdndOrganizationConsumerId);
  489.         }
  490.        
  491.         if(bf.length()<=0){
  492.             if(filterGroupByNotSet){
  493.                 bf.append("\t");
  494.             }
  495.             bf.append("Disabilitato");
  496.         }
  497.        
  498.         return bf.toString();
  499.     }
  500.    
  501.    
  502.    

  503.    
  504.     public String getRuoloPorta() {
  505.         return this.ruoloPorta;
  506.     }
  507.     public TipoPdD getRuoloPortaAsTipoPdD(){
  508.         if(this.ruoloPorta!=null && !this.ruoloPorta.equals(QUALSIASI)){
  509.             return TipoPdD.toTipoPdD(this.ruoloPorta);
  510.         }
  511.         return null;
  512.     }
  513.    
  514.     public void setRuoloPorta(String ruoloPorta) {
  515.         if(ruoloPorta!=null)
  516.             this.ruoloPorta = ruoloPorta;
  517.     }

  518.     public String getProtocollo() {
  519.         return this.protocollo;
  520.     }
  521.    
  522.     public String getProtocolloIfDefined() {
  523.         if(this.protocollo!=null && !this.protocollo.equals(QUALSIASI) ){
  524.             return this.protocollo;
  525.         }
  526.         return null;
  527.     }

  528.     public void setProtocollo(String protocollo) {
  529.         if(protocollo!=null)
  530.             this.protocollo = protocollo;
  531.     }

  532.     public String getFruitore() {
  533.         return this.fruitore;
  534.     }
  535.    
  536.     public IDSoggetto getFruitoreIfDefined(){
  537.         if(this.fruitore!=null && !this.fruitore.equals(QUALSIASI) && this.fruitore.contains("/")){
  538.             String [] tmp = this.fruitore.split("/");
  539.             if(tmp.length==2){
  540.                 return new IDSoggetto(tmp[0], tmp[1]);
  541.             }
  542.             return null;
  543.         }
  544.         return null;
  545.     }

  546.     public void setFruitore(String fruitore) {
  547.         if(fruitore!=null)
  548.             this.fruitore = fruitore;
  549.     }

  550.     public String getServizioApplicativoFruitore() {
  551.         return this.servizioApplicativoFruitore;
  552.     }
  553.    
  554.     public String getServizioApplicativoFruitoreIfDefined() {
  555.         if(this.servizioApplicativoFruitore!=null && !this.servizioApplicativoFruitore.equals(QUALSIASI) ){
  556.             return this.servizioApplicativoFruitore;
  557.         }
  558.         return null;
  559.     }
  560.    
  561.     public void setServizioApplicativoFruitore(String servizioApplicativoFruitore) {
  562.         if(servizioApplicativoFruitore!=null)
  563.             this.servizioApplicativoFruitore = servizioApplicativoFruitore;
  564.     }
  565.    
  566.     public String getServizioApplicativoToken() {
  567.         return this.servizioApplicativoToken;
  568.     }
  569.    
  570.     public IDServizioApplicativo getServizioApplicativoTokenIfDefined() throws Exception {
  571.         if(this.servizioApplicativoToken!=null && !this.servizioApplicativoToken.equals(QUALSIASI) ){
  572.             // tipoSoggetto/nomeSoggetto/nome
  573.             return IDServizioApplicativo.toIDServizioApplicativo(this.servizioApplicativoToken);
  574.         }
  575.         return null;
  576.     }

  577.     public void setServizioApplicativoToken(IDServizioApplicativo servizioApplicativoToken) {
  578.         if(servizioApplicativoToken!=null)
  579.             this.setServizioApplicativoToken(servizioApplicativoToken.toFormatString());
  580.     }
  581.     public void setServizioApplicativoToken(String servizioApplicativoToken) {
  582.         if(servizioApplicativoToken!=null)
  583.             this.servizioApplicativoToken = servizioApplicativoToken;
  584.     }
  585.    
  586.     public String getErogatore() {
  587.         return this.erogatore;
  588.     }

  589.     public IDSoggetto getErogatoreIfDefined(){
  590.         if(this.erogatore!=null && !this.erogatore.equals(QUALSIASI) && this.erogatore.contains("/")){
  591.             String [] tmp = this.erogatore.split("/");
  592.             if(tmp.length==2){
  593.                 return new IDSoggetto(tmp[0], tmp[1]);
  594.             }
  595.             return null;
  596.         }
  597.         return null;
  598.     }
  599.    
  600.     public void setErogatore(String erogatore) {
  601.         if(erogatore!=null)
  602.             this.erogatore = erogatore;
  603.     }

  604.     public String getServizioApplicativoErogatore() {
  605.         return this.servizioApplicativoErogatore;
  606.     }

  607.     public String getServizioApplicativoErogatoreIfDefined() {
  608.         if(this.servizioApplicativoErogatore!=null && !this.servizioApplicativoErogatore.equals(QUALSIASI) ){
  609.             return this.servizioApplicativoErogatore;
  610.         }
  611.         return null;
  612.     }
  613.    
  614.     public void setServizioApplicativoErogatore(String servizioApplicativoErogatore) {
  615.         if(servizioApplicativoErogatore!=null)
  616.             this.servizioApplicativoErogatore = servizioApplicativoErogatore;
  617.     }

  618.     public String getServizio() {
  619.         return this.servizio;
  620.     }

  621.     @SuppressWarnings("deprecation")
  622.     public IDServizio getServizioIfDefined(){
  623.         if(this.servizio!=null && !this.servizio.equals(QUALSIASI) && this.servizio.contains("/")){
  624.            
  625.             // tipo/nome/versione
  626.            
  627.             String [] tmp = this.servizio.split("/");
  628.             if(tmp.length==3){
  629.                 IDServizio idServizio = new IDServizio();
  630.                 idServizio.setTipo(tmp[0]);
  631.                 idServizio.setNome(tmp[1]);
  632.                 idServizio.setVersione(Integer.parseInt(tmp[2]));
  633.                 return idServizio;
  634.             }
  635.             return null;
  636.         }
  637.         return null;
  638.     }
  639.    
  640.     public void setServizio(String servizio) {
  641.         if(servizio!=null)
  642.             this.servizio = servizio;
  643.     }

  644.     public String getAzione() {
  645.         return this.azione;
  646.     }

  647.     public void setAzione(String azione) {
  648.         if(azione!=null)
  649.             this.azione = azione;
  650.     }

  651.     public String getAzioneIfDefined() {
  652.         if(this.azione!=null && !this.azione.equals(QUALSIASI) ){
  653.             return this.azione;
  654.         }
  655.         return null;
  656.     }
  657.    
  658.     public String getTipoKey() {
  659.         return this.tipoKey;
  660.     }

  661.     public void setTipoKey(String tipoKey) {
  662.         if(tipoKey!=null)
  663.             this.tipoKey = tipoKey;
  664.     }

  665.     public String getNomeKey() {
  666.         return this.nomeKey;
  667.     }

  668.     public void setNomeKey(String nomeKey) {
  669.         if(nomeKey!=null)
  670.             this.nomeKey = nomeKey;
  671.     }

  672.     public String getValoreKey() {
  673.         return this.valoreKey;
  674.     }

  675.     public void setValoreKey(String valoreKey) {
  676.         if(valoreKey!=null)
  677.             this.valoreKey = valoreKey;
  678.     }
  679.    
  680.     public String getIdentificativoAutenticato() {
  681.         return this.identificativoAutenticato;
  682.     }
  683.    
  684.     public String getIdentificativoAutenticatoIfDefined() {
  685.         if(this.identificativoAutenticato!=null && !this.identificativoAutenticato.equals(QUALSIASI) ){
  686.             return this.identificativoAutenticato;
  687.         }
  688.         return null;
  689.     }

  690.     public void setIdentificativoAutenticato(String identificativoAutenticato) {
  691.         if(identificativoAutenticato!=null)
  692.             this.identificativoAutenticato = identificativoAutenticato;
  693.     }
  694.    
  695.    
  696.     public String getTokenSubject() {
  697.         return this.tokenSubject;
  698.     }
  699.    
  700.     public String getTokenSubjectIfDefined() {
  701.         if(this.tokenSubject!=null && !this.tokenSubject.equals(QUALSIASI) ){
  702.             return this.tokenSubject;
  703.         }
  704.         return null;
  705.     }

  706.     public void setTokenSubject(String tokenSubject) {
  707.         if(tokenSubject!=null)
  708.             this.tokenSubject = tokenSubject;
  709.     }
  710.    
  711.    
  712.     public String getTokenIssuer() {
  713.         return this.tokenIssuer;
  714.     }
  715.    
  716.     public String getTokenIssuerIfDefined() {
  717.         if(this.tokenIssuer!=null && !this.tokenIssuer.equals(QUALSIASI) ){
  718.             return this.tokenIssuer;
  719.         }
  720.         return null;
  721.     }

  722.     public void setTokenIssuer(String tokenIssuer) {
  723.         if(tokenIssuer!=null)
  724.             this.tokenIssuer = tokenIssuer;
  725.     }
  726.    
  727.    
  728.     public String getTokenClientId() {
  729.         return this.tokenClientId;
  730.     }
  731.    
  732.     public String getTokenClientIdIfDefined() {
  733.         if(this.tokenClientId!=null && !this.tokenClientId.equals(QUALSIASI) ){
  734.             return this.tokenClientId;
  735.         }
  736.         return null;
  737.     }

  738.     public void setTokenClientId(String tokenClientId) {
  739.         if(tokenClientId!=null)
  740.             this.tokenClientId = tokenClientId;
  741.     }
  742.    
  743.    
  744.     public String getTokenUsername() {
  745.         return this.tokenUsername;
  746.     }
  747.    
  748.     public String getTokenUsernameIfDefined() {
  749.         if(this.tokenUsername!=null && !this.tokenUsername.equals(QUALSIASI) ){
  750.             return this.tokenUsername;
  751.         }
  752.         return null;
  753.     }

  754.     public void setTokenUsername(String tokenUsername) {
  755.         if(tokenUsername!=null)
  756.             this.tokenUsername = tokenUsername;
  757.     }
  758.    
  759.    
  760.     public String getTokenEMail() {
  761.         return this.tokenEMail;
  762.     }
  763.    
  764.     public String getTokenEMailIfDefined() {
  765.         if(this.tokenEMail!=null && !this.tokenEMail.equals(QUALSIASI) ){
  766.             return this.tokenEMail;
  767.         }
  768.         return null;
  769.     }

  770.     public void setTokenEMail(String tokenEMail) {
  771.         if(tokenEMail!=null)
  772.             this.tokenEMail = tokenEMail;
  773.     }
  774.    
  775.    
  776.     public String getPdndOrganizationName() {
  777.         return this.pdndOrganizationName;
  778.     }
  779.    
  780.     public String getPdndOrganizationNameIfDefined() {
  781.         if(this.pdndOrganizationName!=null && !this.pdndOrganizationName.equals(QUALSIASI) ){
  782.             return this.pdndOrganizationName;
  783.         }
  784.         return null;
  785.     }

  786.     public void setPdndOrganizationName(String pdndOrganizationName) {
  787.         if(pdndOrganizationName!=null)
  788.             this.pdndOrganizationName = pdndOrganizationName;
  789.     }
  790.    
  791.    
  792.     public String getPdndOrganizationExternalId() {
  793.         return this.pdndOrganizationExternalId;
  794.     }
  795.    
  796.     public String getPdndOrganizationExternalIdIfDefined() {
  797.         if(this.pdndOrganizationExternalId!=null && !this.pdndOrganizationExternalId.equals(QUALSIASI) ){
  798.             return this.pdndOrganizationExternalId;
  799.         }
  800.         return null;
  801.     }

  802.     public void setPdndOrganizationExternalId(String pdndOrganizationExternalId) {
  803.         if(pdndOrganizationExternalId!=null)
  804.             this.pdndOrganizationExternalId = pdndOrganizationExternalId;
  805.     }
  806.    
  807.    
  808.     public String getPdndOrganizationConsumerId() {
  809.         return this.pdndOrganizationConsumerId;
  810.     }
  811.    
  812.     public String getPdndOrganizationConsumerIdIfDefined() {
  813.         if(this.pdndOrganizationConsumerId!=null && !this.pdndOrganizationConsumerId.equals(QUALSIASI) ){
  814.             return this.pdndOrganizationConsumerId;
  815.         }
  816.         return null;
  817.     }

  818.     public void setPdndOrganizationConsumerId(String pdndOrganizationConsumerId) {
  819.         if(pdndOrganizationConsumerId!=null)
  820.             this.pdndOrganizationConsumerId = pdndOrganizationConsumerId;
  821.     }
  822.    
  823.    
  824.    
  825.     // **** UTILITIES ****
  826.    
  827.     public static String serialize(IDUnivocoGroupByPolicy id){
  828.         StringBuilder bf = new StringBuilder();
  829.        
  830.         bf.append(id.ruoloPorta);
  831.         bf.append("\n");
  832.        
  833.         bf.append(id.protocollo);
  834.         bf.append("\n");
  835.        
  836.         bf.append(id.fruitore);
  837.         bf.append("\n");
  838.        
  839.         bf.append(id.servizioApplicativoFruitore);
  840.         bf.append("\n");
  841.                
  842.         bf.append(id.erogatore);
  843.         bf.append("\n");
  844.        
  845.         bf.append(id.servizioApplicativoErogatore);
  846.         bf.append("\n");
  847.        
  848.         bf.append(id.servizio);
  849.         bf.append("\n");
  850.        
  851.         bf.append(id.azione);
  852.         bf.append("\n");
  853.        
  854.         bf.append(id.tipoKey);
  855.         bf.append("\n");    
  856.         bf.append(id.nomeKey);
  857.         bf.append("\n");
  858.         bf.append(id.valoreKey);
  859.         bf.append("\n");
  860.        
  861.         bf.append(id.identificativoAutenticato);
  862.         bf.append("\n");
  863.        
  864.         bf.append(id.tokenSubject);
  865.         bf.append("\n");
  866.        
  867.         bf.append(id.tokenIssuer);
  868.         bf.append("\n");
  869.        
  870.         bf.append(id.tokenClientId);
  871.         bf.append("\n");
  872.        
  873.         bf.append(id.tokenUsername);
  874.         bf.append("\n");
  875.        
  876.         bf.append(id.tokenEMail);
  877.         bf.append("\n");
  878.            
  879.         if (id instanceof IDUnivocoGroupByPolicyMapId) {
  880.             // Aggiungo un ulteriore campo, per la map unica distribuita sul controllo traffico
  881.             IDUnivocoGroupByPolicyMapId v = (IDUnivocoGroupByPolicyMapId) id;
  882.             bf.append(v.getUniqueMapId());
  883.         }
  884.         else {
  885.             bf.append(QUALSIASI); // valore ignorato; piu' facile la gestione per future aggiunte
  886.         }
  887.         bf.append("\n");
  888.    
  889.         bf.append(id.servizioApplicativoToken);
  890.        
  891.         bf.append("\n");
  892.        
  893.         bf.append(id.pdndOrganizationName);
  894.        
  895.         bf.append("\n");
  896.        
  897.         bf.append(id.pdndOrganizationExternalId);
  898.        
  899.         bf.append("\n");
  900.        
  901.         bf.append(id.pdndOrganizationConsumerId);
  902.        
  903.         return bf.toString();
  904.     }
  905.    
  906.     public static IDUnivocoGroupByPolicy deserialize(String s) throws CoreException{
  907.         String [] tmp = s.split("\n");
  908.         if(tmp==null){
  909.             throw new CoreException("Wrong Format");
  910.         }
  911.         int oldLength = 11;
  912.         int newLength = oldLength+1+5; // nella 3.1.0 aggiunto idAutenticato e 5 token claims
  913.         int newLength2 = newLength+1;   // Aggiunto uniqueMapId
  914.         int newLength3 = newLength2+1;  // nella 3.3.8 aggiunto servizioApplicativoToken
  915.         int newLength4 = newLength3+1;  // nella 3.3.15 aggiunto pdndOrganizationName
  916.         int newLength5 = newLength4+2;  // nella 3.3.16.p2 aggiunto pdndOrganizationExternalId e pdndOrganizationConsumerId
  917.        
  918.         if(tmp.length!=oldLength && tmp.length!=newLength && tmp.length!=newLength2 && tmp.length!=newLength3 && tmp.length!=newLength4  && tmp.length!=newLength5){
  919.             throw new CoreException("Wrong Format (size: "+tmp.length+")");
  920.         }
  921.        
  922.         boolean idUnivocoGroupBy = false;
  923.         boolean length2ConIdUnivocoGroupBy = false;
  924.         boolean lengthGreaterEquals3 = false;
  925.         int posizioneIdGroupBy = newLength2-1;
  926.         if(tmp.length==newLength2) {
  927.             // potrebbe esserci sia il PolicyMapId (vecchie serializzazioni dove si aggiungeva solo se era) o l'applicativo token
  928.             String value = tmp[posizioneIdGroupBy];
  929.             length2ConIdUnivocoGroupBy = value!=null && value.contains("@"); // l'active policy contiene il @, mentre il servizio applicativo 2 '/'
  930.             if(length2ConIdUnivocoGroupBy) {
  931.                 idUnivocoGroupBy = true;
  932.             }
  933.         }
  934.         else if(tmp.length>=newLength3) {
  935.             // l'informazione sul PolicyMapId viene sempre aggiunta, ma viene valorizzata a QUALSIASI se non รจ effettivamente una PolicyMapId
  936.             String value = tmp[posizioneIdGroupBy];
  937.             idUnivocoGroupBy = value!=null && !QUALSIASI.equals(value);
  938.             lengthGreaterEquals3 = true;
  939.         }
  940.        
  941.         IDUnivocoGroupByPolicy id = null;
  942.         if(idUnivocoGroupBy) {
  943.             id = new IDUnivocoGroupByPolicyMapId();
  944.         }
  945.         else {
  946.             id = new IDUnivocoGroupByPolicy();
  947.         }
  948.        
  949.         for (int i = 0; i < tmp.length; i++) {
  950.             if(i==0){
  951.                 id.ruoloPorta = tmp[i].trim();
  952.             }
  953.             else if(i==1){
  954.                 id.protocollo = tmp[i].trim();
  955.             }
  956.             else if(i==2){
  957.                 id.fruitore = tmp[i].trim();
  958.             }
  959.             else if(i==3){
  960.                 id.servizioApplicativoFruitore = tmp[i].trim();
  961.             }
  962.             else if(i==4){
  963.                 id.erogatore = tmp[i].trim();
  964.             }
  965.             else if(i==5){
  966.                 id.servizioApplicativoErogatore = tmp[i].trim();
  967.             }
  968.             else if(i==6){
  969.                 id.servizio = tmp[i].trim();
  970.             }
  971.             else if(i==7){
  972.                 id.azione = tmp[i].trim();
  973.             }
  974.             else if(i==8){
  975.                 id.tipoKey = tmp[i].trim();
  976.             }
  977.             else if(i==9){
  978.                 id.nomeKey = tmp[i].trim();
  979.             }
  980.             else if(i==10){
  981.                 id.valoreKey = tmp[i].trim();
  982.             }
  983.             else if(i==11){
  984.                 id.identificativoAutenticato = tmp[i].trim();
  985.             }
  986.             else if(i==12){
  987.                 id.tokenSubject = tmp[i].trim();
  988.             }
  989.             else if(i==13){
  990.                 id.tokenIssuer = tmp[i].trim();
  991.             }
  992.             else if(i==14){
  993.                 id.tokenClientId = tmp[i].trim();
  994.             }
  995.             else if(i==15){
  996.                 id.tokenUsername = tmp[i].trim();
  997.             }
  998.             else if(i==16){
  999.                 id.tokenEMail = tmp[i].trim();
  1000.             }          
  1001.             else if(i==17){
  1002.                 if(length2ConIdUnivocoGroupBy) {
  1003.                     ((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
  1004.                 }
  1005.                 else {
  1006.                     if(lengthGreaterEquals3) {
  1007.                         if(idUnivocoGroupBy) {
  1008.                             ((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
  1009.                         }
  1010.                         else {
  1011.                             // ignoro (serializzato con QUALSIASI)
  1012.                         }
  1013.                     }
  1014.                     else {
  1015.                         id.servizioApplicativoToken = tmp[i].trim();
  1016.                     }
  1017.                 }
  1018.             }
  1019.             else if(i==18){
  1020.                 id.servizioApplicativoToken = tmp[i].trim();
  1021.             }
  1022.             else if(i==19){
  1023.                 id.pdndOrganizationName = tmp[i].trim();
  1024.             }
  1025.             else if(i==20){
  1026.                 id.pdndOrganizationExternalId = tmp[i].trim();
  1027.             }
  1028.             else if(i==21){
  1029.                 id.pdndOrganizationConsumerId = tmp[i].trim();
  1030.             }
  1031.         }
  1032.         return id;
  1033.     }
  1034. }