DriverRegistroServiziDB_soggettiDriver.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 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.registry.driver.db;
- import java.sql.Connection;
- import java.sql.Date;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Timestamp;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import org.apache.commons.lang.StringUtils;
- import org.openspcoop2.core.byok.IDriverBYOK;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.commons.ErrorsHandlerCostant;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.constants.ProprietariProtocolProperty;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Connettore;
- import org.openspcoop2.core.registry.CredenzialiSoggetto;
- import org.openspcoop2.core.registry.Proprieta;
- import org.openspcoop2.core.registry.ProtocolProperty;
- import org.openspcoop2.core.registry.RuoliSoggetto;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.RuoloSoggetto;
- import org.openspcoop2.core.registry.Soggetto;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.constants.CredenzialeTipo;
- import org.openspcoop2.core.registry.constants.StatiAccordo;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
- import org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti;
- import org.openspcoop2.utils.certificate.ArchiveLoader;
- import org.openspcoop2.utils.certificate.ArchiveType;
- import org.openspcoop2.utils.certificate.Certificate;
- import org.openspcoop2.utils.certificate.CertificateUtils;
- import org.openspcoop2.utils.certificate.PrincipalType;
- import org.openspcoop2.utils.crypt.CryptConfig;
- import org.openspcoop2.utils.crypt.CryptFactory;
- import org.openspcoop2.utils.crypt.ICrypt;
- import org.openspcoop2.utils.jdbc.IJDBCAdapter;
- import org.openspcoop2.utils.jdbc.JDBCAdapterFactory;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- /**
- * DriverRegistroServiziDB_soggettiDriver
- *
- *
- * @author Sandra Giangrandi (sandra@link.it)
- * @author Stefano Corallo (corallo@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class DriverRegistroServiziDB_soggettiDriver {
- private DriverRegistroServiziDB driver = null;
- private DriverRegistroServiziDB_protocolPropertiesDriver protocolPropertiesDriver = null;
-
- protected DriverRegistroServiziDB_soggettiDriver(DriverRegistroServiziDB driver) {
- this.driver = driver;
- this.protocolPropertiesDriver = new DriverRegistroServiziDB_protocolPropertiesDriver(driver);
- }
-
- protected org.openspcoop2.core.registry.Soggetto getSoggetto(IDSoggetto idSoggetto) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- // conrollo consistenza
- if (idSoggetto == null)
- throw new DriverRegistroServiziException("[getSoggetto] Parametro idSoggetto is null");
- String nomeSogg = idSoggetto.getNome();
- String tipoSogg = idSoggetto.getTipo();
- if (nomeSogg == null || nomeSogg.trim().equals("") || tipoSogg == null || tipoSogg.trim().equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggetto] : soggetto non specificato.");
- long idSoggettoLong;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getSoggetto(idSoggetto)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("DriverRegistroServiziDB::getSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("nome_soggetto = ?");
- sqlQueryObject.addWhereCondition("tipo_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setString(1, nomeSogg);
- stm.setString(2, tipoSogg);
- this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, nomeSogg, tipoSogg));
- rs = stm.executeQuery();
- if (rs.next()) {
- idSoggettoLong = rs.getLong("id");
-
- }else{
- throw new DriverRegistroServiziNotFound("Nessun soggetto trovato eseguendo: "+DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, nomeSogg, tipoSogg));
- }
-
- }catch (DriverRegistroServiziNotFound e) {
- throw e;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggetto] SqlException: " + se.getMessage(),se);
- }catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggetto] Exception: " + se.getMessage(),se);
- } finally {
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
-
- return this.getSoggetto(idSoggettoLong);
- }
-
- protected Soggetto getSoggetto(long idSoggetto) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- return getSoggetto(idSoggetto,null);
- }
- protected Soggetto getSoggetto(long idSoggetto,Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- // conrollo consistenza
- if (idSoggetto <= 0)
- return null;
- Soggetto soggetto = null;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(conParam!=null){
- con = conParam;
- }
- else if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getSoggetto(longId)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("DriverRegistroServiziDB::getSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idSoggetto);
- this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idSoggetto));
- rs = stm.executeQuery();
- if (rs.next()) {
- soggetto = new Soggetto();
- soggetto.setId(rs.getLong("id"));
- String nomeSogg = rs.getString("nome_soggetto");
- soggetto.setNome(nomeSogg);
- String tipoSogg = rs.getString("tipo_soggetto");
- soggetto.setTipo(tipoSogg);
- String tmp = rs.getString("descrizione");
- soggetto.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
- tmp = rs.getString("identificativo_porta");
- soggetto.setIdentificativoPorta(((tmp == null || tmp.equals("")) ? null : tmp));
- tmp = rs.getString("server");
- soggetto.setPortaDominio(((tmp == null || tmp.equals("")) ? null : tmp));
- tmp = rs.getString("superuser");
- soggetto.setSuperUser(((tmp == null || tmp.equals("")) ? null : tmp));
- if(rs.getInt("privato")==1)
- soggetto.setPrivato(true);
- else
- soggetto.setPrivato(false);
- tmp = rs.getString("codice_ipa");
- soggetto.setCodiceIpa(((tmp == null || tmp.equals("")) ? null : tmp));
- // Ora Registrazione
- if(rs.getTimestamp("ora_registrazione")!=null){
- soggetto.setOraRegistrazione(new Date(rs.getTimestamp("ora_registrazione").getTime()));
- }
- long idConnettore = rs.getLong("id_connettore");
- Connettore connettore = this.driver.getConnettore(idConnettore, con);
- String profilo = rs.getString("profilo");
- if(profilo!=null){
- profilo = profilo.trim();
- soggetto.setVersioneProtocollo(profilo);
- }
- String tipoAuth = rs.getString("tipoauth");
- if(tipoAuth != null && !tipoAuth.equals("")){
- CredenzialiSoggetto credenziali = new CredenzialiSoggetto();
- credenziali.setTipo(DriverRegistroServiziDB_LIB.getEnumCredenzialeTipo(tipoAuth));
-
- credenziali.setUser(rs.getString("utente"));
- credenziali.setPassword(rs.getString("password"));
-
- if(org.openspcoop2.core.registry.constants.CredenzialeTipo.APIKEY.equals(credenziali.getTipo())) {
- credenziali.setAppId(CostantiDB.isAPPID(rs.getString("issuer")));
- }
- else {
- credenziali.setIssuer(rs.getString("issuer"));
- }
- credenziali.setSubject(rs.getString("subject"));
- credenziali.setCnSubject(rs.getString("cn_subject"));
- credenziali.setCnIssuer(rs.getString("cn_issuer"));
- IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
- credenziali.setCertificate(jdbcAdapter.getBinaryData(rs, "certificate"));
- int strict = rs.getInt("cert_strict_verification");
- if(strict == CostantiDB.TRUE) {
- credenziali.setCertificateStrictVerification(true);
- }
- else if(strict == CostantiDB.FALSE) {
- credenziali.setCertificateStrictVerification(false);
- }
-
- soggetto.addCredenziali( credenziali );
- }
-
- // aggiungo connettore
- soggetto.setConnettore(connettore);
- // Proprieta Oggetto
- soggetto.setProprietaOggetto(DriverRegistroServiziDB_utilsDriver.readProprietaOggetto(rs,false));
-
- rs.close();
- stm.close();
-
-
- // RUOLI
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI_RUOLI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, soggetto.getId());
- this.driver.logDebug("eseguo query ruoli: " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, soggetto.getId()));
- rs = stm.executeQuery();
- while (rs.next()) {
- if(soggetto.getRuoli()==null){
- soggetto.setRuoli(new RuoliSoggetto());
- }
- RuoloSoggetto ruolo = new RuoloSoggetto();
- ruolo.setId(rs.getLong("id_ruolo"));
- soggetto.getRuoli().addRuolo(ruolo);
- }
- rs.close();
- stm.close();
-
- if(soggetto.getRuoli()!=null && soggetto.getRuoli().sizeRuoloList()>0){
- for (int i = 0; i < soggetto.getRuoli().sizeRuoloList(); i++) {
- Ruolo ruolo = this.driver.getRuolo(con,soggetto.getRuoli().getRuolo(i).getId());
- soggetto.getRuoli().getRuolo(i).setNome(ruolo.getNome());
- }
- }
-
-
- // CREDENZIALI
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI_CREDENZIALI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQueryObject.addOrderBy("id", true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, soggetto.getId());
- this.driver.logDebug("eseguo query credenziali: " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, soggetto.getId()));
- rs = stm.executeQuery();
- while (rs.next()) {
- CredenzialiSoggetto credenziali = new CredenzialiSoggetto();
- credenziali.setTipo(DriverRegistroServiziDB_LIB.getEnumCredenzialeTipo(tipoAuth));
-
- credenziali.setIssuer(rs.getString("issuer"));
- credenziali.setSubject(rs.getString("subject"));
- credenziali.setCnSubject(rs.getString("cn_subject"));
- credenziali.setCnIssuer(rs.getString("cn_issuer"));
- IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
- credenziali.setCertificate(jdbcAdapter.getBinaryData(rs, "certificate"));
- int strict = rs.getInt("cert_strict_verification");
- if(strict == CostantiDB.TRUE) {
- credenziali.setCertificateStrictVerification(true);
- }
- else if(strict == CostantiDB.FALSE) {
- credenziali.setCertificateStrictVerification(false);
- }
-
- soggetto.addCredenziali( credenziali );
- }
- rs.close();
- stm.close();
-
-
- // PROPERTIES
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI_PROPS);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, soggetto.getId());
- this.driver.logDebug("eseguo query ruoli: " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, soggetto.getId()));
- rs = stm.executeQuery();
- while (rs.next()) {
-
- Proprieta proprieta = new Proprieta();
- proprieta.setNome(rs.getString("nome"));
-
- String plainValue = rs.getString("valore");
- String encValue = rs.getString("enc_value");
- if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
- IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
- if(driverBYOK!=null) {
- proprieta.setValore(driverBYOK.unwrapAsString(encValue));
- }
- else {
- proprieta.setValore(encValue);
- }
- }
- else {
- proprieta.setValore(plainValue);
- }
-
- soggetto.addProprieta(proprieta);
- }
- rs.close();
- stm.close();
-
-
-
- }else{
- throw new DriverRegistroServiziNotFound("Nessun risultato trovato eseguendo: "+DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idSoggetto));
- }
- // Protocol Properties
- try{
- List<ProtocolProperty> listPP = DriverRegistroServiziDB_LIB.getListaProtocolProperty(soggetto.getId(), ProprietariProtocolProperty.SOGGETTO, con,
- this.driver.tipoDB, this.driver.getDriverUnwrapBYOK());
- if(listPP!=null && !listPP.isEmpty()){
- for (ProtocolProperty protocolProperty : listPP) {
- soggetto.addProtocolProperty(protocolProperty);
- }
- }
- }catch(DriverRegistroServiziNotFound dNotFound){
- // ignore
- }
-
- return soggetto;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggetto] SqlException: " + se.getMessage(),se);
- }catch (DriverRegistroServiziNotFound se) {
- throw se;
- }catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggetto] Exception: " + se.getMessage(),se);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(conParam, con);
- }
- }
-
-
-
- protected List<IDSoggetto> getAllIdSoggetti(FiltroRicercaSoggetti filtroRicerca) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- this.driver.logDebug("getAllIdSoggettiRegistro...");
- Certificate certificatoFiltro = null;
- try {
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- // prendo la connessione dal pool
- if (this.driver.atomica)
- con = this.driver.getConnectionFromDatasource("getAllIdSoggetti");
- else
- con = this.driver.globalConnection;
- boolean testInChiaro = false;
- ICrypt crypt = null;
- if(filtroRicerca!=null && filtroRicerca.getCredenzialiSoggetto()!=null && filtroRicerca.getCredenzialiSoggetto().getPassword()!=null){
- CredenzialeTipo cTipo = filtroRicerca.getCredenzialiSoggetto().getTipo();
- if(CredenzialeTipo.BASIC.equals(cTipo)){
- CryptConfig config = filtroRicerca.getCryptConfig();
- if(config==null || config.isBackwardCompatibility()) {
- testInChiaro = true;
- }
- if(config!=null) {
- try {
- crypt = CryptFactory.getCrypt(this.driver.log, config);
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- }
- }
- else if(CredenzialeTipo.APIKEY.equals(cTipo)){
- CryptConfig config = filtroRicerca.getCryptConfig();
- if(config!=null) {
- try {
- crypt = CryptFactory.getCrypt(this.driver.log, config);
- }catch(Exception e) {
- throw new DriverRegistroServiziException(e.getMessage(),e);
- }
- }
- else {
- testInChiaro = true;
- }
- }
- }
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- if(filtroRicerca!=null){
- if(filtroRicerca.getIdRuolo()!=null){
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI_RUOLI);
- sqlQueryObject.addFromTable(CostantiDB.RUOLI);
- }
- }
- sqlQueryObject.setSelectDistinct(true);
- sqlQueryObject.addSelectField("tipo_soggetto");
- sqlQueryObject.addSelectField("nome_soggetto");
- sqlQueryObject.setSelectDistinct(true);
- if(filtroRicerca!=null){
- // Filtro By Data
- if(filtroRicerca.getMinDate()!=null)
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".ora_registrazione > ?");
- if(filtroRicerca.getMaxDate()!=null)
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".ora_registrazione < ?");
- // Filtro By Tipo e Nome
- if(filtroRicerca.getTipo()!=null)
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto = ?");
- if(filtroRicerca.getNome()!=null)
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto = ?");
- // Filtro By Pdd
- if(filtroRicerca.getNomePdd()!=null)
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".server = ?");
- // Filtro By Ruoli
- if(filtroRicerca.getIdRuolo()!=null){
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI_RUOLI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI_RUOLI+".id_ruolo="+CostantiDB.RUOLI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.RUOLI+".nome = ?");
- }
- // Filtro By Credenziali (per ssl vengono cercate solo nelle credenziali principali)
- if(filtroRicerca.getCredenzialiSoggetto()!=null){
- if(filtroRicerca.getCredenzialiSoggetto().getTipo()!=null){
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipoauth = ?");
- if(CredenzialeTipo.APIKEY.equals(filtroRicerca.getCredenzialiSoggetto().getTipo())){
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".cert_strict_verification = ?");
- }
- }
- if(filtroRicerca.getCredenzialiSoggetto().getUser()!=null){
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".utente = ?");
- }
- if(filtroRicerca.getCredenzialiSoggetto().getPassword()!=null){
- //sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".password = ?");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".password");
- }
- if(filtroRicerca.getCredenzialiSoggetto().getSubject()!=null){
-
- // Autenticazione SSL deve essere LIKE
- Map<String, List<String>> hashSubject = CertificateUtils.getPrincipalIntoMap(filtroRicerca.getCredenzialiSoggetto().getSubject(), PrincipalType.SUBJECT);
- Map<String, List<String>> hashIssuer = null;
- if(filtroRicerca.getCredenzialiSoggetto().getIssuer()!=null) {
- hashIssuer = CertificateUtils.getPrincipalIntoMap(filtroRicerca.getCredenzialiSoggetto().getIssuer(), PrincipalType.ISSUER);
- }
-
- for (String key : hashSubject.keySet()) {
- List<String> listValues = hashSubject.get(key);
- for (String value : listValues) {
- sqlQueryObject.addWhereLikeCondition(CostantiDB.SOGGETTI+".subject", "/"+CertificateUtils.formatKeyPrincipal(key)+"="+CertificateUtils.formatValuePrincipal(value)+"/", true, true, false);
- }
-
- sqlQueryObject.addSelectField("subject");
- }
-
- if(hashIssuer!=null) {
- for (String key : hashIssuer.keySet()) {
- List<String> listValues = hashIssuer.get(key);
- for (String value : listValues) {
- sqlQueryObject.addWhereLikeCondition(CostantiDB.SOGGETTI+".issuer", "/"+CertificateUtils.formatKeyPrincipal(key)+"="+CertificateUtils.formatValuePrincipal(value)+"/", true, true, false);
- }
- }
-
- sqlQueryObject.addSelectField("issuer");
- }
- else {
- sqlQueryObject.addWhereIsNullCondition("issuer");
- }
-
- }
- if(filtroRicerca.getCredenzialiSoggetto().getCertificate()!=null){
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".cn_subject = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".cn_issuer = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".cert_strict_verification = ?");
-
- sqlQueryObject.addSelectField("certificate");
- }
- }
- DBUtils.setPropertiesForSearch(sqlQueryObject, filtroRicerca.getProprieta(), CostantiDB.SOGGETTI, CostantiDB.SOGGETTI_PROPS, "nome", "valore", "id_soggetto");
- this.protocolPropertiesDriver.setProtocolPropertiesForSearch(sqlQueryObject, filtroRicerca, CostantiDB.SOGGETTI);
- }
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- this.driver.logDebug("eseguo query : " + sqlQuery );
- stm = con.prepareStatement(sqlQuery);
- int indexStmt = 1;
- if(filtroRicerca!=null){
- if(filtroRicerca.getMinDate()!=null){
- this.driver.logDebug("minDate stmt.setTimestamp("+filtroRicerca.getMinDate()+")");
- stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMinDate().getTime()));
- indexStmt++;
- }
- if(filtroRicerca.getMaxDate()!=null){
- this.driver.logDebug("maxDate stmt.setTimestamp("+filtroRicerca.getMaxDate()+")");
- stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMaxDate().getTime()));
- indexStmt++;
- }
- if(filtroRicerca.getTipo()!=null){
- this.driver.logDebug("tipoSoggetto stmt.setString("+filtroRicerca.getTipo()+")");
- stm.setString(indexStmt, filtroRicerca.getTipo());
- indexStmt++;
- }
- if(filtroRicerca.getNome()!=null){
- this.driver.logDebug("nomeSoggetto stmt.setString("+filtroRicerca.getNome()+")");
- stm.setString(indexStmt, filtroRicerca.getNome());
- indexStmt++;
- }
- if(filtroRicerca.getNomePdd()!=null){
- this.driver.logDebug("nomePdD stmt.setString("+filtroRicerca.getNomePdd()+")");
- stm.setString(indexStmt, filtroRicerca.getNomePdd());
- indexStmt++;
- }
- if(filtroRicerca.getIdRuolo()!=null){
- this.driver.logDebug("ruolo stmt.setString("+filtroRicerca.getIdRuolo().getNome()+")");
- stm.setString(indexStmt, filtroRicerca.getIdRuolo().getNome());
- indexStmt++;
- }
- if(filtroRicerca.getCredenzialiSoggetto()!=null){
- if(filtroRicerca.getCredenzialiSoggetto().getTipo()!=null){
- this.driver.logDebug("credenziali.tipo stmt.setString("+filtroRicerca.getCredenzialiSoggetto().getTipo().getValue()+")");
- stm.setString(indexStmt, filtroRicerca.getCredenzialiSoggetto().getTipo().getValue());
- indexStmt++;
- if(CredenzialeTipo.APIKEY.equals(filtroRicerca.getCredenzialiSoggetto().getTipo())){
- int v = filtroRicerca.getCredenzialiSoggetto().isCertificateStrictVerification() ? CostantiDB.TRUE : CostantiDB.FALSE;
- this.driver.logDebug("credenziali.certificateStrictVerification stmt.setInt("+v+")");
- stm.setInt(indexStmt, v);
- indexStmt++;
- }
- }
- if(filtroRicerca.getCredenzialiSoggetto().getUser()!=null){
- this.driver.logDebug("credenziali.user stmt.setString("+filtroRicerca.getCredenzialiSoggetto().getUser()+")");
- stm.setString(indexStmt, filtroRicerca.getCredenzialiSoggetto().getUser());
- indexStmt++;
- }
- // if(filtroRicerca.getCredenzialiSoggetto().getPassword()!=null){
- // this.driver.logDebug("credenziali.password stmt.setString("+filtroRicerca.getCredenzialiSoggetto().getPassword()+")");
- // stm.setString(indexStmt, filtroRicerca.getCredenzialiSoggetto().getPassword());
- // indexStmt++;
- // }
- if(filtroRicerca.getCredenzialiSoggetto().getSubject()!=null){
- // nop;
- }
- if(filtroRicerca.getCredenzialiSoggetto().getCertificate()!=null){
-
- certificatoFiltro = ArchiveLoader.load(ArchiveType.CER, filtroRicerca.getCredenzialiSoggetto().getCertificate(), 0, null);
- String cnSubject = certificatoFiltro.getCertificate().getSubject().getCN();
- String cnIssuer = certificatoFiltro.getCertificate().getIssuer().getCN();
-
- stm.setString(indexStmt++, cnSubject);
- this.driver.logDebug("credenziali.cnSubject stmt.setString(" + cnSubject +")");
- stm.setString(indexStmt++, cnIssuer);
- this.driver.logDebug("credenziali.cnIssuer stmt.setString(" + cnIssuer +")");
- if(filtroRicerca.getCredenzialiSoggetto().isCertificateStrictVerification()) {
- this.driver.logDebug("credenziali.strict stmt.setInt(" + CostantiDB.TRUE +")");
- stm.setInt(indexStmt++, CostantiDB.TRUE);
- }
- else {
- this.driver.logDebug("credenziali.strict stmt.setInt(" + CostantiDB.FALSE +")");
- stm.setInt(indexStmt++, CostantiDB.FALSE);
- }
- }
- }
- DBUtils.setPropertiesForSearch(stm, indexStmt, filtroRicerca.getProprieta(), this.driver.tipoDB, this.driver.log);
- this.protocolPropertiesDriver.setProtocolPropertiesForSearch(stm, indexStmt, filtroRicerca, ProprietariProtocolProperty.SOGGETTO);
- }
- rs = stm.executeQuery();
- List<IDSoggetto> idSoggetti = new ArrayList<IDSoggetto>();
- IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
- while (rs.next()) {
-
- if(filtroRicerca!=null &&
- filtroRicerca.getCredenzialiSoggetto()!=null &&
- filtroRicerca.getCredenzialiSoggetto().getPassword()!=null){
- String passwordDB = rs.getString("password");
-
- boolean found = false;
- if(testInChiaro) {
- found = filtroRicerca.getCredenzialiSoggetto().getPassword().equals(passwordDB);
- }
- if(!found && crypt!=null) {
- found = crypt.check(filtroRicerca.getCredenzialiSoggetto().getPassword(), passwordDB);
- }
- if( !found ) {
- continue;
- }
- }
-
- if(filtroRicerca!=null &&
- filtroRicerca.getCredenzialiSoggetto()!=null &&
- filtroRicerca.getCredenzialiSoggetto().getSubject()!=null){
-
- // Possono esistere piu' soggetti che hanno una porzione di subject uguale, devo quindi verificare che sia proprio quello che cerco
-
- String subjectPotenziale = rs.getString("subject");
- boolean subjectValid = CertificateUtils.sslVerify(subjectPotenziale, filtroRicerca.getCredenzialiSoggetto().getSubject(), PrincipalType.SUBJECT, this.driver.log);
-
- boolean issuerValid = true;
- if(filtroRicerca.getCredenzialiSoggetto().getIssuer()!=null) {
- String issuerPotenziale = rs.getString("issuer");
- if(StringUtils.isNotEmpty(issuerPotenziale)) {
- issuerValid = CertificateUtils.sslVerify(issuerPotenziale, filtroRicerca.getCredenzialiSoggetto().getIssuer(), PrincipalType.ISSUER, this.driver.log);
- }
- else {
- issuerValid = false;
- }
- }
-
- if( !subjectValid || !issuerValid ) {
- continue;
- }
- }
-
- if(certificatoFiltro!=null) {
- // ricerca per certificato
- // Possono esistere piu' soggetti che hanno un CN con subject e issuer diverso.
-
- byte[] certificatoBytes = jdbcAdapter.getBinaryData(rs, "certificate");
- Certificate certificato = ArchiveLoader.load(ArchiveType.CER, certificatoBytes, 0, null);
- //int tmpStrict = rs.getInt("cert_strict_verification");
- //boolean strict = tmpStrict == CostantiDB.TRUE;
-
- if(!certificatoFiltro.getCertificate().equals(certificato.getCertificate(),filtroRicerca.getCredenzialiSoggetto().isCertificateStrictVerification())) {
- continue;
- }
- }
-
- IDSoggetto idS = new IDSoggetto(rs.getString("tipo_soggetto"),rs.getString("nome_soggetto"));
- idSoggetti.add(idS);
- }
- if(idSoggetti.size()==0){
- if(filtroRicerca!=null)
- throw new DriverRegistroServiziNotFound("Soggetti non trovati che rispettano il filtro di ricerca selezionato: "+filtroRicerca.toString());
- else
- throw new DriverRegistroServiziNotFound("Soggetti non trovati");
- }else{
- return idSoggetti;
- }
- }catch(DriverRegistroServiziNotFound de){
- throw de;
- }
- catch(Exception e){
- throw new DriverRegistroServiziException("getAllIdSoggettiRegistro error",e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- }
- protected void createSoggetto(org.openspcoop2.core.registry.Soggetto soggetto) throws DriverRegistroServiziException {
- if (soggetto == null)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::createSoggetto] Parametro non valido.");
- Connection con = null;
- boolean error = false;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("createSoggetto");
- con.setAutoCommit(false);
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::createSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- this.driver.logDebug("CRUDSoggetto type = 1");
- // creo soggetto
- DriverRegistroServiziDB_soggettiLIB.CRUDSoggetto(1, soggetto, con, this.driver.tipoDB, this.driver.getDriverWrapBYOK());
- } catch (Exception qe) {
- error = true;
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::createSoggetto] Errore durante la creazione del soggetto : " + qe.getMessage(), qe);
- } finally {
- this.driver.closeConnection(error,con);
- }
- }
- protected boolean existsSoggetto(IDSoggetto idSoggetto) throws DriverRegistroServiziException {
- boolean exist = false;
- Connection con = null;
-
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("existsSoggetto(idSoggetto)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::existsSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- try {
- exist = existsSoggetto(con, idSoggetto);
- } catch (Exception e) {
- exist = false;
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- this.driver.closeConnection(con);
- }
- return exist;
- }
- protected boolean existsSoggetto(Connection conParam, IDSoggetto idSoggetto) throws DriverRegistroServiziException {
- boolean exist = false;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if (idSoggetto == null)
- throw new DriverRegistroServiziException("Parametro non valido");
- String nome_soggetto = idSoggetto.getNome();
- String tipo_soggetto = idSoggetto.getTipo();
- if (nome_soggetto == null || nome_soggetto.equals(""))
- throw new DriverRegistroServiziException("Parametro Nome non valido");
- if (tipo_soggetto == null || tipo_soggetto.equals(""))
- throw new DriverRegistroServiziException("Parametro Tipo non valido");
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("nome_soggetto = ?");
- sqlQueryObject.addWhereCondition("tipo_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setString(1, nome_soggetto);
- stm.setString(2, tipo_soggetto);
- rs = stm.executeQuery();
- if (rs.next())
- exist = true;
- rs.close();
- stm.close();
- } catch (Exception e) {
- exist = false;
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- }
- return exist;
- }
- protected boolean existsSoggetto(long idSoggetto) throws DriverRegistroServiziException {
- boolean exist = false;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("existsSoggetto(longId)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::existsSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idSoggetto);
- rs = stm.executeQuery();
- if (rs.next())
- exist = true;
- rs.close();
- stm.close();
- } catch (Exception e) {
- exist = false;
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- return exist;
- }
- protected boolean existsSoggetto(String codiceIPA) throws DriverRegistroServiziException {
- boolean exist = false;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if (codiceIPA == null|| codiceIPA.equals(""))
- throw new DriverRegistroServiziException("Parametro non valido");
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("existsSoggetto(codiceIPA)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::existsSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("codice_ipa = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setString(1, codiceIPA);
- rs = stm.executeQuery();
- if (rs.next())
- exist = true;
- rs.close();
- stm.close();
- } catch (Exception e) {
- exist = false;
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- return exist;
- }
- protected Soggetto getSoggetto(String codiceIPA) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- long idSoggetto = -1;
- if (codiceIPA == null|| codiceIPA.equals(""))
- throw new DriverRegistroServiziException("Parametro non valido");
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getSoggetto(codiceIPA)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::existsSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("codice_ipa = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setString(1, codiceIPA);
- rs = stm.executeQuery();
- if (rs.next()){
- idSoggetto = rs.getLong("id");
- }
- rs.close();
- stm.close();
- } catch (Exception e) {
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- if(idSoggetto<=0){
- throw new DriverRegistroServiziNotFound("Soggetto con Codice IPA ["+codiceIPA+"] non trovato");
- }
- else{
- return this.getSoggetto(idSoggetto);
- }
- }
- protected String getCodiceIPA(IDSoggetto idSoggetto) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String codiceIPA = null;
- if (idSoggetto == null)
- throw new DriverRegistroServiziException("Parametro non valido");
- String nome_soggetto = idSoggetto.getNome();
- String tipo_soggetto = idSoggetto.getTipo();
- if (nome_soggetto == null || nome_soggetto.equals(""))
- throw new DriverRegistroServiziException("Parametro Nome non valido");
- if (tipo_soggetto == null || tipo_soggetto.equals(""))
- throw new DriverRegistroServiziException("Parametro Tipo non valido");
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getCodiceIPA(idSoggetto)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::existsSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("tipo_soggetto = ?");
- sqlQueryObject.addWhereCondition("nome_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setString(1, tipo_soggetto);
- stm.setString(2, nome_soggetto);
- rs = stm.executeQuery();
- if (rs.next()){
- codiceIPA = rs.getString("codice_ipa");
- }
- rs.close();
- stm.close();
- } catch (Exception e) {
- this.driver.log.error("Errore durante verifica esistenza soggetto :", e);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- if(codiceIPA==null){
- throw new DriverRegistroServiziNotFound("Soggetto ["+tipo_soggetto+"/"+nome_soggetto+"] non trovato");
- }
- else{
- return codiceIPA;
- }
- }
- protected void updateSoggetto(org.openspcoop2.core.registry.Soggetto soggetto) throws DriverRegistroServiziException {
- if (soggetto == null)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::updateSoggetto] Parametro non valido.");
- PreparedStatement stm=null;
- ResultSet rs=null;
- Connection con = null;
- boolean error = false;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("updateSoggetto");
- con.setAutoCommit(false);
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::updateSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- /**
- * L'aggiornamente del tipo/nome soggetto scatena anche l'aggiornamento del nome
- * dei connettori oltre che del soggetto stesso anche dei fruitori di servizi in cui il soggetto puo essere
- * o l'erogatore o il fruitore
- */
- String oldNomeSoggetto=null;
- String oldTipoSoggetto=null;
- if(soggetto.getOldIDSoggettoForUpdate()!=null){
- oldNomeSoggetto = soggetto.getOldIDSoggettoForUpdate().getNome();
- oldTipoSoggetto = soggetto.getOldIDSoggettoForUpdate().getTipo();
- }
- String nomeSoggetto=soggetto.getNome();
- String tipoSoggetto=soggetto.getTipo();
- if(tipoSoggetto==null || tipoSoggetto.equals("")) throw new DriverRegistroServiziException("Parametro Tipo Soggetto non valido.");
- if(nomeSoggetto==null || nomeSoggetto.equals("")) throw new DriverRegistroServiziException("Parametro Nome Soggetto non valido.");
- if(oldNomeSoggetto==null || oldNomeSoggetto.equals("")) oldNomeSoggetto=nomeSoggetto;
- if(oldTipoSoggetto==null || oldTipoSoggetto.equals("")) oldTipoSoggetto=tipoSoggetto;
- //se tipo o nome sono cambiati effettuo modifiche su connettore
- if(!tipoSoggetto.equals(oldTipoSoggetto) || !nomeSoggetto.equals(oldNomeSoggetto)){
- //pattern nome connettore servizio fruitore
- // CNT_SF_tipo/nome(fruitore del servizio)+tipo/nome(erogatore del servizio)+tipo/nome(servizio)
- // "CNT_SF_" + tipoFruitore + "/" + nomeFruitore+"_"+ tipoErogatore+"/"+nomeErogatore +"_"+ tiposervizio + "/" + nomeservizio
- //devo modificare la prima e la seconda parte del pattern
- String regex = "CNT_SF_(.*)\\/(.*)_(.*)\\/(.*)_(.*)\\/(.*)";
- //recupero i connettori da modificare dove il soggetto e' erogatore
- //0 soggetti
- //1 servizi
- //2 servizi_fruitori
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI_FRUITORI+".id_connettore");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio = "+CostantiDB.SERVIZI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm=con.prepareStatement(sqlQuery);
- stm.setString(1, oldTipoSoggetto);
- stm.setString(2, oldNomeSoggetto);
- rs=stm.executeQuery();
- while(rs.next()){
- long idConnettore=rs.getLong("id_connettore");
- Connettore connettore = this.driver.getConnettore(idConnettore, con);
- String oldNomeConnettore=connettore.getNome();
- //controllo se il nome connettore matcha la regex
- if(oldNomeConnettore.matches(regex)){
- this.driver.logDebug("Tento aggiornamento connettore id: ["+idConnettore+"] oldNome: ["+oldNomeConnettore+"]...");
- //splitto la stringa in modo da prendermi i valori separatamente
- //l'array sara composto da [CNT,SF,tipo/nomeFruitore,tipo/nomeErogatore,tipo/nomeServizio]
- String[] val=oldNomeConnettore.split("_");
- //i=2 contiene il tipo/nome del soggetto fruitore
- //i=3 contiene il tipo/nome del soggetto erogatore (che bisogna cambiare)
- //i=4 contiene il tipo/nome del servizio
- String newNomeConnettore = "CNT_SF_"+val[2]+ tipoSoggetto+"/"+nomeSoggetto +val[4];
- this.driver.logDebug("nuovo nome connettore ["+newNomeConnettore+"]");
- connettore.setNome(newNomeConnettore);
- //aggiorno il connettore
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.UPDATE, connettore, con, this.driver.getDriverWrapBYOK());
- }
- }
- rs.close();
- stm.close();
- //recupero i connettori da modificare dove il soggetto e' fruitore
- //0 soggetti
- //1 servizi_fruitori
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI_FRUITORI+".id_connettore");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm=con.prepareStatement(sqlQuery);
- stm.setString(1, oldTipoSoggetto);
- stm.setString(2, oldNomeSoggetto);
- rs=stm.executeQuery();
- while(rs.next()){
- long idConnettore=rs.getLong("id_connettore");
- Connettore connettore = this.driver.getConnettore(idConnettore, con);
- String oldNomeConnettore=connettore.getNome();
- //controllo se il nome connettore matcha la regex
- if(oldNomeConnettore.matches(regex)){
- this.driver.logDebug("Tento aggiornamento connettore id: ["+idConnettore+"] oldNome: ["+oldNomeConnettore+"]...");
- //splitto la stringa in modo da prendermi i valori separatamente
- //l'array sara composto da [CNT,SF,tipo/nomeFruitore,tipo/nomeErogatore,tipo/nomeServizio]
- String[] val=oldNomeConnettore.split("_");
- //i=2 contiene il tipo/nome del soggetto fruitore (che bisogna cambiare)
- //i=3 contiene il tipo/nome del soggetto erogatore
- //i=4 contiene il tipo/nome del servizio
- String newNomeConnettore = "CNT_SF_"+tipoSoggetto+"/"+nomeSoggetto+val[3]+val[4];
- this.driver.logDebug("nuovo nome connettore ["+newNomeConnettore+"]");
- connettore.setNome(newNomeConnettore);
- //aggiorno il connettore
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.UPDATE, connettore, con, this.driver.getDriverWrapBYOK());
- }
- }
- rs.close();
- stm.close();
- }
- // UPDATE soggetto
- DriverRegistroServiziDB_soggettiLIB.CRUDSoggetto(2, soggetto, con, this.driver.tipoDB, this.driver.getDriverWrapBYOK());
- } catch (Exception qe) {
- error = true;
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::updateSoggetto] Errore durante l'aggiornamento del soggetto : " + qe.getMessage(),qe);
- } finally {
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(error,con);
- }
- }
- protected void deleteSoggetto(org.openspcoop2.core.registry.Soggetto soggetto) throws DriverRegistroServiziException {
- if (soggetto == null)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::deleteSoggetto] Parametro non valido.");
- Connection con = null;
- boolean error = false;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("deleteSoggetto");
- con.setAutoCommit(false);
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::deleteSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- this.driver.logDebug("CRUDSoggetto type = 3");
- // DELETE soggetto
- DriverRegistroServiziDB_soggettiLIB.CRUDSoggetto(3, soggetto, con, this.driver.tipoDB, this.driver.getDriverWrapBYOK());
- } catch (Exception qe) {
- error = true;
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::deleteSoggetto] Errore durante l'eliminazione del soggetto : " + qe.getMessage(),qe);
- } finally {
- this.driver.closeConnection(error,con);
- }
- }
- protected IDSoggetto[] getSoggettiWithSuperuser(String user) throws DriverRegistroServiziException {
- IDSoggetto [] idSoggetti = null;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getSoggettiWithSuperuser");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziException::getSoggettiWithSuperuser] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
- try {
- List<IDSoggetto> idTrovati = new ArrayList<IDSoggetto>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("tipo_soggetto");
- sqlQueryObject.addSelectField("nome_soggetto");
- sqlQueryObject.addWhereCondition("superuser = ?");
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setString(1, user);
- this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, CostantiRegistroServizi.ABILITATO));
- rs = stm.executeQuery();
- // prendo il primo router se c'e' altrimenti lancio eccezione.
- while (rs.next()) {
- IDSoggetto id = new IDSoggetto();
- id.setTipo(rs.getString("tipo_soggetto"));
- id.setNome(rs.getString("nome_soggetto"));
- idTrovati.add(id);
- }
- if(idTrovati.size()>0){
- idSoggetti = new IDSoggetto[1];
- idSoggetti = idTrovati.toArray(idSoggetti);
- }
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziException::getSoggettiWithSuperuser] SqlException: " + se.getMessage(),se);
- }catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziException::getSoggettiWithSuperuser] Exception: " + se.getMessage(),se);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(con);
- }
- return idSoggetti;
- }
-
- protected List<String> nomiProprietaSoggetti(List<String> tipoSoggettiProtocollo) throws DriverConfigurazioneException {
- String queryString;
- Connection con = null;
- PreparedStatement stmt=null;
- ResultSet risultato=null;
- ArrayList<String> lista = new ArrayList<>();
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("nomiProprietaSoggetti");
- } catch (Exception e) {
- throw new DriverConfigurazioneException("[DriverRegistroServiziDB::nomiProprietaSoggetti] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI_PROPS);
- sqlQueryObject.setSelectDistinct(true);
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI_PROPS + ".nome");
-
- if((tipoSoggettiProtocollo != null && tipoSoggettiProtocollo.size() > 0)) {
- sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI_PROPS + ".id_soggetto = "+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- String [] tipiServiziProtocolloS = tipoSoggettiProtocollo.toArray(new String[tipoSoggettiProtocollo.size()]);
- sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+".tipo_soggetto", true, tipiServiziProtocolloS);
- }
-
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI_PROPS + ".nome");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setANDLogicOperator(true);
-
- queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- risultato = stmt.executeQuery();
- while (risultato.next()) {
- lista.add(risultato.getString("nome"));
- }
- return lista;
- } catch (Exception qe) {
- throw new DriverConfigurazioneException("[DriverRegistroServiziDB::nomiProprietaSoggetti] Errore : " + qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(risultato, stmt);
- this.driver.closeConnection(con);
- }
- }
-
- protected boolean isSoggettoInUsoInPackageFinali(Soggetto ss, Map<ErrorsHandlerCostant,String> whereIsInUso) throws DriverRegistroServiziException {
- return isSoggettoInUso(ss,whereIsInUso,true,false);
- }
- protected boolean isSoggettoInUsoInPackagePubblici(Soggetto ss, Map<ErrorsHandlerCostant,String> whereIsInUso) throws DriverRegistroServiziException {
- return isSoggettoInUso(ss,whereIsInUso,false,true);
- }
- protected boolean isSoggettoInUso(Soggetto ss, Map<ErrorsHandlerCostant,String> whereIsInUso) throws DriverRegistroServiziException {
- return isSoggettoInUso(ss,whereIsInUso,false,false);
- }
- private boolean isSoggettoInUso(Soggetto ss, Map<ErrorsHandlerCostant,String> whereIsInUso,boolean checkOnlyStatiFinali,boolean checkOnlyStatiPubblici) throws DriverRegistroServiziException {
- String nomeMetodo = "isSoggettoInUso";
- Connection con = null;
- PreparedStatement stmt = null;
- ResultSet risultato = null;
- if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("isSoggettoInUso");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione this.atomica = " + this.driver.atomica);
- try {
- boolean isInUso = false;
- List<String> nomiServizi = new ArrayList<>();
- List<String> serviziFruitori = new ArrayList<>();
- List<String> accordi = new ArrayList<>();
- List<String> accordi_cooperazione = new ArrayList<>();
- List<String> partecipanti = new ArrayList<>();
- //controllo se in uso in servizi
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- if(checkOnlyStatiFinali){
- sqlQueryObject.addWhereCondition("stato = ?");
- }
- if(checkOnlyStatiPubblici){
- sqlQueryObject.addWhereCondition("privato = ?");
- }
- sqlQueryObject.setANDLogicOperator(true);
- String queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- stmt.setLong(1, ss.getId());
- int index = 2;
- if(checkOnlyStatiFinali){
- stmt.setString(index, StatiAccordo.finale.toString());
- index++;
- }
- if(checkOnlyStatiPubblici){
- stmt.setInt(index, 0);
- index++;
- }
- risultato = stmt.executeQuery();
- while (risultato.next()){
- isInUso=true;
- String nomeServizio = risultato.getString("tipo_servizio")+"/"+risultato.getString("nome_servizio");
- nomiServizi.add(nomeServizio);
- }
- risultato.close();
- stmt.close();
- if(nomiServizi.size()>0) whereIsInUso.put(ErrorsHandlerCostant.IN_USO_IN_SERVIZI, nomiServizi.toString());
- // controllo se in uso in fruitori
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- if(checkOnlyStatiFinali){
- sqlQueryObject.addWhereCondition("stato = ?");
- }
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- stmt.setLong(1, ss.getId());
- if(checkOnlyStatiFinali){
- stmt.setString(2, StatiAccordo.finale.toString());
- }
- risultato = stmt.executeQuery();
- while (risultato.next()){
- isInUso=true;
- AccordoServizioParteSpecifica servizio = this.driver.getAccordoServizioParteSpecifica(risultato.getLong("id_servizio"));
- String uriServizio = this.driver.idServizioFactory.getUriFromAccordo(servizio);
- if(checkOnlyStatiPubblici){
- if(servizio.getPrivato()==null || servizio.getPrivato()==false){
- serviziFruitori.add(uriServizio);
- }
- }else{
- serviziFruitori.add(uriServizio);
- }
- }
- risultato.close();
- stmt.close();
- if(serviziFruitori.size()>0) whereIsInUso.put(ErrorsHandlerCostant.POSSIEDE_FRUITORI, serviziFruitori.toString());
- //controllo se referente
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_referente = ?");
- if(checkOnlyStatiFinali){
- sqlQueryObject.addWhereCondition("stato = ?");
- }
- if(checkOnlyStatiPubblici){
- sqlQueryObject.addWhereCondition("privato = ?");
- }
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- stmt.setLong(1, ss.getId());
- index = 2;
- if(checkOnlyStatiFinali){
- stmt.setString(index, StatiAccordo.finale.toString());
- index++;
- }
- if(checkOnlyStatiPubblici){
- stmt.setInt(index, 0);
- index++;
- }
- risultato = stmt.executeQuery();
- while (risultato.next()){
- isInUso=true;
- AccordoServizioParteComune accordo = this.driver.getAccordoServizioParteComune(risultato.getLong("id"));
- accordi.add(this.driver.idAccordoFactory.getUriFromAccordo(accordo));
- }
- risultato.close();
- stmt.close();
- if(accordi.size()>0) whereIsInUso.put(ErrorsHandlerCostant.IS_REFERENTE, accordi.toString());
- //controllo se referente in accordi cooperazione
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.ACCORDI_COOPERAZIONE);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_referente = ?");
- if(checkOnlyStatiFinali){
- sqlQueryObject.addWhereCondition("stato = ?");
- }
- if(checkOnlyStatiPubblici){
- sqlQueryObject.addWhereCondition("privato = ?");
- }
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- stmt.setLong(1, ss.getId());
- index = 2;
- if(checkOnlyStatiFinali){
- stmt.setString(index, StatiAccordo.finale.toString());
- index++;
- }
- if(checkOnlyStatiPubblici){
- stmt.setInt(index, 0);
- index++;
- }
- risultato = stmt.executeQuery();
- while (risultato.next()){
- isInUso=true;
- AccordoCooperazione accordo = this.driver.getAccordoCooperazione(risultato.getLong("id"));
- accordi_cooperazione.add(this.driver.idAccordoCooperazioneFactory.getUriFromAccordo(accordo));
- }
- risultato.close();
- stmt.close();
- if(accordi_cooperazione.size()>0) whereIsInUso.put(ErrorsHandlerCostant.IS_REFERENTE_COOPERAZIONE, accordi_cooperazione.toString());
- //controllo se partecipante in cooperazione
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.ACCORDI_COOPERAZIONE_PARTECIPANTI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = con.prepareStatement(queryString);
- stmt.setLong(1, ss.getId());
- risultato = stmt.executeQuery();
- while (risultato.next()){
- AccordoCooperazione accordo = this.driver.getAccordoCooperazione(risultato.getLong("id_accordo_cooperazione"));
- if(checkOnlyStatiFinali){
- if(StatiAccordo.finale.toString().equals(accordo.getStatoPackage())){
- isInUso=true;
- partecipanti.add(this.driver.idAccordoCooperazioneFactory.getUriFromAccordo(accordo));
- }
- }else if(checkOnlyStatiPubblici){
- if(accordo.getPrivato()==null || accordo.getPrivato()==false){
- isInUso=true;
- partecipanti.add(this.driver.idAccordoCooperazioneFactory.getUriFromAccordo(accordo));
- }
- }else{
- isInUso=true;
- partecipanti.add(this.driver.idAccordoCooperazioneFactory.getUriFromAccordo(accordo));
- }
- }
- risultato.close();
- stmt.close();
- if(partecipanti.size()>0) whereIsInUso.put(ErrorsHandlerCostant.IS_PARTECIPANTE_COOPERAZIONE, partecipanti.toString());
- return isInUso;
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(risultato, stmt);
- this.driver.closeConnection(con);
- }
- }
-
- protected IDSoggetto getIdSoggetto(long idSoggetto) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- return getIdSoggetto(idSoggetto,null);
- }
- protected IDSoggetto getIdSoggetto(long idSoggetto,Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
- // conrollo consistenza
- if (idSoggetto <= 0)
- return null;
- IDSoggetto idSoggettoObject = null;
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(conParam!=null){
- con = conParam;
- }
- else if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getIdSoggetto(longId)");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("DriverRegistroServiziDB::getIdSoggetto] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("tipo_soggetto");
- sqlQueryObject.addSelectField("nome_soggetto");
- sqlQueryObject.addWhereCondition("id = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idSoggetto);
- this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idSoggetto));
- rs = stm.executeQuery();
- if (rs.next()) {
- idSoggettoObject = new IDSoggetto();
- // String tmp = rs.getString("nomeprov");
- // soggetto.setNome(( (tmp==null || tmp.equals("") ) ?
- // null : tmp));
- idSoggettoObject.setNome(rs.getString("nome_soggetto"));
- // tmp = rs.getString("tipoprov");
- // soggetto.setTipo(( (tmp==null || tmp.equals("") ) ?
- // null : tmp));
- idSoggettoObject.setTipo(rs.getString("tipo_soggetto"));
- }else{
- throw new DriverRegistroServiziNotFound("Nessun risultato trovato eseguendo: "+DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idSoggetto));
- }
- return idSoggettoObject;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getIdSoggetto] SqlException: " + se.getMessage(),se);
- }catch (DriverRegistroServiziNotFound se) {
- throw se;
- }catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getIdSoggetto] Exception: " + se.getMessage(),se);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(conParam, con);
- }
- }
-
-
-
- protected List<IDSoggetto> getSoggettiDefault() throws DriverRegistroServiziException {
- return getSoggettiDefault(null);
- }
- protected List<IDSoggetto> getSoggettiDefault(Connection conParam) throws DriverRegistroServiziException {
- List<IDSoggetto> soggettiDefault = new ArrayList<IDSoggetto>();
- Connection con = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(conParam!=null){
- con = conParam;
- }
- else if (this.driver.atomica) {
- try {
- con = this.driver.getConnectionFromDatasource("getSoggettiDefault()");
- } catch (Exception e) {
- throw new DriverRegistroServiziException("DriverRegistroServiziDB::getSoggettiDefault] Exception accedendo al datasource :" + e.getMessage(),e);
- }
- } else
- con = this.driver.globalConnection;
- this.driver.logDebug("operazione atomica = " + this.driver.atomica);
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField("tipo_soggetto");
- sqlQueryObject.addSelectField("nome_soggetto");
- sqlQueryObject.addWhereCondition("is_default = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(sqlQuery);
- stm.setInt(1, CostantiDB.TRUE);
- this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, CostantiDB.TRUE));
- rs = stm.executeQuery();
- while (rs.next()) {
-
- IDSoggetto idSoggetto = new IDSoggetto(rs.getString("tipo_soggetto"), rs.getString("nome_soggetto"));
- soggettiDefault.add(idSoggetto);
- }
-
- if(soggettiDefault.isEmpty()) {
- throw new DriverRegistroServiziNotFound("Nessun risultato trovato eseguendo: "+DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, CostantiDB.TRUE));
- }
- return soggettiDefault;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggettiDefault] SqlException: " + se.getMessage(),se);
- }catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getSoggettiDefault] Exception: " + se.getMessage(),se);
- } finally {
- //Chiudo statement and resultset
- JDBCUtilities.closeResources(rs, stm);
- this.driver.closeConnection(conParam, con);
- }
- }
- }