IDUnivocoGroupByPolicy.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.controllo_traffico.beans;
import java.io.Serializable;
import org.openspcoop2.core.commons.CoreException;
import org.openspcoop2.core.constants.TipoPdD;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.id.IDSoggetto;
/**
* IDUnivocoGroupByPolicy
*
* @author Andrea Poli (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class IDUnivocoGroupByPolicy implements IDUnivocoGroupBy<IDUnivocoGroupByPolicy>, Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final String QUALSIASI = "*";
private String ruoloPorta = QUALSIASI;
private String protocollo = QUALSIASI;
private String fruitore = QUALSIASI;
private String servizioApplicativoFruitore = QUALSIASI;
private String servizioApplicativoToken = QUALSIASI;
private String erogatore = QUALSIASI;
private String servizioApplicativoErogatore = QUALSIASI;
private String servizio = QUALSIASI;
private String azione = QUALSIASI;
private String tipoKey = QUALSIASI;
private String nomeKey = QUALSIASI;
private String valoreKey = QUALSIASI;
private String identificativoAutenticato = QUALSIASI;
private String tokenSubject = QUALSIASI;
private String tokenIssuer = QUALSIASI;
private String tokenUsername = QUALSIASI;
private String tokenClientId = QUALSIASI;
private String tokenEMail = QUALSIASI;
private String pdndOrganizationName = QUALSIASI;
@Override
public boolean match(IDUnivocoGroupByPolicy filtro){
return
this.ruoloPorta.equals(filtro.getRuoloPorta())
&&
this.protocollo.equals(filtro.getProtocollo())
&&
this.fruitore.equals(filtro.getFruitore())
&&
this.servizioApplicativoFruitore.equals(filtro.getServizioApplicativoFruitore())
&&
this.servizioApplicativoToken.equals(filtro.getServizioApplicativoToken())
&&
this.erogatore.equals(filtro.getErogatore())
&&
this.servizioApplicativoErogatore.equals(filtro.getServizioApplicativoErogatore())
&&
this.servizio.equals(filtro.getServizio())
&&
this.azione.equals(filtro.getAzione())
&&
this.tipoKey.equals(filtro.getTipoKey())
&&
this.nomeKey.equals(filtro.getNomeKey())
&&
this.valoreKey.equals(filtro.getValoreKey())
&&
this.identificativoAutenticato.equals(filtro.getIdentificativoAutenticato())
&&
this.tokenSubject.equals(filtro.getTokenSubject())
&&
this.tokenIssuer.equals(filtro.getTokenIssuer())
&&
this.tokenClientId.equals(filtro.getTokenClientId())
&&
this.tokenUsername.equals(filtro.getTokenUsername())
&&
this.tokenEMail.equals(filtro.getTokenEMail())
&&
this.pdndOrganizationName.equals(filtro.getPdndOrganizationName())
;
}
@Override
public boolean equals(Object param){
if(!(param instanceof IDUnivocoGroupByPolicy))
return false;
IDUnivocoGroupByPolicy id = (IDUnivocoGroupByPolicy) param;
return this.match(id);
}
// Utile per usare l'oggetto in hashtable come chiave
@Override
public int hashCode(){
return this.toString().hashCode();
}
@Override
public String toString(){
return this.toString(false);
}
public String toString(boolean filterGroupByNotSet){
StringBuilder bf = new StringBuilder();
if(!QUALSIASI.equals(this.ruoloPorta) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
bf.append("RuoloPorta:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.ruoloPorta);
}
if(!QUALSIASI.equals(this.protocollo) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Protocollo:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.protocollo);
}
if(!QUALSIASI.equals(this.fruitore) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Fruitore:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.fruitore);
}
if(!QUALSIASI.equals(this.servizioApplicativoFruitore) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Applicativo:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.servizioApplicativoFruitore);
}
if(!QUALSIASI.equals(this.servizioApplicativoToken) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("ApplicativoToken:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.servizioApplicativoToken);
}
if(!QUALSIASI.equals(this.erogatore) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Erogatore:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.erogatore);
}
if(!QUALSIASI.equals(this.servizioApplicativoErogatore) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("ApplicativoErogatore:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.servizioApplicativoErogatore);
}
if(!QUALSIASI.equals(this.servizio) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("API:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.servizio);
}
if(!QUALSIASI.equals(this.azione) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Azione:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.azione);
}
if(!QUALSIASI.equals(this.tipoKey) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TipoKey:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tipoKey);
}
if(!QUALSIASI.equals(this.nomeKey) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("NomeKey:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.nomeKey);
}
if(!QUALSIASI.equals(this.valoreKey) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("ValoreKey:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.valoreKey);
}
if(!QUALSIASI.equals(this.identificativoAutenticato) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("Credenziali:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.identificativoAutenticato);
}
if(!QUALSIASI.equals(this.tokenSubject) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TokenSubject:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tokenSubject);
}
if(!QUALSIASI.equals(this.tokenIssuer) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TokenIssuer:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tokenIssuer);
}
if(!QUALSIASI.equals(this.tokenClientId) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TokenClientId:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tokenClientId);
}
if(!QUALSIASI.equals(this.tokenUsername) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TokenUsername:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tokenUsername);
}
if(!QUALSIASI.equals(this.tokenEMail) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("TokenEMail:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.tokenEMail);
}
if(!QUALSIASI.equals(this.pdndOrganizationName) || !filterGroupByNotSet){
if(filterGroupByNotSet){
if(bf.length()>0){
bf.append("\n");
}
bf.append("\t");
}
else{
bf.append(" ");
}
bf.append("PDNDOrganizationName:");
if(filterGroupByNotSet){
bf.append(" ");
}
bf.append(this.pdndOrganizationName);
}
if(bf.length()<=0){
if(filterGroupByNotSet){
bf.append("\t");
}
bf.append("Disabilitato");
}
return bf.toString();
}
public String getRuoloPorta() {
return this.ruoloPorta;
}
public TipoPdD getRuoloPortaAsTipoPdD(){
if(this.ruoloPorta!=null && !this.ruoloPorta.equals(QUALSIASI)){
return TipoPdD.toTipoPdD(this.ruoloPorta);
}
return null;
}
public void setRuoloPorta(String ruoloPorta) {
if(ruoloPorta!=null)
this.ruoloPorta = ruoloPorta;
}
public String getProtocollo() {
return this.protocollo;
}
public String getProtocolloIfDefined() {
if(this.protocollo!=null && !this.protocollo.equals(QUALSIASI) ){
return this.protocollo;
}
return null;
}
public void setProtocollo(String protocollo) {
if(protocollo!=null)
this.protocollo = protocollo;
}
public String getFruitore() {
return this.fruitore;
}
public IDSoggetto getFruitoreIfDefined(){
if(this.fruitore!=null && !this.fruitore.equals(QUALSIASI) && this.fruitore.contains("/")){
String [] tmp = this.fruitore.split("/");
if(tmp.length==2){
return new IDSoggetto(tmp[0], tmp[1]);
}
return null;
}
return null;
}
public void setFruitore(String fruitore) {
if(fruitore!=null)
this.fruitore = fruitore;
}
public String getServizioApplicativoFruitore() {
return this.servizioApplicativoFruitore;
}
public String getServizioApplicativoFruitoreIfDefined() {
if(this.servizioApplicativoFruitore!=null && !this.servizioApplicativoFruitore.equals(QUALSIASI) ){
return this.servizioApplicativoFruitore;
}
return null;
}
public void setServizioApplicativoFruitore(String servizioApplicativoFruitore) {
if(servizioApplicativoFruitore!=null)
this.servizioApplicativoFruitore = servizioApplicativoFruitore;
}
public String getServizioApplicativoToken() {
return this.servizioApplicativoToken;
}
public IDServizioApplicativo getServizioApplicativoTokenIfDefined() throws Exception {
if(this.servizioApplicativoToken!=null && !this.servizioApplicativoToken.equals(QUALSIASI) ){
// tipoSoggetto/nomeSoggetto/nome
return IDServizioApplicativo.toIDServizioApplicativo(this.servizioApplicativoToken);
}
return null;
}
public void setServizioApplicativoToken(IDServizioApplicativo servizioApplicativoToken) {
if(servizioApplicativoToken!=null)
this.setServizioApplicativoToken(servizioApplicativoToken.toFormatString());
}
public void setServizioApplicativoToken(String servizioApplicativoToken) {
if(servizioApplicativoToken!=null)
this.servizioApplicativoToken = servizioApplicativoToken;
}
public String getErogatore() {
return this.erogatore;
}
public IDSoggetto getErogatoreIfDefined(){
if(this.erogatore!=null && !this.erogatore.equals(QUALSIASI) && this.erogatore.contains("/")){
String [] tmp = this.erogatore.split("/");
if(tmp.length==2){
return new IDSoggetto(tmp[0], tmp[1]);
}
return null;
}
return null;
}
public void setErogatore(String erogatore) {
if(erogatore!=null)
this.erogatore = erogatore;
}
public String getServizioApplicativoErogatore() {
return this.servizioApplicativoErogatore;
}
public String getServizioApplicativoErogatoreIfDefined() {
if(this.servizioApplicativoErogatore!=null && !this.servizioApplicativoErogatore.equals(QUALSIASI) ){
return this.servizioApplicativoErogatore;
}
return null;
}
public void setServizioApplicativoErogatore(String servizioApplicativoErogatore) {
if(servizioApplicativoErogatore!=null)
this.servizioApplicativoErogatore = servizioApplicativoErogatore;
}
public String getServizio() {
return this.servizio;
}
@SuppressWarnings("deprecation")
public IDServizio getServizioIfDefined(){
if(this.servizio!=null && !this.servizio.equals(QUALSIASI) && this.servizio.contains("/")){
// tipo/nome/versione
String [] tmp = this.servizio.split("/");
if(tmp.length==3){
IDServizio idServizio = new IDServizio();
idServizio.setTipo(tmp[0]);
idServizio.setNome(tmp[1]);
idServizio.setVersione(Integer.parseInt(tmp[2]));
return idServizio;
}
return null;
}
return null;
}
public void setServizio(String servizio) {
if(servizio!=null)
this.servizio = servizio;
}
public String getAzione() {
return this.azione;
}
public void setAzione(String azione) {
if(azione!=null)
this.azione = azione;
}
public String getAzioneIfDefined() {
if(this.azione!=null && !this.azione.equals(QUALSIASI) ){
return this.azione;
}
return null;
}
public String getTipoKey() {
return this.tipoKey;
}
public void setTipoKey(String tipoKey) {
if(tipoKey!=null)
this.tipoKey = tipoKey;
}
public String getNomeKey() {
return this.nomeKey;
}
public void setNomeKey(String nomeKey) {
if(nomeKey!=null)
this.nomeKey = nomeKey;
}
public String getValoreKey() {
return this.valoreKey;
}
public void setValoreKey(String valoreKey) {
if(valoreKey!=null)
this.valoreKey = valoreKey;
}
public String getIdentificativoAutenticato() {
return this.identificativoAutenticato;
}
public String getIdentificativoAutenticatoIfDefined() {
if(this.identificativoAutenticato!=null && !this.identificativoAutenticato.equals(QUALSIASI) ){
return this.identificativoAutenticato;
}
return null;
}
public void setIdentificativoAutenticato(String identificativoAutenticato) {
if(identificativoAutenticato!=null)
this.identificativoAutenticato = identificativoAutenticato;
}
public String getTokenSubject() {
return this.tokenSubject;
}
public String getTokenSubjectIfDefined() {
if(this.tokenSubject!=null && !this.tokenSubject.equals(QUALSIASI) ){
return this.tokenSubject;
}
return null;
}
public void setTokenSubject(String tokenSubject) {
if(tokenSubject!=null)
this.tokenSubject = tokenSubject;
}
public String getTokenIssuer() {
return this.tokenIssuer;
}
public String getTokenIssuerIfDefined() {
if(this.tokenIssuer!=null && !this.tokenIssuer.equals(QUALSIASI) ){
return this.tokenIssuer;
}
return null;
}
public void setTokenIssuer(String tokenIssuer) {
if(tokenIssuer!=null)
this.tokenIssuer = tokenIssuer;
}
public String getTokenClientId() {
return this.tokenClientId;
}
public String getTokenClientIdIfDefined() {
if(this.tokenClientId!=null && !this.tokenClientId.equals(QUALSIASI) ){
return this.tokenClientId;
}
return null;
}
public void setTokenClientId(String tokenClientId) {
if(tokenClientId!=null)
this.tokenClientId = tokenClientId;
}
public String getTokenUsername() {
return this.tokenUsername;
}
public String getTokenUsernameIfDefined() {
if(this.tokenUsername!=null && !this.tokenUsername.equals(QUALSIASI) ){
return this.tokenUsername;
}
return null;
}
public void setTokenUsername(String tokenUsername) {
if(tokenUsername!=null)
this.tokenUsername = tokenUsername;
}
public String getTokenEMail() {
return this.tokenEMail;
}
public String getTokenEMailIfDefined() {
if(this.tokenEMail!=null && !this.tokenEMail.equals(QUALSIASI) ){
return this.tokenEMail;
}
return null;
}
public void setTokenEMail(String tokenEMail) {
if(tokenEMail!=null)
this.tokenEMail = tokenEMail;
}
public String getPdndOrganizationName() {
return this.pdndOrganizationName;
}
public String getPdndOrganizationNameIfDefined() {
if(this.pdndOrganizationName!=null && !this.pdndOrganizationName.equals(QUALSIASI) ){
return this.pdndOrganizationName;
}
return null;
}
public void setPdndOrganizationName(String pdndOrganizationName) {
if(pdndOrganizationName!=null)
this.pdndOrganizationName = pdndOrganizationName;
}
// **** UTILITIES ****
public static String serialize(IDUnivocoGroupByPolicy id){
StringBuilder bf = new StringBuilder();
bf.append(id.ruoloPorta);
bf.append("\n");
bf.append(id.protocollo);
bf.append("\n");
bf.append(id.fruitore);
bf.append("\n");
bf.append(id.servizioApplicativoFruitore);
bf.append("\n");
bf.append(id.erogatore);
bf.append("\n");
bf.append(id.servizioApplicativoErogatore);
bf.append("\n");
bf.append(id.servizio);
bf.append("\n");
bf.append(id.azione);
bf.append("\n");
bf.append(id.tipoKey);
bf.append("\n");
bf.append(id.nomeKey);
bf.append("\n");
bf.append(id.valoreKey);
bf.append("\n");
bf.append(id.identificativoAutenticato);
bf.append("\n");
bf.append(id.tokenSubject);
bf.append("\n");
bf.append(id.tokenIssuer);
bf.append("\n");
bf.append(id.tokenClientId);
bf.append("\n");
bf.append(id.tokenUsername);
bf.append("\n");
bf.append(id.tokenEMail);
bf.append("\n");
if (id instanceof IDUnivocoGroupByPolicyMapId) {
// Aggiungo un ulteriore campo, per la map unica distribuita sul controllo traffico
IDUnivocoGroupByPolicyMapId v = (IDUnivocoGroupByPolicyMapId) id;
bf.append(v.getUniqueMapId());
}
else {
bf.append(QUALSIASI); // valore ignorato; piu' facile la gestione per future aggiunte
}
bf.append("\n");
bf.append(id.servizioApplicativoToken);
bf.append("\n");
bf.append(id.pdndOrganizationName);
return bf.toString();
}
public static IDUnivocoGroupByPolicy deserialize(String s) throws CoreException{
String [] tmp = s.split("\n");
if(tmp==null){
throw new CoreException("Wrong Format");
}
int oldLength = 11;
int newLength = oldLength+1+5; // nella 3.1.0 aggiunto idAutenticato e 5 token claims
int newLength2 = newLength+1; // Aggiunto uniqueMapId
int newLength3 = newLength2+1; // nella 3.3.8 aggiunto servizioApplicativoToken
int newLength4 = newLength3+1; // nella 3.3.15 aggiunto pdndOrganizationName
if(tmp.length!=oldLength && tmp.length!=newLength && tmp.length!=newLength2 && tmp.length!=newLength3 && tmp.length!=newLength4){
throw new CoreException("Wrong Format (size: "+tmp.length+")");
}
boolean idUnivocoGroupBy = false;
boolean length2ConIdUnivocoGroupBy = false;
boolean lengthGreaterEquals3 = false;
int posizioneIdGroupBy = newLength2-1;
if(tmp.length==newLength2) {
// potrebbe esserci sia il PolicyMapId (vecchie serializzazioni dove si aggiungeva solo se era) o l'applicativo token
String value = tmp[posizioneIdGroupBy];
length2ConIdUnivocoGroupBy = value!=null && value.contains("@"); // l'active policy contiene il @, mentre il servizio applicativo 2 '/'
if(length2ConIdUnivocoGroupBy) {
idUnivocoGroupBy = true;
}
}
else if(tmp.length>=newLength3) {
// l'informazione sul PolicyMapId viene sempre aggiunta, ma viene valorizzata a QUALSIASI se non รจ effettivamente una PolicyMapId
String value = tmp[posizioneIdGroupBy];
idUnivocoGroupBy = value!=null && !QUALSIASI.equals(value);
lengthGreaterEquals3 = true;
}
IDUnivocoGroupByPolicy id = null;
if(idUnivocoGroupBy) {
id = new IDUnivocoGroupByPolicyMapId();
}
else {
id = new IDUnivocoGroupByPolicy();
}
for (int i = 0; i < tmp.length; i++) {
if(i==0){
id.ruoloPorta = tmp[i].trim();
}
else if(i==1){
id.protocollo = tmp[i].trim();
}
else if(i==2){
id.fruitore = tmp[i].trim();
}
else if(i==3){
id.servizioApplicativoFruitore = tmp[i].trim();
}
else if(i==4){
id.erogatore = tmp[i].trim();
}
else if(i==5){
id.servizioApplicativoErogatore = tmp[i].trim();
}
else if(i==6){
id.servizio = tmp[i].trim();
}
else if(i==7){
id.azione = tmp[i].trim();
}
else if(i==8){
id.tipoKey = tmp[i].trim();
}
else if(i==9){
id.nomeKey = tmp[i].trim();
}
else if(i==10){
id.valoreKey = tmp[i].trim();
}
else if(i==11){
id.identificativoAutenticato = tmp[i].trim();
}
else if(i==12){
id.tokenSubject = tmp[i].trim();
}
else if(i==13){
id.tokenIssuer = tmp[i].trim();
}
else if(i==14){
id.tokenClientId = tmp[i].trim();
}
else if(i==15){
id.tokenUsername = tmp[i].trim();
}
else if(i==16){
id.tokenEMail = tmp[i].trim();
}
else if(i==17){
if(length2ConIdUnivocoGroupBy) {
((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
}
else {
if(lengthGreaterEquals3) {
if(idUnivocoGroupBy) {
((IDUnivocoGroupByPolicyMapId) id).setUniqueMapId(tmp[i].trim());
}
else {
// ignoro (serializzato con QUALSIASI)
}
}
else {
id.servizioApplicativoToken = tmp[i].trim();
}
}
}
else if(i==18){
id.servizioApplicativoToken = tmp[i].trim();
}
else if(i==19){
id.pdndOrganizationName = tmp[i].trim();
}
}
return id;
}
}