DriverConfigurazioneDB_allarmiDriver.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.config.driver.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.openspcoop2.core.allarmi.Allarme;
import org.openspcoop2.core.allarmi.constants.RuoloPorta;
import org.openspcoop2.core.allarmi.constants.StatoAllarme;
import org.openspcoop2.core.allarmi.utils.AllarmiConverterUtils;
import org.openspcoop2.core.allarmi.utils.AllarmiDriverUtils;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.utils.jdbc.JDBCUtilities;
import org.openspcoop2.utils.sql.ISQLQueryObject;
import org.openspcoop2.utils.sql.SQLObjectFactory;
/**
* DriverConfigurazioneDB_allarmiDriver
*
*
* @author Sandra Giangrandi (sandra@link.it)
* @author Stefano Corallo (corallo@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class DriverConfigurazioneDB_allarmiDriver {
private DriverConfigurazioneDB driver = null;
protected DriverConfigurazioneDB_allarmiDriver(DriverConfigurazioneDB driver) {
this.driver = driver;
}
protected long countAllarmi(String tipologiaRicerca, Boolean enabled, StatoAllarme stato, Boolean acknowledged, String nomeAllarme,
List<IDSoggetto> listSoggettiProprietariAbilitati, List<IDServizio> listIDServizioAbilitati,
List<String> tipoSoggettiByProtocollo, List<String> tipoServiziByProtocollo,
IDSoggetto idSoggettoProprietario, List<IDServizio> listIDServizio) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
Connection con = null;
ResultSet rs = null;
PreparedStatement stm = null;
if (this.driver.atomica) {
try {
con = this.driver.getConnectionFromDatasource("countAllarmi");
} catch (Exception e) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB::countAllarmi] Exception accedendo al datasource :" + e.getMessage(),e);
}
} else
con = this.driver.globalConnection;
try {
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.ALLARMI);
sqlQueryObject.addSelectCountField(CostantiDB.ALLARMI + ".id", "numeroAllarmi");
sqlQueryObject.setANDLogicOperator(true);
_setExpressionAllarmi(sqlQueryObject, tipologiaRicerca, enabled, stato, acknowledged, nomeAllarme,
listSoggettiProprietariAbilitati, listIDServizioAbilitati,
tipoSoggettiByProtocollo, tipoServiziByProtocollo,
idSoggettoProprietario, listIDServizio);
String sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
sqlQuery = _setExpressionAllarmiValues(stm, sqlQuery,
tipologiaRicerca, enabled, stato, acknowledged, nomeAllarme,
listSoggettiProprietariAbilitati, listIDServizioAbilitati,
tipoSoggettiByProtocollo, tipoServiziByProtocollo,
idSoggettoProprietario, listIDServizio);
this.driver.logDebug("eseguo query: " + sqlQuery);
rs = stm.executeQuery();
long numeroAllarmi = 0;
if(rs.next()) {
numeroAllarmi = rs.getLong("numeroAllarmi");
}
rs.close(); rs=null;
stm.close(); stm = null;
return numeroAllarmi;
} catch (Exception se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB::countAllarmi] Exception: " + se.getMessage(),se);
} finally {
//Chiudo statement and resultset
JDBCUtilities.closeResources(rs, stm);
this.driver.closeConnection(con);
}
}
protected List<Allarme> findAllAllarmi(String tipologiaRicerca, Boolean enabled, StatoAllarme stato, Boolean acknowledged, String nomeAllarme,
List<IDSoggetto> listSoggettiProprietariAbilitati, List<IDServizio> listIDServizioAbilitati,
List<String> tipoSoggettiByProtocollo, List<String> tipoServiziByProtocollo,
IDSoggetto idSoggettoProprietario, List<IDServizio> listIDServizio,
Integer offset, Integer limit) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
Connection con = null;
ResultSet rs = null;
PreparedStatement stm = null;
if (this.driver.atomica) {
try {
con = this.driver.getConnectionFromDatasource("findAllAllarmi");
} catch (Exception e) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB::findAllAllarmi] Exception accedendo al datasource :" + e.getMessage(),e);
}
} else
con = this.driver.globalConnection;
try {
List<Allarme> list = new ArrayList<Allarme>();
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.ALLARMI);
sqlQueryObject.addSelectField(CostantiDB.ALLARMI + ".id");
sqlQueryObject.addSelectField(CostantiDB.ALLARMI + ".alias");
sqlQueryObject.setANDLogicOperator(true);
_setExpressionAllarmi(sqlQueryObject, tipologiaRicerca, enabled, stato, acknowledged, nomeAllarme,
listSoggettiProprietariAbilitati, listIDServizioAbilitati,
tipoSoggettiByProtocollo, tipoServiziByProtocollo,
idSoggettoProprietario, listIDServizio);
sqlQueryObject.addOrderBy("alias");
if(offset!=null) {
sqlQueryObject.setOffset(offset);
}
if(limit!=null) {
sqlQueryObject.setLimit(limit);
}
String sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
sqlQuery = _setExpressionAllarmiValues(stm, sqlQuery,
tipologiaRicerca, enabled, stato, acknowledged, nomeAllarme,
listSoggettiProprietariAbilitati, listIDServizioAbilitati,
tipoSoggettiByProtocollo, tipoServiziByProtocollo,
idSoggettoProprietario, listIDServizio);
this.driver.logDebug("eseguo query: " + sqlQuery);
rs = stm.executeQuery();
while(rs.next()) {
long idAllarme = rs.getLong("id");
list.add(AllarmiDriverUtils.getAllarme(idAllarme, con, this.driver.log, this.driver.tipoDB));
}
rs.close(); rs=null;
stm.close(); stm = null;
return list;
} catch (Exception se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB::findAllAllarmi] Exception: " + se.getMessage(),se);
} finally {
//Chiudo statement and resultset
JDBCUtilities.closeResources(rs, stm);
this.driver.closeConnection(con);
}
}
private void _setExpressionAllarmi(ISQLQueryObject sqlQueryObject, String tipologiaRicerca, Boolean enabled, StatoAllarme stato, Boolean acknowledged, String nomeAllarme,
List<IDSoggetto> listSoggettiProprietariAbilitati, List<IDServizio> listIDServizioAbilitati,
List<String> tipoSoggettiByProtocollo, List<String> tipoServiziByProtocollo,
IDSoggetto idSoggettoProprietario, List<IDServizio> listIDServizio) throws Exception {
if(enabled!=null){
sqlQueryObject.addWhereCondition("enabled=?");
}
if(stato!=null){
sqlQueryObject.addWhereCondition("stato=?");
}
if(acknowledged!=null){
sqlQueryObject.addWhereCondition("acknowledged=?");
}
if(nomeAllarme!=null) {
sqlQueryObject.addWhereLikeCondition("alias", nomeAllarme, true, true);
}
ISQLQueryObject sqlQueryObjectPorteApplicative = null;
ISQLQueryObject sqlQueryObjectPorteDelegate = null;
if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_CONFIGURAZIONE.equals(tipologiaRicerca)) {
sqlQueryObject.addWhereIsNullCondition("filtro_porta");
}
if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_APPLICATIVA.equals(tipologiaRicerca) || CostantiConfigurazione.ALLARMI_TIPOLOGIA_SOLO_ASSOCIATE.equals(tipologiaRicerca)) {
String alias_PA = "pa";
String alias_SOGGETTI = "sog";
sqlQueryObjectPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,alias_PA);
sqlQueryObjectPorteApplicative.setANDLogicOperator(true);
sqlQueryObjectPorteApplicative.addWhereCondition(CostantiDB.ALLARMI+".filtro_ruolo=?");
sqlQueryObjectPorteApplicative.addWhereCondition(CostantiDB.ALLARMI+".filtro_porta="+alias_PA+".nome_porta");
sqlQueryObjectPorteApplicative.addWhereIsNotNullCondition(alias_PA+".tipo_servizio");
sqlQueryObjectPorteApplicative.addWhereIsNotNullCondition(alias_PA+".servizio");
sqlQueryObjectPorteApplicative.addWhereIsNotNullCondition(alias_PA+".versione_servizio");
if( (listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty())
||
(listIDServizioAbilitati!=null && !listIDServizioAbilitati.isEmpty())
||
(tipoSoggettiByProtocollo!=null && !tipoSoggettiByProtocollo.isEmpty())
||
idSoggettoProprietario!=null
||
listIDServizio!=null && !listIDServizio.isEmpty()
) {
sqlQueryObjectPorteApplicative.addFromTable(CostantiDB.SOGGETTI,alias_SOGGETTI);
sqlQueryObjectPorteApplicative.addWhereCondition(alias_PA+".id_soggetto = "+alias_SOGGETTI+".id");
}
// Utenza permessi
List<String> condizioniUtenza = new ArrayList<>();
if(listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty()) {
ISQLQueryObject sqlQueryObjectUtenzaSoggetto = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectUtenzaSoggetto.setANDLogicOperator(true);
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDSoggetto idSoggetto : listSoggettiProprietariAbilitati) {
ISQLQueryObject sqlQueryObjectSoggetto = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectSoggetto.setANDLogicOperator(true);
sqlQueryObjectSoggetto.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectSoggetto.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
condizioni.add(sqlQueryObjectSoggetto.createSQLConditions());
}
sqlQueryObjectUtenzaSoggetto.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
condizioniUtenza.add(sqlQueryObjectUtenzaSoggetto.createSQLConditions());
}
if(listIDServizioAbilitati!=null && !listIDServizioAbilitati.isEmpty()) {
ISQLQueryObject sqlQueryObjectUtenzaServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectUtenzaServizio.setANDLogicOperator(true);
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDServizio idServizio : listIDServizioAbilitati) {
ISQLQueryObject sqlQueryObjectServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectServizio.setANDLogicOperator(true);
sqlQueryObjectServizio.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectServizio.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".tipo_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".versione_servizio = ?");
condizioni.add(sqlQueryObjectServizio.createSQLConditions());
}
sqlQueryObjectUtenzaServizio.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
condizioniUtenza.add(sqlQueryObjectUtenzaServizio.createSQLConditions());
}
if(!condizioniUtenza.isEmpty()) {
sqlQueryObjectPorteApplicative.addWhereCondition(false, condizioniUtenza.toArray(new String[condizioniUtenza.size()]));
}
// protocollo
if(tipoSoggettiByProtocollo!=null && !tipoSoggettiByProtocollo.isEmpty()) {
sqlQueryObjectPorteApplicative.addWhereINCondition(alias_SOGGETTI+".tipo_soggetto", true, tipoSoggettiByProtocollo.toArray(new String[tipoSoggettiByProtocollo.size()]));
}
if(tipoServiziByProtocollo!=null && !tipoServiziByProtocollo.isEmpty()) {
sqlQueryObjectPorteApplicative.addWhereINCondition(alias_PA+".tipo_servizio", true, tipoServiziByProtocollo.toArray(new String[tipoServiziByProtocollo.size()]));
}
// soggetto proprietario
if(idSoggettoProprietario!=null) {
sqlQueryObjectPorteApplicative.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectPorteApplicative.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
}
// servizi
if(listIDServizio!=null && !listIDServizio.isEmpty()) {
if(listIDServizio.size()==1) {
sqlQueryObjectPorteApplicative.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectPorteApplicative.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
sqlQueryObjectPorteApplicative.addWhereCondition(alias_PA+".tipo_servizio = ?");
sqlQueryObjectPorteApplicative.addWhereCondition(alias_PA+".servizio = ?");
sqlQueryObjectPorteApplicative.addWhereCondition(alias_PA+".versione_servizio = ?");
}
else {
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDServizio idServizio : listIDServizio) {
ISQLQueryObject sqlQueryObjectServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectServizio.setANDLogicOperator(true);
sqlQueryObjectServizio.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectServizio.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".tipo_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PA+".versione_servizio = ?");
condizioni.add(sqlQueryObjectServizio.createSQLConditions());
}
sqlQueryObjectPorteApplicative.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
}
}
}
if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_DELEGATA.equals(tipologiaRicerca) || CostantiConfigurazione.ALLARMI_TIPOLOGIA_SOLO_ASSOCIATE.equals(tipologiaRicerca)) {
String alias_PD = "pd";
String alias_SOGGETTI = "sog";
sqlQueryObjectPorteDelegate = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE,alias_PD);
sqlQueryObjectPorteDelegate.setANDLogicOperator(true);
sqlQueryObjectPorteDelegate.addWhereCondition(CostantiDB.ALLARMI+".filtro_ruolo=?");
sqlQueryObjectPorteDelegate.addWhereCondition(CostantiDB.ALLARMI+".filtro_porta="+alias_PD+".nome_porta");
sqlQueryObjectPorteDelegate.addWhereIsNotNullCondition(alias_PD+".tipo_soggetto_erogatore");
sqlQueryObjectPorteDelegate.addWhereIsNotNullCondition(alias_PD+".nome_soggetto_erogatore");
sqlQueryObjectPorteDelegate.addWhereIsNotNullCondition(alias_PD+".tipo_servizio");
sqlQueryObjectPorteDelegate.addWhereIsNotNullCondition(alias_PD+".nome_servizio");
sqlQueryObjectPorteDelegate.addWhereIsNotNullCondition(alias_PD+".versione_servizio");
if( (listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty())
||
(tipoSoggettiByProtocollo!=null && !tipoSoggettiByProtocollo.isEmpty())
||
(tipoServiziByProtocollo!=null && !tipoServiziByProtocollo.isEmpty())
||
idSoggettoProprietario!=null
) {
sqlQueryObjectPorteDelegate.addFromTable(CostantiDB.SOGGETTI,alias_SOGGETTI);
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".id_soggetto = "+alias_SOGGETTI+".id");
}
// Utenza permessi
List<String> condizioniUtenza = new ArrayList<>();
if(listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty()) {
ISQLQueryObject sqlQueryObjectUtenzaSoggetto = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectUtenzaSoggetto.setANDLogicOperator(true);
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDSoggetto idSoggetto : listSoggettiProprietariAbilitati) {
ISQLQueryObject sqlQueryObjectSoggetto = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectSoggetto.setANDLogicOperator(true);
sqlQueryObjectSoggetto.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectSoggetto.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
condizioni.add(sqlQueryObjectSoggetto.createSQLConditions());
}
sqlQueryObjectUtenzaSoggetto.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
condizioniUtenza.add(sqlQueryObjectUtenzaSoggetto.createSQLConditions());
}
if(listIDServizioAbilitati!=null && !listIDServizioAbilitati.isEmpty()) {
ISQLQueryObject sqlQueryObjectUtenzaServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectUtenzaServizio.setANDLogicOperator(true);
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDServizio idServizio : listIDServizioAbilitati) {
ISQLQueryObject sqlQueryObjectServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectServizio.setANDLogicOperator(true);
sqlQueryObjectServizio.addWhereCondition(alias_PD+".tipo_soggetto_erogatore = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".nome_soggetto_erogatore = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".tipo_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".nome_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".versione_servizio = ?");
condizioni.add(sqlQueryObjectServizio.createSQLConditions());
}
sqlQueryObjectUtenzaServizio.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
condizioniUtenza.add(sqlQueryObjectUtenzaServizio.createSQLConditions());
}
if(!condizioniUtenza.isEmpty()) {
sqlQueryObjectPorteDelegate.addWhereCondition(false, condizioniUtenza.toArray(new String[condizioniUtenza.size()]));
}
// protocollo
if(tipoSoggettiByProtocollo!=null && !tipoSoggettiByProtocollo.isEmpty()) {
sqlQueryObjectPorteDelegate.addWhereINCondition(alias_SOGGETTI+".tipo_soggetto", true, tipoSoggettiByProtocollo.toArray(new String[tipoSoggettiByProtocollo.size()]));
sqlQueryObjectPorteDelegate.addWhereINCondition(alias_PD+".tipo_soggetto_erogatore", true, tipoSoggettiByProtocollo.toArray(new String[tipoSoggettiByProtocollo.size()]));
}
if(tipoServiziByProtocollo!=null && !tipoServiziByProtocollo.isEmpty()) {
sqlQueryObjectPorteDelegate.addWhereINCondition(alias_PD+".tipo_servizio", true, tipoServiziByProtocollo.toArray(new String[tipoServiziByProtocollo.size()]));
}
// soggetto proprietario
if(idSoggettoProprietario!=null) {
sqlQueryObjectPorteDelegate.addWhereCondition(alias_SOGGETTI+".tipo_soggetto = ?");
sqlQueryObjectPorteDelegate.addWhereCondition(alias_SOGGETTI+".nome_soggetto = ?");
}
// servizi
if(listIDServizio!=null && !listIDServizio.isEmpty()) {
if(listIDServizio.size()==1) {
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".tipo_soggetto_erogatore = ?");
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".nome_soggetto_erogatore = ?");
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".tipo_servizio = ?");
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".nome_servizio = ?");
sqlQueryObjectPorteDelegate.addWhereCondition(alias_PD+".versione_servizio = ?");
}
else {
List<String> condizioni = new ArrayList<>();
for (@SuppressWarnings("unused") IDServizio idServizio : listIDServizio) {
ISQLQueryObject sqlQueryObjectServizio = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectServizio.setANDLogicOperator(true);
sqlQueryObjectServizio.addWhereCondition(alias_PD+".tipo_soggetto_erogatore = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".nome_soggetto_erogatore = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".tipo_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".nome_servizio = ?");
sqlQueryObjectServizio.addWhereCondition(alias_PD+".versione_servizio = ?");
condizioni.add(sqlQueryObjectServizio.createSQLConditions());
}
sqlQueryObjectPorteDelegate.addWhereCondition(false, condizioni.toArray(new String[condizioni.size()]));
}
}
}
if(sqlQueryObjectPorteApplicative!=null && sqlQueryObjectPorteDelegate!=null) {
ISQLQueryObject sqlQueryObjectOR = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
sqlQueryObjectOR.setANDLogicOperator(false);
sqlQueryObjectOR.addWhereExistsCondition(false, sqlQueryObjectPorteApplicative);
sqlQueryObjectOR.addWhereExistsCondition(false, sqlQueryObjectPorteDelegate);
sqlQueryObject.addWhereCondition(sqlQueryObjectOR.createSQLConditions());
}
else if(sqlQueryObjectPorteApplicative!=null) {
sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectPorteApplicative);
}
else if(sqlQueryObjectPorteDelegate!=null) {
sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectPorteDelegate);
}
}
private String _setExpressionAllarmiValues(PreparedStatement stm, String query,
String tipologiaRicerca,Boolean enabled, StatoAllarme stato, Boolean acknowledged, String nomeAllarme,
List<IDSoggetto> listSoggettiProprietariAbilitati, List<IDServizio> listIDServizioAbilitati,
List<String> tipoSoggettiByProtocollo, List<String> tipoServiziByProtocollo,
IDSoggetto idSoggettoProprietario, List<IDServizio> listIDServizio) throws Exception {
int index = 1;
if(enabled!=null){
int v = enabled? CostantiDB.TRUE : CostantiDB.FALSE;
stm.setInt(index++, v);
query = query.replaceFirst("\\?", v+"");
}
if(stato!=null){
int v = AllarmiConverterUtils.toIntegerValue(stato);
stm.setInt(index++,v);
query = query.replaceFirst("\\?", v+"");
}
if(acknowledged!=null){
int v = acknowledged? CostantiDB.TRUE : CostantiDB.FALSE;
stm.setInt(index++, v);
query = query.replaceFirst("\\?", v+"");
}
if(nomeAllarme!=null) {
// nop
}
// if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_CONFIGURAZIONE.equals(tipologiaRicerca)) {
// // nop
// }
if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_APPLICATIVA.equals(tipologiaRicerca) || CostantiConfigurazione.ALLARMI_TIPOLOGIA_SOLO_ASSOCIATE.equals(tipologiaRicerca)) {
stm.setString(index++, RuoloPorta.APPLICATIVA.getValue()); query = query.replaceFirst("\\?", "'"+RuoloPorta.APPLICATIVA.getValue()+"'");
// Utenza permessi
if(listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty()) {
for (IDSoggetto idSoggetto : listSoggettiProprietariAbilitati) {
stm.setString(index++, idSoggetto.getTipo()); query = query.replaceFirst("\\?", "'"+idSoggetto.getTipo()+"'");
stm.setString(index++, idSoggetto.getNome()); query = query.replaceFirst("\\?", "'"+idSoggetto.getNome()+"'");
}
}
if(listIDServizioAbilitati!=null && !listIDServizioAbilitati.isEmpty()) {
for (IDServizio idServizio : listIDServizioAbilitati) {
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
}
// protocollo
// nop
// soggetto proprietario
if(idSoggettoProprietario!=null) {
stm.setString(index++, idSoggettoProprietario.getTipo()); query = query.replaceFirst("\\?", "'"+idSoggettoProprietario.getTipo()+"'");
stm.setString(index++, idSoggettoProprietario.getNome()); query = query.replaceFirst("\\?", "'"+idSoggettoProprietario.getNome()+"'");
}
// servizi
if(listIDServizio!=null && !listIDServizio.isEmpty()) {
if(listIDServizio.size()==1) {
IDServizio idServizio = listIDServizio.get(0);
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
else {
for (IDServizio idServizio : listIDServizio) {
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
}
}
}
if(CostantiConfigurazione.ALLARMI_TIPOLOGIA_DELEGATA.equals(tipologiaRicerca) || CostantiConfigurazione.ALLARMI_TIPOLOGIA_SOLO_ASSOCIATE.equals(tipologiaRicerca)) {
stm.setString(index++, RuoloPorta.DELEGATA.getValue()); query = query.replaceFirst("\\?", "'"+RuoloPorta.DELEGATA.getValue()+"'");
// Utenza permessi
if(listSoggettiProprietariAbilitati!=null && !listSoggettiProprietariAbilitati.isEmpty()) {
for (IDSoggetto idSoggetto : listSoggettiProprietariAbilitati) {
stm.setString(index++, idSoggetto.getTipo()); query = query.replaceFirst("\\?", "'"+idSoggetto.getTipo()+"'");
stm.setString(index++, idSoggetto.getNome()); query = query.replaceFirst("\\?", "'"+idSoggetto.getNome()+"'");
}
}
if(listIDServizioAbilitati!=null && !listIDServizioAbilitati.isEmpty()) {
for (IDServizio idServizio : listIDServizioAbilitati) {
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
}
// protocollo
// nop
// soggetto proprietario
if(idSoggettoProprietario!=null) {
stm.setString(index++, idSoggettoProprietario.getTipo()); query = query.replaceFirst("\\?", "'"+idSoggettoProprietario.getTipo()+"'");
stm.setString(index++, idSoggettoProprietario.getNome()); query = query.replaceFirst("\\?", "'"+idSoggettoProprietario.getNome()+"'");
}
// servizi
if(listIDServizio!=null && !listIDServizio.isEmpty()) {
if(listIDServizio.size()==1) {
IDServizio idServizio = listIDServizio.get(0);
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
else {
for (IDServizio idServizio : listIDServizio) {
stm.setString(index++, idServizio.getSoggettoErogatore().getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getTipo()+"'");
stm.setString(index++, idServizio.getSoggettoErogatore().getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getSoggettoErogatore().getNome()+"'");
stm.setString(index++, idServizio.getTipo()); query = query.replaceFirst("\\?", "'"+idServizio.getTipo()+"'");
stm.setString(index++, idServizio.getNome()); query = query.replaceFirst("\\?", "'"+idServizio.getNome()+"'");
stm.setInt(index++, idServizio.getVersione()); query = query.replaceFirst("\\?", idServizio.getVersione()+"");
}
}
}
}
return query;
}
}