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.    

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

  463.    
  464.     public String getRuoloPorta() {
  465.         return this.ruoloPorta;
  466.     }
  467.     public TipoPdD getRuoloPortaAsTipoPdD(){
  468.         if(this.ruoloPorta!=null && !this.ruoloPorta.equals(QUALSIASI)){
  469.             return TipoPdD.toTipoPdD(this.ruoloPorta);
  470.         }
  471.         return null;
  472.     }
  473.    
  474.     public void setRuoloPorta(String ruoloPorta) {
  475.         if(ruoloPorta!=null)
  476.             this.ruoloPorta = ruoloPorta;
  477.     }

  478.     public String getProtocollo() {
  479.         return this.protocollo;
  480.     }
  481.    
  482.     public String getProtocolloIfDefined() {
  483.         if(this.protocollo!=null && !this.protocollo.equals(QUALSIASI) ){
  484.             return this.protocollo;
  485.         }
  486.         return null;
  487.     }

  488.     public void setProtocollo(String protocollo) {
  489.         if(protocollo!=null)
  490.             this.protocollo = protocollo;
  491.     }

  492.     public String getFruitore() {
  493.         return this.fruitore;
  494.     }
  495.    
  496.     public IDSoggetto getFruitoreIfDefined(){
  497.         if(this.fruitore!=null && !this.fruitore.equals(QUALSIASI) && this.fruitore.contains("/")){
  498.             String [] tmp = this.fruitore.split("/");
  499.             if(tmp.length==2){
  500.                 return new IDSoggetto(tmp[0], tmp[1]);
  501.             }
  502.             return null;
  503.         }
  504.         return null;
  505.     }

  506.     public void setFruitore(String fruitore) {
  507.         if(fruitore!=null)
  508.             this.fruitore = fruitore;
  509.     }

  510.     public String getServizioApplicativoFruitore() {
  511.         return this.servizioApplicativoFruitore;
  512.     }
  513.    
  514.     public String getServizioApplicativoFruitoreIfDefined() {
  515.         if(this.servizioApplicativoFruitore!=null && !this.servizioApplicativoFruitore.equals(QUALSIASI) ){
  516.             return this.servizioApplicativoFruitore;
  517.         }
  518.         return null;
  519.     }
  520.    
  521.     public void setServizioApplicativoFruitore(String servizioApplicativoFruitore) {
  522.         if(servizioApplicativoFruitore!=null)
  523.             this.servizioApplicativoFruitore = servizioApplicativoFruitore;
  524.     }
  525.    
  526.     public String getServizioApplicativoToken() {
  527.         return this.servizioApplicativoToken;
  528.     }
  529.    
  530.     public IDServizioApplicativo getServizioApplicativoTokenIfDefined() throws Exception {
  531.         if(this.servizioApplicativoToken!=null && !this.servizioApplicativoToken.equals(QUALSIASI) ){
  532.             // tipoSoggetto/nomeSoggetto/nome
  533.             return IDServizioApplicativo.toIDServizioApplicativo(this.servizioApplicativoToken);
  534.         }
  535.         return null;
  536.     }

  537.     public void setServizioApplicativoToken(IDServizioApplicativo servizioApplicativoToken) {
  538.         if(servizioApplicativoToken!=null)
  539.             this.setServizioApplicativoToken(servizioApplicativoToken.toFormatString());
  540.     }
  541.     public void setServizioApplicativoToken(String servizioApplicativoToken) {
  542.         if(servizioApplicativoToken!=null)
  543.             this.servizioApplicativoToken = servizioApplicativoToken;
  544.     }
  545.    
  546.     public String getErogatore() {
  547.         return this.erogatore;
  548.     }

  549.     public IDSoggetto getErogatoreIfDefined(){
  550.         if(this.erogatore!=null && !this.erogatore.equals(QUALSIASI) && this.erogatore.contains("/")){
  551.             String [] tmp = this.erogatore.split("/");
  552.             if(tmp.length==2){
  553.                 return new IDSoggetto(tmp[0], tmp[1]);
  554.             }
  555.             return null;
  556.         }
  557.         return null;
  558.     }
  559.    
  560.     public void setErogatore(String erogatore) {
  561.         if(erogatore!=null)
  562.             this.erogatore = erogatore;
  563.     }

  564.     public String getServizioApplicativoErogatore() {
  565.         return this.servizioApplicativoErogatore;
  566.     }

  567.     public String getServizioApplicativoErogatoreIfDefined() {
  568.         if(this.servizioApplicativoErogatore!=null && !this.servizioApplicativoErogatore.equals(QUALSIASI) ){
  569.             return this.servizioApplicativoErogatore;
  570.         }
  571.         return null;
  572.     }
  573.    
  574.     public void setServizioApplicativoErogatore(String servizioApplicativoErogatore) {
  575.         if(servizioApplicativoErogatore!=null)
  576.             this.servizioApplicativoErogatore = servizioApplicativoErogatore;
  577.     }

  578.     public String getServizio() {
  579.         return this.servizio;
  580.     }

  581.     @SuppressWarnings("deprecation")
  582.     public IDServizio getServizioIfDefined(){
  583.         if(this.servizio!=null && !this.servizio.equals(QUALSIASI) && this.servizio.contains("/")){
  584.            
  585.             // tipo/nome/versione
  586.            
  587.             String [] tmp = this.servizio.split("/");
  588.             if(tmp.length==3){
  589.                 IDServizio idServizio = new IDServizio();
  590.                 idServizio.setTipo(tmp[0]);
  591.                 idServizio.setNome(tmp[1]);
  592.                 idServizio.setVersione(Integer.parseInt(tmp[2]));
  593.                 return idServizio;
  594.             }
  595.             return null;
  596.         }
  597.         return null;
  598.     }
  599.    
  600.     public void setServizio(String servizio) {
  601.         if(servizio!=null)
  602.             this.servizio = servizio;
  603.     }

  604.     public String getAzione() {
  605.         return this.azione;
  606.     }

  607.     public void setAzione(String azione) {
  608.         if(azione!=null)
  609.             this.azione = azione;
  610.     }

  611.     public String getAzioneIfDefined() {
  612.         if(this.azione!=null && !this.azione.equals(QUALSIASI) ){
  613.             return this.azione;
  614.         }
  615.         return null;
  616.     }
  617.    
  618.     public String getTipoKey() {
  619.         return this.tipoKey;
  620.     }

  621.     public void setTipoKey(String tipoKey) {
  622.         if(tipoKey!=null)
  623.             this.tipoKey = tipoKey;
  624.     }

  625.     public String getNomeKey() {
  626.         return this.nomeKey;
  627.     }

  628.     public void setNomeKey(String nomeKey) {
  629.         if(nomeKey!=null)
  630.             this.nomeKey = nomeKey;
  631.     }

  632.     public String getValoreKey() {
  633.         return this.valoreKey;
  634.     }

  635.     public void setValoreKey(String valoreKey) {
  636.         if(valoreKey!=null)
  637.             this.valoreKey = valoreKey;
  638.     }
  639.    
  640.     public String getIdentificativoAutenticato() {
  641.         return this.identificativoAutenticato;
  642.     }
  643.    
  644.     public String getIdentificativoAutenticatoIfDefined() {
  645.         if(this.identificativoAutenticato!=null && !this.identificativoAutenticato.equals(QUALSIASI) ){
  646.             return this.identificativoAutenticato;
  647.         }
  648.         return null;
  649.     }

  650.     public void setIdentificativoAutenticato(String identificativoAutenticato) {
  651.         if(identificativoAutenticato!=null)
  652.             this.identificativoAutenticato = identificativoAutenticato;
  653.     }
  654.    
  655.    
  656.     public String getTokenSubject() {
  657.         return this.tokenSubject;
  658.     }
  659.    
  660.     public String getTokenSubjectIfDefined() {
  661.         if(this.tokenSubject!=null && !this.tokenSubject.equals(QUALSIASI) ){
  662.             return this.tokenSubject;
  663.         }
  664.         return null;
  665.     }

  666.     public void setTokenSubject(String tokenSubject) {
  667.         if(tokenSubject!=null)
  668.             this.tokenSubject = tokenSubject;
  669.     }
  670.    
  671.    
  672.     public String getTokenIssuer() {
  673.         return this.tokenIssuer;
  674.     }
  675.    
  676.     public String getTokenIssuerIfDefined() {
  677.         if(this.tokenIssuer!=null && !this.tokenIssuer.equals(QUALSIASI) ){
  678.             return this.tokenIssuer;
  679.         }
  680.         return null;
  681.     }

  682.     public void setTokenIssuer(String tokenIssuer) {
  683.         if(tokenIssuer!=null)
  684.             this.tokenIssuer = tokenIssuer;
  685.     }
  686.    
  687.    
  688.     public String getTokenClientId() {
  689.         return this.tokenClientId;
  690.     }
  691.    
  692.     public String getTokenClientIdIfDefined() {
  693.         if(this.tokenClientId!=null && !this.tokenClientId.equals(QUALSIASI) ){
  694.             return this.tokenClientId;
  695.         }
  696.         return null;
  697.     }

  698.     public void setTokenClientId(String tokenClientId) {
  699.         if(tokenClientId!=null)
  700.             this.tokenClientId = tokenClientId;
  701.     }
  702.    
  703.    
  704.     public String getTokenUsername() {
  705.         return this.tokenUsername;
  706.     }
  707.    
  708.     public String getTokenUsernameIfDefined() {
  709.         if(this.tokenUsername!=null && !this.tokenUsername.equals(QUALSIASI) ){
  710.             return this.tokenUsername;
  711.         }
  712.         return null;
  713.     }

  714.     public void setTokenUsername(String tokenUsername) {
  715.         if(tokenUsername!=null)
  716.             this.tokenUsername = tokenUsername;
  717.     }
  718.    
  719.    
  720.     public String getTokenEMail() {
  721.         return this.tokenEMail;
  722.     }
  723.    
  724.     public String getTokenEMailIfDefined() {
  725.         if(this.tokenEMail!=null && !this.tokenEMail.equals(QUALSIASI) ){
  726.             return this.tokenEMail;
  727.         }
  728.         return null;
  729.     }

  730.     public void setTokenEMail(String tokenEMail) {
  731.         if(tokenEMail!=null)
  732.             this.tokenEMail = tokenEMail;
  733.     }
  734.    
  735.    
  736.     public String getPdndOrganizationName() {
  737.         return this.pdndOrganizationName;
  738.     }
  739.    
  740.     public String getPdndOrganizationNameIfDefined() {
  741.         if(this.pdndOrganizationName!=null && !this.pdndOrganizationName.equals(QUALSIASI) ){
  742.             return this.pdndOrganizationName;
  743.         }
  744.         return null;
  745.     }

  746.     public void setPdndOrganizationName(String pdndOrganizationName) {
  747.         if(pdndOrganizationName!=null)
  748.             this.pdndOrganizationName = pdndOrganizationName;
  749.     }
  750.    
  751.    
  752.    
  753.     // **** UTILITIES ****
  754.    
  755.     public static String serialize(IDUnivocoGroupByPolicy id){
  756.         StringBuilder bf = new StringBuilder();
  757.        
  758.         bf.append(id.ruoloPorta);
  759.         bf.append("\n");
  760.        
  761.         bf.append(id.protocollo);
  762.         bf.append("\n");
  763.        
  764.         bf.append(id.fruitore);
  765.         bf.append("\n");
  766.        
  767.         bf.append(id.servizioApplicativoFruitore);
  768.         bf.append("\n");
  769.                
  770.         bf.append(id.erogatore);
  771.         bf.append("\n");
  772.        
  773.         bf.append(id.servizioApplicativoErogatore);
  774.         bf.append("\n");
  775.        
  776.         bf.append(id.servizio);
  777.         bf.append("\n");
  778.        
  779.         bf.append(id.azione);
  780.         bf.append("\n");
  781.        
  782.         bf.append(id.tipoKey);
  783.         bf.append("\n");    
  784.         bf.append(id.nomeKey);
  785.         bf.append("\n");
  786.         bf.append(id.valoreKey);
  787.         bf.append("\n");
  788.        
  789.         bf.append(id.identificativoAutenticato);
  790.         bf.append("\n");
  791.        
  792.         bf.append(id.tokenSubject);
  793.         bf.append("\n");
  794.        
  795.         bf.append(id.tokenIssuer);
  796.         bf.append("\n");
  797.        
  798.         bf.append(id.tokenClientId);
  799.         bf.append("\n");
  800.        
  801.         bf.append(id.tokenUsername);
  802.         bf.append("\n");
  803.        
  804.         bf.append(id.tokenEMail);
  805.         bf.append("\n");
  806.            
  807.         if (id instanceof IDUnivocoGroupByPolicyMapId) {
  808.             // Aggiungo un ulteriore campo, per la map unica distribuita sul controllo traffico
  809.             IDUnivocoGroupByPolicyMapId v = (IDUnivocoGroupByPolicyMapId) id;
  810.             bf.append(v.getUniqueMapId());
  811.         }
  812.         else {
  813.             bf.append(QUALSIASI); // valore ignorato; piu' facile la gestione per future aggiunte
  814.         }
  815.         bf.append("\n");
  816.    
  817.         bf.append(id.servizioApplicativoToken);
  818.        
  819.         bf.append("\n");
  820.        
  821.         bf.append(id.pdndOrganizationName);
  822.        
  823.         return bf.toString();
  824.     }
  825.    
  826.     public static IDUnivocoGroupByPolicy deserialize(String s) throws CoreException{
  827.         String [] tmp = s.split("\n");
  828.         if(tmp==null){
  829.             throw new CoreException("Wrong Format");
  830.         }
  831.         int oldLength = 11;
  832.         int newLength = oldLength+1+5; // nella 3.1.0 aggiunto idAutenticato e 5 token claims
  833.         int newLength2 = newLength+1;   // Aggiunto uniqueMapId
  834.         int newLength3 = newLength2+1;  // nella 3.3.8 aggiunto servizioApplicativoToken
  835.         int newLength4 = newLength3+1;  // nella 3.3.15 aggiunto pdndOrganizationName
  836.        
  837.         if(tmp.length!=oldLength && tmp.length!=newLength && tmp.length!=newLength2 && tmp.length!=newLength3 && tmp.length!=newLength4){
  838.             throw new CoreException("Wrong Format (size: "+tmp.length+")");
  839.         }
  840.        
  841.         boolean idUnivocoGroupBy = false;
  842.         boolean length2ConIdUnivocoGroupBy = false;
  843.         boolean lengthGreaterEquals3 = false;
  844.         int posizioneIdGroupBy = newLength2-1;
  845.         if(tmp.length==newLength2) {
  846.             // potrebbe esserci sia il PolicyMapId (vecchie serializzazioni dove si aggiungeva solo se era) o l'applicativo token
  847.             String value = tmp[posizioneIdGroupBy];
  848.             length2ConIdUnivocoGroupBy = value!=null && value.contains("@"); // l'active policy contiene il @, mentre il servizio applicativo 2 '/'
  849.             if(length2ConIdUnivocoGroupBy) {
  850.                 idUnivocoGroupBy = true;
  851.             }
  852.         }
  853.         else if(tmp.length>=newLength3) {
  854.             // l'informazione sul PolicyMapId viene sempre aggiunta, ma viene valorizzata a QUALSIASI se non รจ effettivamente una PolicyMapId
  855.             String value = tmp[posizioneIdGroupBy];
  856.             idUnivocoGroupBy = value!=null && !QUALSIASI.equals(value);
  857.             lengthGreaterEquals3 = true;
  858.         }
  859.        
  860.         IDUnivocoGroupByPolicy id = null;
  861.         if(idUnivocoGroupBy) {
  862.             id = new IDUnivocoGroupByPolicyMapId();
  863.         }
  864.         else {
  865.             id = new IDUnivocoGroupByPolicy();
  866.         }
  867.        
  868.         for (int i = 0; i < tmp.length; i++) {
  869.             if(i==0){
  870.                 id.ruoloPorta = tmp[i].trim();
  871.             }
  872.             else if(i==1){
  873.                 id.protocollo = tmp[i].trim();
  874.             }
  875.             else if(i==2){
  876.                 id.fruitore = tmp[i].trim();
  877.             }
  878.             else if(i==3){
  879.                 id.servizioApplicativoFruitore = tmp[i].trim();
  880.             }
  881.             else if(i==4){
  882.                 id.erogatore = tmp[i].trim();
  883.             }
  884.             else if(i==5){
  885.                 id.servizioApplicativoErogatore = tmp[i].trim();
  886.             }
  887.             else if(i==6){
  888.                 id.servizio = tmp[i].trim();
  889.             }
  890.             else if(i==7){
  891.                 id.azione = tmp[i].trim();
  892.             }
  893.             else if(i==8){
  894.                 id.tipoKey = tmp[i].trim();
  895.             }
  896.             else if(i==9){
  897.                 id.nomeKey = tmp[i].trim();
  898.             }
  899.             else if(i==10){
  900.                 id.valoreKey = tmp[i].trim();
  901.             }
  902.             else if(i==11){
  903.                 id.identificativoAutenticato = tmp[i].trim();
  904.             }
  905.             else if(i==12){
  906.                 id.tokenSubject = tmp[i].trim();
  907.             }
  908.             else if(i==13){
  909.                 id.tokenIssuer = tmp[i].trim();
  910.             }
  911.             else if(i==14){
  912.                 id.tokenClientId = tmp[i].trim();
  913.             }
  914.             else if(i==15){
  915.                 id.tokenUsername = tmp[i].trim();
  916.             }
  917.             else if(i==16){
  918.                 id.tokenEMail = tmp[i].trim();
  919.             }          
  920.             else if(i==17){
  921.                 if(length2ConIdUnivocoGroupBy) {
  922.                     ((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
  923.                 }
  924.                 else {
  925.                     if(lengthGreaterEquals3) {
  926.                         if(idUnivocoGroupBy) {
  927.                             ((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
  928.                         }
  929.                         else {
  930.                             // ignoro (serializzato con QUALSIASI)
  931.                         }
  932.                     }
  933.                     else {
  934.                         id.servizioApplicativoToken = tmp[i].trim();
  935.                     }
  936.                 }
  937.             }
  938.             else if(i==18){
  939.                 id.servizioApplicativoToken = tmp[i].trim();
  940.             }
  941.             else if(i==19){
  942.                 id.pdndOrganizationName = tmp[i].trim();
  943.             }
  944.         }
  945.         return id;
  946.     }
  947. }