RegistryReader.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.protocol.basic.registry;

  21. import java.lang.reflect.InvocationTargetException;
  22. import java.util.List;

  23. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  24. import org.openspcoop2.core.id.IDAccordo;
  25. import org.openspcoop2.core.id.IDAccordoAzione;
  26. import org.openspcoop2.core.id.IDAccordoCooperazione;
  27. import org.openspcoop2.core.id.IDFruizione;
  28. import org.openspcoop2.core.id.IDGruppo;
  29. import org.openspcoop2.core.id.IDPortType;
  30. import org.openspcoop2.core.id.IDPortTypeAzione;
  31. import org.openspcoop2.core.id.IDResource;
  32. import org.openspcoop2.core.id.IDRuolo;
  33. import org.openspcoop2.core.id.IDScope;
  34. import org.openspcoop2.core.id.IDServizio;
  35. import org.openspcoop2.core.id.IDSoggetto;
  36. import org.openspcoop2.core.registry.AccordoCooperazione;
  37. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  38. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  39. import org.openspcoop2.core.registry.Azione;
  40. import org.openspcoop2.core.registry.Operation;
  41. import org.openspcoop2.core.registry.PortType;
  42. import org.openspcoop2.core.registry.PortaDominio;
  43. import org.openspcoop2.core.registry.Resource;
  44. import org.openspcoop2.core.registry.Soggetto;
  45. import org.openspcoop2.core.registry.constants.PddTipologia;
  46. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  47. import org.openspcoop2.core.registry.driver.FiltroRicerca;
  48. import org.openspcoop2.core.registry.driver.FiltroRicercaProtocolPropertyRegistry;
  49. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  50. import org.openspcoop2.core.registry.driver.IDriverRegistroServiziCRUD;
  51. import org.openspcoop2.core.registry.driver.IDriverRegistroServiziGet;
  52. import org.openspcoop2.core.registry.driver.db.DriverRegistroServiziDB;
  53. import org.openspcoop2.protocol.registry.RegistroServizi;
  54. import org.openspcoop2.protocol.sdk.constants.InformationApiSource;
  55. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaAccordi;
  56. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaAccordoAzioni;
  57. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaFruizioniServizio;
  58. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaGruppi;
  59. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaPortType;
  60. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaPortTypeAzioni;
  61. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaRisorse;
  62. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaRuoli;
  63. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaScope;
  64. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaServizi;
  65. import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaSoggetti;
  66. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  67. import org.openspcoop2.protocol.sdk.registry.IRegistryReaderInUso;
  68. import org.openspcoop2.protocol.sdk.registry.RegistryException;
  69. import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
  70. import org.openspcoop2.protocol.utils.ProtocolUtils;
  71. import org.openspcoop2.utils.UtilsRuntimeException;
  72. import org.openspcoop2.utils.certificate.CertificateInfo;
  73. import org.openspcoop2.utils.crypt.CryptConfig;
  74. import org.openspcoop2.utils.resources.Loader;
  75. import org.slf4j.Logger;

  76. /**
  77.  *  ArchiveRegistryReader
  78.  *
  79.  * @author Poli Andrea (apoli@link.it)
  80.  * @author $Author$
  81.  * @version $Rev$, $Date$
  82.  */
  83. public class RegistryReader implements IRegistryReader {

  84.     private IDriverRegistroServiziGet driverRegistroServiziGET;
  85.     private IDriverRegistroServiziCRUD driverRegistroServiziCRUD;
  86.    
  87.     private RegistroServizi registroServiziWithoutCache; // serve per implementare metodi di lettura delle interfacce API
  88.    
  89.     private IRegistryReaderInUso inUsoDriver = null;
  90.    
  91.     private Logger log;
  92.     public RegistryReader(IDriverRegistroServiziGet driverRegistroServizi, Logger log) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
  93.         this.driverRegistroServiziGET = driverRegistroServizi;
  94.         if(this.driverRegistroServiziGET instanceof IDriverRegistroServiziCRUD){
  95.             this.driverRegistroServiziCRUD = (IDriverRegistroServiziCRUD) this.driverRegistroServiziGET;
  96.         }
  97.        
  98.         this.log = log;
  99.        
  100.         Loader loader = new Loader();
  101.         this.inUsoDriver = (IRegistryReaderInUso) loader.newInstance("org.openspcoop2.protocol.engine.registry.RegistryReaderInUso");
  102.         this.inUsoDriver.init(this.driverRegistroServiziGET, log);
  103.     }
  104.    
  105.     private synchronized void initRegistroServiziWithoutCache() throws RegistryException {
  106.         try {
  107.             if(this.registroServiziWithoutCache==null) {
  108.                 this.registroServiziWithoutCache = new RegistroServizi(this.driverRegistroServiziGET, this.log, true, CostantiConfigurazione.REGISTRO_DB.getValue());
  109.             }
  110.         }catch(Exception e) {
  111.             throw new RegistryException(e.getMessage(),e);
  112.         }
  113.     }
  114.    
  115.     public RegistroServizi getRegistroServiziWithoutCache() throws RegistryException {
  116.         if(this.registroServiziWithoutCache==null) {
  117.             this.initRegistroServiziWithoutCache();
  118.         }
  119.         return this.registroServiziWithoutCache;
  120.     }
  121.    
  122.    
  123.     // PDD
  124.    
  125.     @Override
  126.     public boolean existsPortaDominio(String nome){
  127.         try{
  128.             if(this.driverRegistroServiziCRUD!=null){
  129.                 return this.driverRegistroServiziCRUD.existsPortaDominio(nome);
  130.             }
  131.             else{
  132.                 return this.driverRegistroServiziGET.getPortaDominio(nome)!=null;
  133.             }
  134.         }catch(Exception e){
  135.             return false;
  136.         }
  137.     }
  138.    
  139.     @Override
  140.     public PortaDominio getPortaDominio(String nome) throws RegistryNotFound,RegistryException{
  141.         try{
  142.             return this.driverRegistroServiziGET.getPortaDominio(nome);
  143.         } catch (DriverRegistroServiziNotFound de) {
  144.             throw new RegistryNotFound(de.getMessage(),de);
  145.         }catch(Exception e){
  146.             throw new RegistryException(e.getMessage(),e);
  147.         }
  148.     }
  149.    
  150.     @Override
  151.     public List<String> findIdPorteDominio(Boolean operativo) throws RegistryNotFound,RegistryException{
  152.         try{
  153.             FiltroRicerca filtroRicerca = new FiltroRicerca();
  154.             if(operativo!=null){
  155.                 if(operativo){
  156.                     filtroRicerca.setTipo(PddTipologia.OPERATIVO.toString());
  157.                 }
  158.                 else{
  159.                     filtroRicerca.setTipo(PddTipologia.ESTERNO.toString());
  160.                 }
  161.             }
  162.             return this.driverRegistroServiziGET.getAllIdPorteDominio(filtroRicerca);
  163.         } catch (DriverRegistroServiziNotFound de) {
  164.             throw new RegistryNotFound(de.getMessage(),de);
  165.         }catch(Exception e){
  166.             throw new RegistryException(e.getMessage(),e);
  167.         }
  168.     }
  169.    
  170.    
  171.    
  172.     // SOGGETTI
  173.    
  174.     @Override
  175.     public boolean existsSoggettoByCodiceIPA(String codiceIPA) {
  176.         try{
  177.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  178.                 return ((DriverRegistroServiziDB)this.driverRegistroServiziGET).existsSoggetto(codiceIPA);
  179.             }
  180.             else{
  181.                 throw new UtilsRuntimeException("Not Implemented");
  182.             }
  183.         }catch(Exception e){
  184.             return false;
  185.         }
  186.        
  187.     }

  188.     @Override
  189.     public boolean existsSoggetto(IDSoggetto idSoggetto) {
  190.         try{
  191.             if(this.driverRegistroServiziCRUD!=null){
  192.                 return this.driverRegistroServiziCRUD.existsSoggetto(idSoggetto);
  193.             }
  194.             else{
  195.                 return this.driverRegistroServiziGET.getSoggetto(idSoggetto)!=null;
  196.             }
  197.         }catch(Exception e){
  198.             return false;
  199.         }
  200.     }

  201.     @Override
  202.     public IDSoggetto getIdSoggettoByCodiceIPA(String codiceIPA)
  203.             throws RegistryNotFound,RegistryException {
  204.         try{
  205.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  206.                 Soggetto s = ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getSoggetto(codiceIPA);
  207.                 return new IDSoggetto(s.getTipo(), s.getNome(), s.getIdentificativoPorta());
  208.             }
  209.             else{
  210.                 throw new UtilsRuntimeException("Not Implemented");
  211.             }
  212.         } catch (DriverRegistroServiziNotFound de) {
  213.             throw new RegistryNotFound(de.getMessage(),de);
  214.         }catch(Exception e){
  215.             throw new RegistryException(e.getMessage(),e);
  216.         }
  217.     }
  218.    
  219.     @Override
  220.     public IDSoggetto getIdSoggettoDefault(String tipoSoggettoDefault) throws RegistryNotFound,RegistryException{
  221.         try{
  222.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  223.                 List<IDSoggetto> list = ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getSoggettiDefault();
  224.                 if(list!=null && !list.isEmpty()) {
  225.                     for (IDSoggetto idSoggetto : list) {
  226.                         if(idSoggetto.getTipo().equals(tipoSoggettoDefault)) {
  227.                             return idSoggetto;
  228.                         }
  229.                     }
  230.                 }
  231.                 throw new DriverRegistroServiziNotFound("Soggetto di default per il tipo '"+tipoSoggettoDefault+"' non trovato");
  232.             }
  233.             else{
  234.                 throw new UtilsRuntimeException("Not Implemented");
  235.             }
  236.         } catch (DriverRegistroServiziNotFound de) {
  237.             throw new RegistryNotFound(de.getMessage(),de);
  238.         }catch(Exception e){
  239.             throw new RegistryException(e.getMessage(),e);
  240.         }
  241.     }

  242.     @Override
  243.     public String getCodiceIPA(IDSoggetto idSoggetto) throws RegistryNotFound,RegistryException {
  244.         try{
  245.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  246.                 return ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getCodiceIPA(idSoggetto);
  247.             }
  248.             else{
  249.                 throw new UtilsRuntimeException("Not Implemented");
  250.             }
  251.         } catch (DriverRegistroServiziNotFound de) {
  252.             throw new RegistryNotFound(de.getMessage(),de);
  253.         }catch(Exception e){
  254.             throw new RegistryException(e.getMessage(),e);
  255.         }
  256.     }

  257.     @Override
  258.     public String getDominio(IDSoggetto idSoggetto) throws RegistryNotFound,RegistryException{
  259.         try{
  260.             return this.getSoggetto(idSoggetto).getIdentificativoPorta();
  261.         } catch (RegistryNotFound de) {
  262.             throw de;
  263.         }catch(Exception e){
  264.             throw new RegistryException(e.getMessage(),e);
  265.         }
  266.     }
  267.    
  268.     @Override
  269.     public Soggetto getSoggetto(IDSoggetto idSoggetto) throws RegistryNotFound,RegistryException {
  270.         try{
  271.             return this.driverRegistroServiziGET.getSoggetto(idSoggetto);
  272.         } catch (DriverRegistroServiziNotFound de) {
  273.             throw new RegistryNotFound(de.getMessage(),de);
  274.         }catch(Exception e){
  275.             throw new RegistryException(e.getMessage(),e);
  276.         }
  277.     }
  278.    
  279.     @Override
  280.     public boolean existsSoggettoByCredenzialiBasic(String username, String password, CryptConfig cryptConfig){
  281.         try{
  282.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiBasic(username, password, cryptConfig)!=null;
  283.         }catch(Exception e){
  284.             return false;
  285.         }
  286.     }
  287.    
  288.     @Override
  289.     public Soggetto getSoggettoByCredenzialiBasic(String username, String password, CryptConfig cryptConfig) throws RegistryNotFound,RegistryException{
  290.         try{
  291.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiBasic(username, password, cryptConfig);
  292.         } catch (DriverRegistroServiziNotFound de) {
  293.             throw new RegistryNotFound(de.getMessage(),de);
  294.         }catch(Exception e){
  295.             throw new RegistryException(e.getMessage(),e);
  296.         }
  297.     }
  298.    
  299.     @Override
  300.     public boolean existsSoggettoByCredenzialiSsl(String subject, String issuer){
  301.         try{
  302.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiSsl(subject, issuer)!=null;
  303.         }catch(Exception e){
  304.             return false;
  305.         }
  306.     }
  307.    
  308.     @Override
  309.     public Soggetto getSoggettoByCredenzialiSsl(String subject, String issuer) throws RegistryNotFound,RegistryException{
  310.         try{
  311.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiSsl(subject, issuer);
  312.         } catch (DriverRegistroServiziNotFound de) {
  313.             throw new RegistryNotFound(de.getMessage(),de);
  314.         }catch(Exception e){
  315.             throw new RegistryException(e.getMessage(),e);
  316.         }
  317.     }
  318.    
  319.     @Override
  320.     public boolean existsSoggettoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier){
  321.         try{
  322.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiSsl(certificate, strictVerifier)!=null;
  323.         }catch(Exception e){
  324.             return false;
  325.         }
  326.     }
  327.    
  328.     @Override
  329.     public Soggetto getSoggettoByCredenzialiSsl(CertificateInfo certificate, boolean strictVerifier) throws RegistryNotFound,RegistryException{
  330.         try{
  331.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiSsl(certificate, strictVerifier);
  332.         } catch (DriverRegistroServiziNotFound de) {
  333.             throw new RegistryNotFound(de.getMessage(),de);
  334.         }catch(Exception e){
  335.             throw new RegistryException(e.getMessage(),e);
  336.         }
  337.     }
  338.    
  339.     @Override
  340.     public boolean existsSoggettoByCredenzialiPrincipal(String principal){
  341.         try{
  342.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiPrincipal(principal)!=null;
  343.         }catch(Exception e){
  344.             return false;
  345.         }
  346.     }
  347.    
  348.     @Override
  349.     public Soggetto getSoggettoByCredenzialiPrincipal(String principal) throws RegistryNotFound,RegistryException{
  350.         try{
  351.             return this.driverRegistroServiziGET.getSoggettoByCredenzialiPrincipal(principal);
  352.         } catch (DriverRegistroServiziNotFound de) {
  353.             throw new RegistryNotFound(de.getMessage(),de);
  354.         }catch(Exception e){
  355.             throw new RegistryException(e.getMessage(),e);
  356.         }
  357.     }
  358.    
  359.     @Override
  360.     public List<IDSoggetto> findIdSoggetti(ProtocolFiltroRicercaSoggetti filtro) throws RegistryNotFound,RegistryException{
  361.         try{
  362.             org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti();
  363.             if(filtro.getTipo()!=null){
  364.                 filtroDriver.setTipo(filtro.getTipo());
  365.             }
  366.             if(filtro.getNome()!=null){
  367.                 filtroDriver.setNome(filtro.getNome());
  368.             }
  369.             if(filtro.getNomePdd()!=null){
  370.                 filtroDriver.setNomePdd(filtro.getNomePdd());
  371.             }
  372.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  373.             if(listPP!=null && !listPP.isEmpty()){
  374.                 filtroDriver.setProtocolProperties(listPP);
  375.             }
  376.             if(filtro.getProprieta()!=null && !filtro.getProprieta().isEmpty()) {
  377.                 filtroDriver.setProprieta(filtro.getProprieta());
  378.             }
  379.             return this.driverRegistroServiziGET.getAllIdSoggetti(filtroDriver);
  380.         } catch (DriverRegistroServiziNotFound de) {
  381.             throw new RegistryNotFound(de.getMessage(),de);
  382.         }catch(Exception e){
  383.             throw new RegistryException(e.getMessage(),e);
  384.         }
  385.     }
  386.    
  387.     @Override
  388.     public boolean inUso(IDSoggetto idSoggetto, boolean verificaRuoli) throws RegistryException{
  389.         return this.inUsoDriver.inUso(idSoggetto, verificaRuoli);
  390.     }
  391.     @Override
  392.     public String getDettagliInUso(IDSoggetto idSoggetto, boolean verificaRuoli) throws RegistryException{
  393.         return this.inUsoDriver.getDettagliInUso(idSoggetto, verificaRuoli);
  394.     }
  395.    
  396.    
  397.     // ACCORDI PARTE COMUNE
  398.    
  399.     @Override
  400.     public AccordoServizioParteComune getAccordoServizioParteComune(
  401.             IDAccordo idAccordo) throws RegistryNotFound,RegistryException {
  402.         try{
  403.             return this.driverRegistroServiziGET.getAccordoServizioParteComune(idAccordo);
  404.         } catch (DriverRegistroServiziNotFound de) {
  405.             throw new RegistryNotFound(de.getMessage(),de);
  406.         }catch(Exception e){
  407.             throw new RegistryException(e.getMessage(),e);
  408.         }
  409.     }

  410.     @Override
  411.     public AccordoServizioParteComune getAccordoServizioParteComune(
  412.             IDAccordo idAccordo, boolean readAllegati,boolean readDatiRegistro) throws RegistryNotFound,RegistryException {
  413.         try{
  414.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  415.                 return ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getAccordoServizioParteComune(idAccordo,readAllegati,readDatiRegistro);
  416.             }
  417.             else{
  418.                 return this.getAccordoServizioParteComune(idAccordo);
  419.             }
  420.         } catch (DriverRegistroServiziNotFound de) {
  421.             throw new RegistryNotFound(de.getMessage(),de);
  422.         }catch(Exception e){
  423.             throw new RegistryException(e.getMessage(),e);
  424.         }
  425.     }
  426.    
  427.     @Override
  428.     public List<IDAccordo> findIdAccordiServizioParteComune(ProtocolFiltroRicercaAccordi filtro) throws RegistryNotFound,RegistryException{
  429.         try{
  430.             org.openspcoop2.core.registry.driver.FiltroRicercaAccordi filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaAccordi();
  431.             if(filtro.getNome()!=null){
  432.                 filtroDriver.setNomeAccordo(filtro.getNome());
  433.             }
  434.             if(filtro.getVersione()!=null){
  435.                 filtroDriver.setVersione(filtro.getVersione());
  436.             }
  437.             if(filtro.getSoggetto()!=null){
  438.                 if(filtro.getSoggetto().getTipo()!=null){
  439.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  440.                 }
  441.                 if(filtro.getSoggetto().getNome()!=null){
  442.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  443.                 }
  444.             }
  445.             if(filtro.getServiceBinding()!=null) {
  446.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  447.             }
  448.             if(filtro.getIdGruppo()!=null) {
  449.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  450.             }
  451.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  452.             if(listPP!=null && !listPP.isEmpty()){
  453.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  454.             }  
  455.             if(filtro.getEscludiServiziComposti()!=null){
  456.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  457.             }
  458.             if(filtro.getEscludiServiziNonComposti()!=null){
  459.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  460.             }

  461.             return this.driverRegistroServiziGET.getAllIdAccordiServizioParteComune(filtroDriver);
  462.         } catch (DriverRegistroServiziNotFound de) {
  463.             throw new RegistryNotFound(de.getMessage(),de);
  464.         }catch(Exception e){
  465.             throw new RegistryException(e.getMessage(),e);
  466.         }
  467.     }
  468.    
  469.     @Override
  470.     public org.openspcoop2.core.registry.wsdl.AccordoServizioWrapper getAccordoServizioParteComuneSoap(IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchema, boolean readDatiRegistro) throws RegistryNotFound,RegistryException{
  471.         try {
  472.              RegistroServizi registro = getRegistroServiziWithoutCache();
  473.              return registro.getWsdlAccordoServizio(null, null, idService, infoWsdlSource, buildSchema, readDatiRegistro);
  474.         } catch (DriverRegistroServiziNotFound de) {
  475.             throw new RegistryNotFound(de.getMessage(),de);
  476.         }catch(Exception e){
  477.             throw new RegistryException(e.getMessage(),e);
  478.         }
  479.     }
  480.    
  481.     @Override
  482.     public org.openspcoop2.core.registry.rest.AccordoServizioWrapper getAccordoServizioParteComuneRest(IDServizio idService,InformationApiSource infoWsdlSource,boolean buildSchema, boolean processIncludeForOpenApi, boolean readDatiRegistro) throws RegistryNotFound,RegistryException{
  483.         try {
  484.              RegistroServizi registro = getRegistroServiziWithoutCache();
  485.              return registro.getRestAccordoServizio(null, null, idService, infoWsdlSource, buildSchema, processIncludeForOpenApi, readDatiRegistro);
  486.         } catch (DriverRegistroServiziNotFound de) {
  487.             throw new RegistryNotFound(de.getMessage(),de);
  488.         }catch(Exception e){
  489.             throw new RegistryException(e.getMessage(),e);
  490.         }
  491.     }
  492.    
  493.     @Override
  494.     public boolean inUso(IDAccordo idAccordo) throws RegistryException{
  495.         return this.inUsoDriver.inUso(idAccordo);
  496.     }
  497.     @Override
  498.     public String getDettagliInUso(IDAccordo idAccordo) throws RegistryException{
  499.         return this.inUsoDriver.getDettagliInUso(idAccordo);
  500.     }
  501.    
  502.    
  503.    
  504.     // ELEMENTI INTERNI ALL'ACCORDO PARTE COMUNE
  505.    
  506.     @Override
  507.     public PortType getPortType(IDPortType id) throws RegistryNotFound,RegistryException{
  508.         try{
  509.             AccordoServizioParteComune as = this.driverRegistroServiziGET.getAccordoServizioParteComune(id.getIdAccordo());
  510.             for (PortType pt : as.getPortTypeList()) {
  511.                 if(pt.getNome().equals(id.getNome())){
  512.                     return pt;
  513.                 }
  514.             }
  515.             throw new DriverRegistroServiziNotFound("PortType ["+id.getNome()+"] non trovato nell'accordo ["+IDAccordoFactory.getInstance().getUriFromIDAccordo(id.getIdAccordo())+"]");
  516.         } catch (DriverRegistroServiziNotFound de) {
  517.             throw new RegistryNotFound(de.getMessage(),de);
  518.         }catch(Exception e){
  519.             throw new RegistryException(e.getMessage(),e);
  520.         }
  521.     }
  522.    
  523.     @Override
  524.     public List<IDPortType> findIdPortType(ProtocolFiltroRicercaPortType filtro) throws RegistryNotFound,RegistryException{
  525.         try{
  526.             org.openspcoop2.core.registry.driver.FiltroRicercaPortTypes filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaPortTypes();
  527.            
  528.             // portType
  529.             if(filtro.getNomePortType()!=null){
  530.                 filtroDriver.setNomePortType(filtro.getNomePortType());
  531.             }
  532.             List<FiltroRicercaProtocolPropertyRegistry> listPPportTypes = ProtocolUtils.convert(filtro.getProtocolPropertiesPortType());
  533.             if(listPPportTypes!=null && !listPPportTypes.isEmpty()){
  534.                 filtroDriver.setProtocolPropertiesPortType(listPPportTypes);
  535.             }  
  536.            
  537.             // accordo
  538.             if(filtro.getNome()!=null){
  539.                 filtroDriver.setNomeAccordo(filtro.getNome());
  540.             }
  541.             if(filtro.getVersione()!=null){
  542.                 filtroDriver.setVersione(filtro.getVersione());
  543.             }
  544.             if(filtro.getSoggetto()!=null){
  545.                 if(filtro.getSoggetto().getTipo()!=null){
  546.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  547.                 }
  548.                 if(filtro.getSoggetto().getNome()!=null){
  549.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  550.                 }
  551.             }
  552.             if(filtro.getServiceBinding()!=null) {
  553.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  554.             }
  555.             if(filtro.getIdGruppo()!=null) {
  556.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  557.             }
  558.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  559.             if(listPP!=null && !listPP.isEmpty()){
  560.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  561.             }  
  562.             if(filtro.getEscludiServiziComposti()!=null){
  563.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  564.             }
  565.             if(filtro.getEscludiServiziNonComposti()!=null){
  566.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  567.             }

  568.             return this.driverRegistroServiziGET.getAllIdPortType(filtroDriver);
  569.         } catch (DriverRegistroServiziNotFound de) {
  570.             throw new RegistryNotFound(de.getMessage(),de);
  571.         }catch(Exception e){
  572.             throw new RegistryException(e.getMessage(),e);
  573.         }
  574.     }
  575.    
  576.     @Override
  577.     public boolean inUso(IDPortType id) throws RegistryException{
  578.         return this.inUsoDriver.inUso(id);
  579.     }
  580.     @Override
  581.     public String getDettagliInUso(IDPortType id) throws RegistryException{
  582.         return this.inUsoDriver.getDettagliInUso(id);
  583.     }
  584.    
  585.     @Override
  586.     public Operation getAzionePortType(IDPortTypeAzione id) throws RegistryNotFound,RegistryException{
  587.         PortType portType = this.getPortType(id.getIdPortType());
  588.         for (Operation opCheck : portType.getAzioneList()) {
  589.             if(opCheck.getNome().equals(id.getNome())){
  590.                 return opCheck;
  591.             }
  592.         }

  593.         String uriAccordo = null;
  594.         try{
  595.             uriAccordo = IDAccordoFactory.getInstance().getUriFromIDAccordo(id.getIdPortType().getIdAccordo());
  596.         }catch(Exception e){
  597.             uriAccordo = id.getIdPortType().getIdAccordo().toString();
  598.         }
  599.         throw new RegistryNotFound("Azione ["+id.getNome()+"] non trovata all'interno del PortType ["+id.getIdPortType().getNome()+
  600.                     "] dell'accordo ["+uriAccordo+"]");
  601.     }
  602.    
  603.     @Override
  604.     public List<IDPortTypeAzione> findIdAzionePortType(ProtocolFiltroRicercaPortTypeAzioni filtro) throws RegistryNotFound,RegistryException{
  605.         try{
  606.             org.openspcoop2.core.registry.driver.FiltroRicercaOperations filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaOperations();
  607.            
  608.             // operation
  609.             if(filtro.getNomeAzione()!=null){
  610.                 filtroDriver.setNomeAzione(filtro.getNomeAzione());
  611.             }
  612.             List<FiltroRicercaProtocolPropertyRegistry> listPPazioni = ProtocolUtils.convert(filtro.getProtocolPropertiesAzione());
  613.             if(listPPazioni!=null && !listPPazioni.isEmpty()){
  614.                 filtroDriver.setProtocolPropertiesAzione(listPPazioni);
  615.             }  
  616.            
  617.             // portType
  618.             if(filtro.getNomePortType()!=null){
  619.                 filtroDriver.setNomePortType(filtro.getNomePortType());
  620.             }
  621.             List<FiltroRicercaProtocolPropertyRegistry> listPPportTypes = ProtocolUtils.convert(filtro.getProtocolPropertiesPortType());
  622.             if(listPPportTypes!=null && !listPPportTypes.isEmpty()){
  623.                 filtroDriver.setProtocolPropertiesPortType(listPPportTypes);
  624.             }  
  625.            
  626.             // accordo
  627.             if(filtro.getNome()!=null){
  628.                 filtroDriver.setNomeAccordo(filtro.getNome());
  629.             }
  630.             if(filtro.getVersione()!=null){
  631.                 filtroDriver.setVersione(filtro.getVersione());
  632.             }
  633.             if(filtro.getSoggetto()!=null){
  634.                 if(filtro.getSoggetto().getTipo()!=null){
  635.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  636.                 }
  637.                 if(filtro.getSoggetto().getNome()!=null){
  638.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  639.                 }
  640.             }
  641.             if(filtro.getServiceBinding()!=null) {
  642.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  643.             }
  644.             if(filtro.getIdGruppo()!=null) {
  645.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  646.             }
  647.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  648.             if(listPP!=null && !listPP.isEmpty()){
  649.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  650.             }  
  651.             if(filtro.getEscludiServiziComposti()!=null){
  652.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  653.             }
  654.             if(filtro.getEscludiServiziNonComposti()!=null){
  655.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  656.             }

  657.             return this.driverRegistroServiziGET.getAllIdAzionePortType(filtroDriver);
  658.         } catch (DriverRegistroServiziNotFound de) {
  659.             throw new RegistryNotFound(de.getMessage(),de);
  660.         }catch(Exception e){
  661.             throw new RegistryException(e.getMessage(),e);
  662.         }
  663.     }
  664.    
  665.     @Override
  666.     public boolean inUso(IDPortTypeAzione id) throws RegistryException{
  667.         return this.inUsoDriver.inUso(id);
  668.     }
  669.     @Override
  670.     public String getDettagliInUso(IDPortTypeAzione id) throws RegistryException{
  671.         return this.inUsoDriver.getDettagliInUso(id);
  672.     }
  673.    
  674.     @Override
  675.     public Azione getAzioneAccordo(IDAccordoAzione id) throws RegistryNotFound,RegistryException{
  676.         AccordoServizioParteComune as = this.getAccordoServizioParteComune(id.getIdAccordo());
  677.         for (Azione azCheck : as.getAzioneList()) {
  678.             if(azCheck.getNome().equals(id.getNome())){
  679.                 return azCheck;
  680.             }
  681.         }

  682.         String uriAccordo = null;
  683.         try{
  684.             uriAccordo = IDAccordoFactory.getInstance().getUriFromIDAccordo(id.getIdAccordo());
  685.         }catch(Exception e){
  686.             uriAccordo = id.getIdAccordo().toString();
  687.         }
  688.         throw new RegistryNotFound("Azione ["+id.getNome()+"] non trovata all'interno dell'accordo ["+uriAccordo+"]");
  689.     }
  690.    
  691.     @Override
  692.     public List<IDAccordoAzione> findIdAzioneAccordo(ProtocolFiltroRicercaAccordoAzioni filtro) throws RegistryNotFound,RegistryException{
  693.         try{
  694.             org.openspcoop2.core.registry.driver.FiltroRicercaAzioni filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaAzioni();
  695.            
  696.             // azioni
  697.             if(filtro.getNomeAzione()!=null){
  698.                 filtroDriver.setNomeAzione(filtro.getNomeAzione());
  699.             }
  700.             List<FiltroRicercaProtocolPropertyRegistry> listPPazioni = ProtocolUtils.convert(filtro.getProtocolPropertiesAzione());
  701.             if(listPPazioni!=null && !listPPazioni.isEmpty()){
  702.                 filtroDriver.setProtocolPropertiesAzione(listPPazioni);
  703.             }  
  704.            
  705.             // accordo
  706.             if(filtro.getNome()!=null){
  707.                 filtroDriver.setNomeAccordo(filtro.getNome());
  708.             }
  709.             if(filtro.getVersione()!=null){
  710.                 filtroDriver.setVersione(filtro.getVersione());
  711.             }
  712.             if(filtro.getSoggetto()!=null){
  713.                 if(filtro.getSoggetto().getTipo()!=null){
  714.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  715.                 }
  716.                 if(filtro.getSoggetto().getNome()!=null){
  717.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  718.                 }
  719.             }
  720.             if(filtro.getServiceBinding()!=null) {
  721.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  722.             }
  723.             if(filtro.getIdGruppo()!=null) {
  724.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  725.             }
  726.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  727.             if(listPP!=null && !listPP.isEmpty()){
  728.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  729.             }  
  730.             if(filtro.getEscludiServiziComposti()!=null){
  731.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  732.             }
  733.             if(filtro.getEscludiServiziNonComposti()!=null){
  734.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  735.             }

  736.             return this.driverRegistroServiziGET.getAllIdAzioneAccordo(filtroDriver);
  737.         } catch (DriverRegistroServiziNotFound de) {
  738.             throw new RegistryNotFound(de.getMessage(),de);
  739.         }catch(Exception e){
  740.             throw new RegistryException(e.getMessage(),e);
  741.         }
  742.     }
  743.    
  744.     @Override
  745.     public Resource getResourceAccordo(IDResource id) throws RegistryNotFound,RegistryException{
  746.         AccordoServizioParteComune as = this.getAccordoServizioParteComune(id.getIdAccordo());
  747.         for (Resource resourceCheck : as.getResourceList()) {
  748.             if(resourceCheck.getNome().equals(id.getNome())){
  749.                 return resourceCheck;
  750.             }
  751.         }

  752.         String uriAccordo = null;
  753.         try{
  754.             uriAccordo = IDAccordoFactory.getInstance().getUriFromIDAccordo(id.getIdAccordo());
  755.         }catch(Exception e){
  756.             uriAccordo = id.getIdAccordo().toString();
  757.         }
  758.         throw new RegistryNotFound("Risorsa ["+id.getNome()+"] non trovata all'interno dell'accordo ["+uriAccordo+"]");
  759.     }
  760.     @Override
  761.     public List<IDResource> findIdResourceAccordo(ProtocolFiltroRicercaRisorse filtro) throws RegistryNotFound,RegistryException{
  762.         try{
  763.             org.openspcoop2.core.registry.driver.FiltroRicercaResources filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaResources();
  764.            
  765.             // azioni
  766.             if(filtro.getNomeRisorsa()!=null){
  767.                 filtroDriver.setResourceName(filtro.getNomeRisorsa());
  768.             }
  769.             List<FiltroRicercaProtocolPropertyRegistry> listPPresources = ProtocolUtils.convert(filtro.getProtocolPropertiesRisorsa());
  770.             if(listPPresources!=null && !listPPresources.isEmpty()){
  771.                 filtroDriver.setProtocolPropertiesResources(listPPresources);
  772.             }  
  773.            
  774.             // accordo
  775.             if(filtro.getNome()!=null){
  776.                 filtroDriver.setNomeAccordo(filtro.getNome());
  777.             }
  778.             if(filtro.getVersione()!=null){
  779.                 filtroDriver.setVersione(filtro.getVersione());
  780.             }
  781.             if(filtro.getSoggetto()!=null){
  782.                 if(filtro.getSoggetto().getTipo()!=null){
  783.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  784.                 }
  785.                 if(filtro.getSoggetto().getNome()!=null){
  786.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  787.                 }
  788.             }
  789.             if(filtro.getServiceBinding()!=null) {
  790.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  791.             }
  792.             if(filtro.getIdGruppo()!=null) {
  793.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  794.             }
  795.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  796.             if(listPP!=null && !listPP.isEmpty()){
  797.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  798.             }  
  799.             if(filtro.getEscludiServiziComposti()!=null){
  800.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  801.             }
  802.             if(filtro.getEscludiServiziNonComposti()!=null){
  803.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  804.             }

  805.             return this.driverRegistroServiziGET.getAllIdResource(filtroDriver);
  806.         } catch (DriverRegistroServiziNotFound de) {
  807.             throw new RegistryNotFound(de.getMessage(),de);
  808.         }catch(Exception e){
  809.             throw new RegistryException(e.getMessage(),e);
  810.         }
  811.     }
  812.    
  813.     @Override
  814.     public boolean inUso(IDResource id) throws RegistryException{
  815.         return this.inUsoDriver.inUso(id);
  816.     }
  817.     @Override
  818.     public String getDettagliInUso(IDResource id) throws RegistryException{
  819.         return this.inUsoDriver.getDettagliInUso(id);
  820.     }
  821.    
  822.    
  823.     // ACCORDI PARTE SPECIFICA
  824.    
  825.     @Override
  826.     public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(
  827.             IDServizio idServizio) throws RegistryNotFound,RegistryException {
  828.         try{
  829.             return this.driverRegistroServiziGET.getAccordoServizioParteSpecifica(idServizio);
  830.         } catch (DriverRegistroServiziNotFound de) {
  831.             throw new RegistryNotFound(de.getMessage(),de);
  832.         }catch(Exception e){
  833.             throw new RegistryException(e.getMessage(),e);
  834.         }
  835.     }
  836.    

  837.     @Override
  838.     public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(
  839.             IDServizio idServizio, boolean readAllegati)
  840.             throws RegistryNotFound,RegistryException {
  841.         try{
  842.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  843.                 return ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getAccordoServizioParteSpecifica(idServizio,readAllegati);
  844.             }
  845.             else{
  846.                 return this.getAccordoServizioParteSpecifica(idServizio);
  847.             }
  848.         } catch (DriverRegistroServiziNotFound de) {
  849.             throw new RegistryNotFound(de.getMessage(),de);
  850.         }catch(Exception e){
  851.             throw new RegistryException(e.getMessage(),e);
  852.         }
  853.     }

  854.     @Override
  855.     public List<IDServizio> findIdAccordiServizioParteSpecifica(ProtocolFiltroRicercaServizi filtro) throws RegistryNotFound,RegistryException{
  856.         try{
  857.             org.openspcoop2.core.registry.driver.FiltroRicercaServizi filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaServizi();
  858.            
  859.             // servizio
  860.             if(filtro.getIdAccordoServizioParteComune()!=null){
  861.                 filtroDriver.setIdAccordoServizioParteComune(filtro.getIdAccordoServizioParteComune());
  862.             }
  863.             if(filtro.getTipoServizio()!=null){
  864.                 filtroDriver.setTipo(filtro.getTipoServizio());
  865.             }
  866.             if(filtro.getNomeServizio()!=null){
  867.                 filtroDriver.setNome(filtro.getNomeServizio());
  868.             }
  869.             if(filtro.getVersioneServizio()!=null){
  870.                 filtroDriver.setVersione(filtro.getVersioneServizio());
  871.             }
  872.             if(filtro.getSoggettoErogatore()!=null){
  873.                 if(filtro.getSoggettoErogatore().getTipo()!=null){
  874.                     filtroDriver.setTipoSoggettoErogatore(filtro.getSoggettoErogatore().getTipo());
  875.                 }
  876.                 if(filtro.getSoggettoErogatore().getNome()!=null){
  877.                     filtroDriver.setNomeSoggettoErogatore(filtro.getSoggettoErogatore().getNome());
  878.                 }
  879.             }
  880.             if(filtro.getPortType()!=null){
  881.                 filtroDriver.setPortType(filtro.getPortType());
  882.             }
  883.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolPropertiesServizi());
  884.             if(listPP!=null && !listPP.isEmpty()){
  885.                 filtroDriver.setProtocolProperties(listPP);
  886.             }

  887.             return this.driverRegistroServiziGET.getAllIdServizi(filtroDriver);
  888.         } catch (DriverRegistroServiziNotFound de) {
  889.             throw new RegistryNotFound(de.getMessage(),de);
  890.         }catch(Exception e){
  891.             throw new RegistryException(e.getMessage(),e);
  892.         }
  893.     }
  894.    

  895.    
  896.    
  897.     // ELEMENTI INTERNI ALL'ACCORDO PARTE SPECIFICA
  898.    
  899.     @Override
  900.     public List<IDFruizione> findIdFruizioni(ProtocolFiltroRicercaFruizioniServizio filtro) throws RegistryNotFound,RegistryException{
  901.        
  902.         try{
  903.             org.openspcoop2.core.registry.driver.FiltroRicercaFruizioniServizio filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaFruizioniServizio();
  904.            
  905.             if(filtro.getSoggettoFruitore()!=null){
  906.                 if(filtro.getSoggettoFruitore().getTipo()!=null){
  907.                     filtroDriver.setTipoSoggettoFruitore(filtro.getSoggettoFruitore().getTipo());
  908.                 }
  909.                 if(filtro.getSoggettoFruitore().getNome()!=null){
  910.                     filtroDriver.setNomeSoggettoFruitore(filtro.getSoggettoFruitore().getNome());
  911.                 }
  912.             }
  913.             List<FiltroRicercaProtocolPropertyRegistry> listPPfruitore = ProtocolUtils.convert(filtro.getProtocolPropertiesFruizione());
  914.             if(listPPfruitore!=null && !listPPfruitore.isEmpty()){
  915.                 filtroDriver.setProtocolPropertiesFruizione(listPPfruitore);
  916.             }
  917.            
  918.             // servizio
  919.             if(filtro.getIdAccordoServizioParteComune()!=null){
  920.                 filtroDriver.setIdAccordoServizioParteComune(filtro.getIdAccordoServizioParteComune());
  921.             }
  922.             if(filtro.getTipoServizio()!=null){
  923.                 filtroDriver.setTipo(filtro.getTipoServizio());
  924.             }
  925.             if(filtro.getNomeServizio()!=null){
  926.                 filtroDriver.setNome(filtro.getNomeServizio());
  927.             }
  928.             if(filtro.getVersioneServizio()!=null){
  929.                 filtroDriver.setVersione(filtro.getVersioneServizio());
  930.             }
  931.             if(filtro.getSoggettoErogatore()!=null){
  932.                 if(filtro.getSoggettoErogatore().getTipo()!=null){
  933.                     filtroDriver.setTipoSoggettoErogatore(filtro.getSoggettoErogatore().getTipo());
  934.                 }
  935.                 if(filtro.getSoggettoErogatore().getNome()!=null){
  936.                     filtroDriver.setNomeSoggettoErogatore(filtro.getSoggettoErogatore().getNome());
  937.                 }
  938.             }
  939.             if(filtro.getPortType()!=null){
  940.                 filtroDriver.setPortType(filtro.getPortType());
  941.             }
  942.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolPropertiesServizi());
  943.             if(listPP!=null && !listPP.isEmpty()){
  944.                 filtroDriver.setProtocolProperties(listPP);
  945.             }

  946.             return this.driverRegistroServiziGET.getAllIdFruizioniServizio(filtroDriver);
  947.         } catch (DriverRegistroServiziNotFound de) {
  948.             throw new RegistryNotFound(de.getMessage(),de);
  949.         }catch(Exception e){
  950.             throw new RegistryException(e.getMessage(),e);
  951.         }
  952.        
  953.     }

  954.    
  955.    
  956.     // ACCORDI COOPERAZIONE
  957.    
  958.     @Override
  959.     public AccordoCooperazione getAccordoCooperazione(
  960.             IDAccordoCooperazione idAccordo) throws RegistryNotFound,RegistryException {
  961.         try{
  962.             return this.driverRegistroServiziGET.getAccordoCooperazione(idAccordo);
  963.         } catch (DriverRegistroServiziNotFound de) {
  964.             throw new RegistryNotFound(de.getMessage(),de);
  965.         }catch(Exception e){
  966.             throw new RegistryException(e.getMessage(),e);
  967.         }
  968.     }

  969.     @Override
  970.     public AccordoCooperazione getAccordoCooperazione(
  971.             IDAccordoCooperazione idAccordo, boolean readAllegati)
  972.             throws RegistryNotFound,RegistryException {
  973.         try{
  974.             if(this.driverRegistroServiziGET instanceof DriverRegistroServiziDB){
  975.                 return ((DriverRegistroServiziDB)this.driverRegistroServiziGET).getAccordoCooperazione(idAccordo,readAllegati);
  976.             }
  977.             else{
  978.                 return this.getAccordoCooperazione(idAccordo);
  979.             }
  980.         } catch (DriverRegistroServiziNotFound de) {
  981.             throw new RegistryNotFound(de.getMessage(),de);
  982.         }catch(Exception e){
  983.             throw new RegistryException(e.getMessage(),e);
  984.         }
  985.     }
  986.    
  987.     @Override
  988.     public List<IDAccordoCooperazione> findIdAccordiCooperazione(ProtocolFiltroRicercaAccordi filtro) throws RegistryNotFound,RegistryException{
  989.         try{
  990.             org.openspcoop2.core.registry.driver.FiltroRicercaAccordi filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaAccordi();
  991.             if(filtro.getNome()!=null){
  992.                 filtroDriver.setNomeAccordo(filtro.getNome());
  993.             }
  994.             if(filtro.getVersione()!=null){
  995.                 filtroDriver.setVersione(filtro.getVersione());
  996.             }
  997.             if(filtro.getSoggetto()!=null){
  998.                 if(filtro.getSoggetto().getTipo()!=null){
  999.                     filtroDriver.setTipoSoggettoReferente(filtro.getSoggetto().getTipo());
  1000.                 }
  1001.                 if(filtro.getSoggetto().getNome()!=null){
  1002.                     filtroDriver.setNomeSoggettoReferente(filtro.getSoggetto().getNome());
  1003.                 }
  1004.             }
  1005.             if(filtro.getServiceBinding()!=null) {
  1006.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  1007.             }
  1008.             if(filtro.getIdGruppo()!=null) {
  1009.                 filtroDriver.setIdGruppo(filtro.getIdGruppo());
  1010.             }
  1011.             List<FiltroRicercaProtocolPropertyRegistry> listPP = ProtocolUtils.convert(filtro.getProtocolProperties());
  1012.             if(listPP!=null && !listPP.isEmpty()){
  1013.                 filtroDriver.setProtocolPropertiesAccordo(listPP);
  1014.             }  
  1015.             if(filtro.getEscludiServiziComposti()!=null){
  1016.                 filtroDriver.setServizioComposto(!filtro.getEscludiServiziComposti());
  1017.             }
  1018.             if(filtro.getEscludiServiziNonComposti()!=null){
  1019.                 filtroDriver.setServizioComposto(filtro.getEscludiServiziNonComposti());
  1020.             }

  1021.             return this.driverRegistroServiziGET.getAllIdAccordiCooperazione(filtroDriver);
  1022.         } catch (DriverRegistroServiziNotFound de) {
  1023.             throw new RegistryNotFound(de.getMessage(),de);
  1024.         }catch(Exception e){
  1025.             throw new RegistryException(e.getMessage(),e);
  1026.         }
  1027.     }


  1028.    
  1029.    
  1030.    
  1031.     // GRUPPI
  1032.     @Override
  1033.     public List<IDGruppo> findIdGruppi(ProtocolFiltroRicercaGruppi filtro) throws RegistryNotFound,RegistryException{
  1034.         try{
  1035.             org.openspcoop2.core.registry.driver.FiltroRicercaGruppi filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaGruppi();
  1036.             if(filtro.getMinDate()!=null) {
  1037.                 filtroDriver.setMinDate(filtro.getMinDate());
  1038.             }
  1039.             if(filtro.getMaxDate()!=null) {
  1040.                 filtroDriver.setMaxDate(filtro.getMaxDate());
  1041.             }
  1042.             filtroDriver.setOrdinaDataRegistrazione(filtro.isOrdinaDataRegistrazione());
  1043.             if(filtro.getNome()!=null){
  1044.                 filtroDriver.setNome(filtro.getNome());
  1045.             }
  1046.             if(filtro.getTipo()!=null){
  1047.                 filtroDriver.setTipo(filtro.getTipo());
  1048.             }
  1049.             if(filtro.getServiceBinding()!=null) {
  1050.                 filtroDriver.setServiceBinding(filtro.getServiceBinding());
  1051.             }
  1052.             if(filtro.getProtocollo()!=null) {
  1053.                 filtroDriver.setProtocollo(filtro.getProtocollo());
  1054.             }
  1055.             if(filtro.getProtocolli()!=null){
  1056.                 filtroDriver.setProtocolli(filtro.getProtocolli());
  1057.             }

  1058.             return this.driverRegistroServiziGET.getAllIdGruppi(filtroDriver);
  1059.         } catch (DriverRegistroServiziNotFound de) {
  1060.             throw new RegistryNotFound(de.getMessage(),de);
  1061.         }catch(Exception e){
  1062.             throw new RegistryException(e.getMessage(),e);
  1063.         }
  1064.     }
  1065.    
  1066.    
  1067.    
  1068.    
  1069.     // RUOLI
  1070.     @Override
  1071.     public List<IDRuolo> findIdRuoli(ProtocolFiltroRicercaRuoli filtro) throws RegistryNotFound,RegistryException{
  1072.         try{
  1073.             org.openspcoop2.core.registry.driver.FiltroRicercaRuoli filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaRuoli();
  1074.             if(filtro.getMinDate()!=null) {
  1075.                 filtroDriver.setMinDate(filtro.getMinDate());
  1076.             }
  1077.             if(filtro.getMaxDate()!=null) {
  1078.                 filtroDriver.setMaxDate(filtro.getMaxDate());
  1079.             }
  1080.             if(filtro.getNome()!=null){
  1081.                 filtroDriver.setNome(filtro.getNome());
  1082.             }
  1083.             if(filtro.getTipo()!=null){
  1084.                 filtroDriver.setTipo(filtro.getTipo());
  1085.             }
  1086.             if(filtro.getTipologia()!=null) {
  1087.                 filtroDriver.setTipologia(filtro.getTipologia());
  1088.             }
  1089.             if(filtro.getContesto()!=null) {
  1090.                 filtroDriver.setContesto(filtro.getContesto());
  1091.             }

  1092.             return this.driverRegistroServiziGET.getAllIdRuoli(filtroDriver);
  1093.         } catch (DriverRegistroServiziNotFound de) {
  1094.             throw new RegistryNotFound(de.getMessage(),de);
  1095.         }catch(Exception e){
  1096.             throw new RegistryException(e.getMessage(),e);
  1097.         }
  1098.     }
  1099.    
  1100.    
  1101.    
  1102.    
  1103.    
  1104.     // SCOPE
  1105.     @Override
  1106.     public List<IDScope> findIdScope(ProtocolFiltroRicercaScope filtro) throws RegistryNotFound,RegistryException{
  1107.         try{
  1108.             org.openspcoop2.core.registry.driver.FiltroRicercaScope filtroDriver = new org.openspcoop2.core.registry.driver.FiltroRicercaScope();
  1109.             if(filtro.getMinDate()!=null) {
  1110.                 filtroDriver.setMinDate(filtro.getMinDate());
  1111.             }
  1112.             if(filtro.getMaxDate()!=null) {
  1113.                 filtroDriver.setMaxDate(filtro.getMaxDate());
  1114.             }
  1115.             if(filtro.getNome()!=null){
  1116.                 filtroDriver.setNome(filtro.getNome());
  1117.             }
  1118.             if(filtro.getTipo()!=null){
  1119.                 filtroDriver.setTipo(filtro.getTipo());
  1120.             }
  1121.             if(filtro.getTipologia()!=null) {
  1122.                 filtroDriver.setTipologia(filtro.getTipologia());
  1123.             }
  1124.             if(filtro.getContesto()!=null) {
  1125.                 filtroDriver.setContesto(filtro.getContesto());
  1126.             }

  1127.             return this.driverRegistroServiziGET.getAllIdScope(filtroDriver);
  1128.         } catch (DriverRegistroServiziNotFound de) {
  1129.             throw new RegistryNotFound(de.getMessage(),de);
  1130.         }catch(Exception e){
  1131.             throw new RegistryException(e.getMessage(),e);
  1132.         }
  1133.     }
  1134. }