DriverUsersDB.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.web.lib.users;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Timestamp;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import java.util.Properties;
- import javax.sql.DataSource;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.commons.Filtri;
- import org.openspcoop2.core.commons.ISearch;
- import org.openspcoop2.core.commons.Liste;
- import org.openspcoop2.core.commons.SearchUtils;
- import org.openspcoop2.core.commons.search.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.commons.search.Soggetto;
- import org.openspcoop2.core.commons.search.dao.IDBAccordoServizioParteSpecificaServiceSearch;
- import org.openspcoop2.core.commons.search.dao.IDBSoggettoServiceSearch;
- import org.openspcoop2.core.commons.search.dao.jdbc.JDBCServiceManager;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.constants.PddTipologia;
- import org.openspcoop2.core.registry.driver.IDServizioFactory;
- import org.openspcoop2.generic_project.dao.jdbc.JDBCServiceManagerProperties;
- import org.openspcoop2.protocol.sdk.tracciamento.DriverTracciamentoException;
- import org.openspcoop2.utils.LoggerWrapperFactory;
- import org.openspcoop2.utils.TipiDatabase;
- import org.openspcoop2.utils.date.DateManager;
- import org.openspcoop2.utils.resources.GestoreJNDI;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- import org.openspcoop2.web.lib.users.dao.InterfaceType;
- import org.openspcoop2.web.lib.users.dao.PermessiUtente;
- import org.openspcoop2.web.lib.users.dao.Stato;
- import org.openspcoop2.web.lib.users.dao.UserObjects;
- import org.openspcoop2.web.lib.users.dao.User;
- import org.openspcoop2.web.lib.users.dao.UserPassword;
- import org.slf4j.Logger;
- /**
- * Sono forniti metodi per la lettura dei dati di Users
- *
- *
- * @author Andrea Poli (apoli@link.it)
- * @author Stefano Corallo (corallo@link.it)
- * @author Sandra Giangrandi (sandra@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- *
- */
- public class DriverUsersDB {
- private static final String LOG_DRIVER_DB_USER = "DRIVER_DB_USER";
-
- /**
- * DataSource
- */
- private DataSource datasource = null;
- /**
- * Connessione
- */
- private Connection connection = null;
- private boolean connectionOpenViaJDBCInCostructor = false;
- /**
- * SQLQueryObject
- */
- String tipoDatabase = null;
- /**
- * Logger
- */
- private Logger log;
-
- public void close() throws DriverTracciamentoException {
- try{
- if(this.connectionOpenViaJDBCInCostructor){
- if(this.connection!=null && this.connection.isClosed()==false){
- this.connection.close();
- }
- }
- }catch(Exception e){
- throw new DriverTracciamentoException(e.getMessage(),e);
- }
- }
-
-
-
- public DriverUsersDB(String nomeDataSource, String tipoDatabase, Properties jndiContext) throws DriverUsersDBException {
- this(nomeDataSource, tipoDatabase, jndiContext, null);
- }
- public DriverUsersDB(String nomeDataSource, String tipoDatabase, Properties jndiContext, Logger log) throws DriverUsersDBException {
-
- // Logger
- try {
- if(log==null)
- this.log = LoggerWrapperFactory.getLogger(LOG_DRIVER_DB_USER);
- else
- this.log = log;
- } catch (Exception e) {
- throw new DriverUsersDBException("Errore durante l'inizializzazione del logger...",e);
- }
- // Datasource
- try {
- this.log.info("Inizializzo DriverUsersDB...");
- GestoreJNDI gestoreJNDI = new GestoreJNDI(jndiContext);
- this.datasource = (DataSource) gestoreJNDI.lookup(nomeDataSource);
- if (this.datasource == null)
- throw new Exception ("datasource is null");
- this.log.info("Inizializzo DriverUsersDB terminata.");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del datasource...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del datasource...",e);
- }
- // ISQLQueryObject
- try {
- this.log.info("Inizializzo ISQLQueryObject...");
- if (TipiDatabase.isAMember(tipoDatabase)) {
- this.tipoDatabase = tipoDatabase;
- } else {
- throw new Exception("Tipo database non gestito");
- }
- this.log.info("Inizializzo ISQLQueryObject terminata.");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del SQLQueryObject...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del SQLQueryObject...",e);
- }
-
- }
-
- public DriverUsersDB(DataSource dataSourceObject, String tipoDatabase) throws DriverUsersDBException {
- this(dataSourceObject, tipoDatabase, null);
- }
- public DriverUsersDB(DataSource dataSourceObject, String tipoDatabase, Logger log) throws DriverUsersDBException {
-
- // Logger
- try {
- if(log==null)
- this.log = LoggerWrapperFactory.getLogger(LOG_DRIVER_DB_USER);
- else
- this.log = log;
- } catch (Exception e) {
- throw new DriverUsersDBException("Errore durante l'inizializzazione del logger...",e);
- }
- // Datasource
- try {
- this.datasource = dataSourceObject;
- if (this.datasource == null)
- throw new Exception ("datasource is null");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del datasource...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del datasource...",e);
- }
- // ISQLQueryObject
- try {
- this.log.info("Inizializzo ISQLQueryObject...");
- if (TipiDatabase.isAMember(tipoDatabase)) {
- this.tipoDatabase = tipoDatabase;
- } else {
- throw new Exception("Tipo database non gestito");
- }
- this.log.info("Inizializzo ISQLQueryObject terminata.");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del SQLQueryObject...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del SQLQueryObject...",e);
- }
- }
-
- public DriverUsersDB(Connection connection, String tipoDatabase) throws DriverUsersDBException {
- this(connection, tipoDatabase, null);
- }
- public DriverUsersDB(Connection connection, String tipoDatabase, Logger log) throws DriverUsersDBException {
-
- // Logger
- try {
- if(log==null)
- this.log = LoggerWrapperFactory.getLogger(LOG_DRIVER_DB_USER);
- else
- this.log = log;
- } catch (Exception e) {
- throw new DriverUsersDBException("Errore durante l'inizializzazione del logger...",e);
- }
- // connection
- this.connection = connection;
-
- // ISQLQueryObject
- try {
- this.log.info("Inizializzo ISQLQueryObject...");
- if (TipiDatabase.isAMember(tipoDatabase)) {
- this.tipoDatabase = tipoDatabase;
- } else {
- throw new Exception("Tipo database non gestito");
- }
- this.log.info("Inizializzo ISQLQueryObject terminata.");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del SQLQueryObject...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del SQLQueryObject...",e);
- }
- }
-
- public DriverUsersDB(String urlJDBC,String driverJDBC,
- String username,String password,
- String tipoDatabase) throws DriverUsersDBException {
- this(urlJDBC, driverJDBC, username, password, tipoDatabase, null);
- }
- public DriverUsersDB(String urlJDBC,String driverJDBC,
- String username,String password,
- String tipoDatabase, Logger log) throws DriverUsersDBException {
-
- // Logger
- try {
- if(log==null)
- this.log = LoggerWrapperFactory.getLogger(LOG_DRIVER_DB_USER);
- else
- this.log = log;
- } catch (Exception e) {
- throw new DriverUsersDBException("Errore durante l'inizializzazione del logger...",e);
- }
- // connection
- try {
- Class.forName(driverJDBC);
-
- if(username!=null){
- this.connection = DriverManager.getConnection(urlJDBC,username,password);
- }else{
- this.connection = DriverManager.getConnection(urlJDBC);
- }
- this.connectionOpenViaJDBCInCostructor = true;
-
- } catch (Exception e) {
- this.log.error("Errore durante l'inizializzazione della connessione...",e);
- throw new DriverUsersDBException("Errore durante l'inizializzazione della connessione...",e);
- }
-
- // ISQLQueryObject
- try {
- this.log.info("Inizializzo ISQLQueryObject...");
- if (TipiDatabase.isAMember(tipoDatabase)) {
- this.tipoDatabase = tipoDatabase;
- } else {
- throw new Exception("Tipo database non gestito");
- }
- this.log.info("Inizializzo ISQLQueryObject terminata.");
- } catch (Exception e) {
- this.log.error("Errore durante la ricerca del SQLQueryObject...",e);
- throw new DriverUsersDBException("Errore durante la ricerca del SQLQueryObject...",e);
- }
-
- }
-
-
- private Connection getConnection() throws Exception {
- Connection connectionDB = null;
- if(this.connection!=null)
- connectionDB = this.connection;
- else{
- connectionDB = this.datasource.getConnection();
- }
- checkConnection(connectionDB);
- return connectionDB;
- }
- private void checkConnection(Connection connectionDB) throws Exception {
- if(connectionDB==null)
- throw new Exception("Connection non ottenuta dal datasource["+this.datasource+"]");
- }
- private void releaseConnection(Connection connectionDB) {
- try{
- if(this.connection==null) {
- if(connectionDB!=null) {
- connectionDB.close();
- }
- }
- }catch(Exception eClose){
- // close
- }
- }
- /**
- * Restituisce l'utente identificato da <var>login</var>
- *
- * @param login
- * Identificatore di un utente
- * @return L'utente identificato dal parametro.
- */
- public User getUser(String login) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[getUser] Parametri Non Validi");
- Connection connectionDB = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- return getUser(connectionDB, login);
-
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] Exception: " + ex.getMessage(),ex);
- } finally {
- releaseConnection(connectionDB);
- }
- }
-
- public User getUser(Connection conParam, String login) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[getUser] Parametri Non Validi");
- User user = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("login = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setString(1, login);
- rs = stm.executeQuery();
- if (rs.next()) {
- user = new User();
- user.setId(Long.valueOf(rs.getInt("id")));
- user.setLogin(login);
- user.setPassword(rs.getString("password"));
- user.setLastUpdatePassword(rs.getTimestamp("data_password"));
- user.setCheckLastUpdatePassword(rs.getInt("check_data_password") == CostantiDB.TRUE);
-
- String gui =rs.getString("tipo_interfaccia");
- if(gui==null || "".equals(gui))
- user.setInterfaceType(InterfaceType.AVANZATA);
- else
- user.setInterfaceType(InterfaceType.valueOf(gui.toUpperCase()));
- int interfaceCompletePermit = rs.getInt("interfaccia_completa");
- if(CostantiDB.TRUE == interfaceCompletePermit) {
- user.setPermitInterfaceComplete(true);
- }
- else {
- user.setPermitInterfaceComplete(false);
- }
-
- String perm =rs.getString("permessi");
- user.setPermessi(PermessiUtente.toPermessiUtente(perm));
-
- String protocolli =rs.getString("protocolli");
- user.setProtocolliSupportatiFromString(protocolli);
-
- String protocollo_pddconsole =rs.getString("protocollo_pddconsole");
- user.setProtocolloSelezionatoPddConsole(protocollo_pddconsole);
-
- String protocollo_pddmonitor =rs.getString("protocollo_pddmonitor");
- user.setProtocolloSelezionatoPddMonitor(protocollo_pddmonitor);
-
- String soggetto_pddconsole =rs.getString("soggetto_pddconsole");
- user.setSoggettoSelezionatoPddConsole(soggetto_pddconsole);
-
- String soggetto_pddmonitor =rs.getString("soggetto_pddmonitor");
- user.setSoggettoSelezionatoPddMonitor(soggetto_pddmonitor);
-
- int permitAllSoggetti = rs.getInt("soggetti_all");
- if(CostantiDB.TRUE == permitAllSoggetti) {
- user.setPermitAllSoggetti(true);
- }
- else {
- user.setPermitAllSoggetti(false);
- }
-
- int permitAllServizi = rs.getInt("servizi_all");
- if(CostantiDB.TRUE == permitAllServizi) {
- user.setPermitAllServizi(true);
- }
- else {
- user.setPermitAllServizi(false);
- }
-
- // Fix: se completa, siamo per forza in modalità completa
- if(user.isPermitInterfaceComplete()) {
- user.setInterfaceType(InterfaceType.COMPLETA);
- }
-
- }
- rs.close();
- stm.close();
-
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::getUser] User [" + login + "] non esistente.");
-
- JDBCServiceManagerProperties jdbcProperties = new JDBCServiceManagerProperties();
- jdbcProperties.setDatabaseType(this.tipoDatabase);
- jdbcProperties.setShowSql(true);
- JDBCServiceManager search = new JDBCServiceManager(conParam, jdbcProperties, this.log);
- IDBSoggettoServiceSearch soggettiSearch = (IDBSoggettoServiceSearch) search.getSoggettoServiceSearch();
- IDBAccordoServizioParteSpecificaServiceSearch serviziSearch = (IDBAccordoServizioParteSpecificaServiceSearch) search.getAccordoServizioParteSpecificaServiceSearch();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQueryObject.addOrderBy(CostantiDB.USERS_STATI+".oggetto");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setLong(1, user.getId());
- rs = stm.executeQuery();
- while (rs.next()) {
- String oggetto = rs.getString("oggetto");
- String stato = rs.getString("stato");
- Stato statoObject = new Stato();
- statoObject.setOggetto(oggetto);
- statoObject.setStato(stato);
- user.getStati().add(statoObject);
- }
- rs.close();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS_PASSWORD);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQueryObject.addOrderBy(CostantiDB.USERS_PASSWORD+".data_password");
- sqlQueryObject.setSortType(false);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setLong(1, user.getId());
- rs = stm.executeQuery();
- while (rs.next()) {
- UserPassword userPassword = new UserPassword();
- userPassword.setPassword(rs.getString("password"));
- userPassword.setDatePassword(rs.getTimestamp("data_password"));
- user.getPrecedentiPassword().add(userPassword);
- }
- rs.close();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SOGGETTI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField(CostantiDB.USERS_SOGGETTI+".id_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SOGGETTI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setLong(1, user.getId());
- rs = stm.executeQuery();
- while (rs.next()) {
- long id = rs.getLong("id_soggetto");
- Soggetto soggetto = soggettiSearch.get(id);
- IDSoggetto idSoggetto = new IDSoggetto(soggetto.getTipoSoggetto(), soggetto.getNomeSoggetto(), soggetto.getIdentificativoPorta());
- user.getSoggetti().add(idSoggetto);
- }
- rs.close();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addSelectField(CostantiDB.USERS_SERVIZI+".id_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".tipo_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".nome_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".versione_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SERVIZI+".id_servizio = "+CostantiDB.SERVIZI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".nome_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".versione_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".tipo_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setLong(1, user.getId());
- rs = stm.executeQuery();
- while (rs.next()) {
- long id = rs.getLong("id_servizio");
- AccordoServizioParteSpecifica servizio = serviziSearch.get(id);
- IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(servizio.getTipo(),
- servizio.getNome(),
- servizio.getIdErogatore().getTipo(),
- servizio.getIdErogatore().getNome(),
- servizio.getVersione());
- user.getServizi().add(idServizio);
- }
- rs.close();
- stm.close();
- return user;
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- rs.close();
- } catch (Exception e) {
- // ignore exception
- }
- try {
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
- public User getUser(Long id) throws DriverUsersDBException {
- if (id == null || id<=0)
- throw new DriverUsersDBException("[getUser] Parametri Non Validi");
- Connection connectionDB = null;
- User user = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("login");
- sqlQueryObject.addWhereCondition("id = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
- if (rs.next()) {
- user = this.getUser(connectionDB, rs.getString("login"));
- }
- rs.close();
- stm.close();
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::getUser] User [id:" + id + "] non esistente.");
- return user;
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::getUser] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- public List<User> userList(ISearch ricerca) throws DriverUsersDBException {
- return userList(ricerca,Liste.SU);
- }
- public List<User> userList(ISearch ricerca, int IDLISTA) throws DriverUsersDBException {
-
- String nomeMetodo = "userList";
- int idLista = IDLISTA;
- int offset;
- int limit;
- String search;
- String queryString;
- limit = ricerca.getPageSize(idLista);
- offset = ricerca.getIndexIniziale(idLista);
- search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
- Connection connectionDB = null;
- PreparedStatement stmt = null;
- ResultSet risultato = null;
- ArrayList<User> lista = new ArrayList<User>();
- try {
- // Get Connection
- connectionDB = getConnection();
-
- if (!search.equals("")) {
- //query con search
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectCountField("*", "cont");
- sqlQueryObject.addWhereLikeCondition("login", search, true, true);
- queryString = sqlQueryObject.createSQLQuery();
- } else {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectCountField("*", "cont");
- queryString = sqlQueryObject.createSQLQuery();
- }
- stmt = connectionDB.prepareStatement(queryString);
- risultato = stmt.executeQuery();
- if (risultato.next())
- ricerca.setNumEntries(idLista, risultato.getInt(1));
- risultato.close();
- stmt.close();
- // ricavo le entries
- if (limit == 0) // con limit
- limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
- if (!search.equals("")) { // con search
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("login");
- sqlQueryObject.addWhereLikeCondition("login", search, true, true);
- sqlQueryObject.addOrderBy("login");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- queryString = sqlQueryObject.createSQLQuery();
- } else {
- // senza search
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("login");
- sqlQueryObject.addOrderBy("login");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- queryString = sqlQueryObject.createSQLQuery();
- }
- stmt = connectionDB.prepareStatement(queryString);
- risultato = stmt.executeQuery();
- User newU = null;
- while (risultato.next()) {
- newU = this.getUser(connectionDB, risultato.getString("login"));
- lista.add(newU);
- }
- risultato.close();
- return lista;
- } catch (Exception qe) {
- throw new DriverUsersDBException("[DriverUsersDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(risultato!=null) {
- risultato.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmt!=null) {
- stmt.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
- public boolean existsUser(String login) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- try {
- // Get Connection
- connectionDB = getConnection();
-
- boolean esiste = false;
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("login = ?");
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, login);
- rs = stm.executeQuery();
- if (rs.next())
- esiste = true;
- rs.close();
- stm.close();
- return esiste;
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
-
- releaseConnection(connectionDB);
- }
- }
- public List<String> getUsersByPermesso(String permesso) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- try {
- // Get Connection
- connectionDB = getConnection();
-
- List<String> userWithType = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQueryObject.addWhereLikeCondition("permessi", permesso, true, true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- rs = stm.executeQuery();
- while (rs.next())
- userWithType.add(rs.getString("login"));
- rs.close();
- stm.close();
- return userWithType;
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
-
- releaseConnection(connectionDB);
- }
- }
-
- public List<String> getUsersByProtocolloSupportato(String protocollo) throws DriverUsersDBException {
- return getUsersByProtocolloSupportato(protocollo, false);
- }
-
- public List<String> getUsersByProtocolloSupportato(String protocollo, boolean esclusiUtentiConSoloPermessoUtente) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- try {
- // Get Connection
- connectionDB = getConnection();
-
- List<String> userWithType = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.setANDLogicOperator(true);
-
- ISQLQueryObject sqlQueryObjectPermit = sqlQueryObject.newSQLQueryObject();
- sqlQueryObjectPermit.addWhereIsNullCondition("protocolli"); // significa che li supporta tutti
- sqlQueryObjectPermit.addWhereLikeCondition("protocolli", protocollo, true, true);
- sqlQueryObjectPermit.setANDLogicOperator(false);
- sqlQueryObject.addWhereCondition(sqlQueryObjectPermit.createSQLConditions());
- if(esclusiUtentiConSoloPermessoUtente)
- sqlQueryObject.addWhereCondition("permessi <> ?");
-
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
-
- if(esclusiUtentiConSoloPermessoUtente)
- stm.setString(1, "U");
-
- rs = stm.executeQuery();
- while (rs.next())
- userWithType.add(rs.getString("login"));
- rs.close();
- stm.close();
- return userWithType;
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
-
- releaseConnection(connectionDB);
- }
- }
- public void createUser(User user) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::createUser] Parametro non valido.");
- String login = user.getLogin();
- if (login == null || login.equals(""))
- throw new DriverUsersDBException("[DriverUsersDB::createUser] Parametro Login non valido.");
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS);
- sqlQueryObject.addInsertField("login", "?");
- sqlQueryObject.addInsertField("password", "?");
- sqlQueryObject.addInsertField("data_password", "?");
- sqlQueryObject.addInsertField("check_data_password", "?");
- sqlQueryObject.addInsertField("tipo_interfaccia", "?");
- sqlQueryObject.addInsertField("interfaccia_completa", "?");
- sqlQueryObject.addInsertField("permessi", "?");
- sqlQueryObject.addInsertField("protocolli", "?");
- sqlQueryObject.addInsertField("protocollo_pddconsole", "?");
- sqlQueryObject.addInsertField("protocollo_pddmonitor", "?");
- sqlQueryObject.addInsertField("soggetto_pddconsole", "?");
- sqlQueryObject.addInsertField("soggetto_pddmonitor", "?");
- sqlQueryObject.addInsertField("soggetti_all", "?");
- sqlQueryObject.addInsertField("servizi_all", "?");
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, login);
- stm.setString(index++, user.getPassword());
- Timestamp dataPassword = DateManager.getTimestamp();
- if(user.getLastUpdatePassword()!=null) {
- dataPassword = new Timestamp(user.getLastUpdatePassword().getTime());
- }
- stm.setTimestamp(index++, dataPassword);
- stm.setInt(index++, user.isCheckLastUpdatePassword()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setString(index++, user.getInterfaceType().toString());
- stm.setInt(index++, user.isPermitInterfaceComplete()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setString(index++, user.getPermessi().toString());
- stm.setString(index++, user.getProtocolliSupportatiAsString());
- stm.setString(index++, user.getProtocolloSelezionatoPddConsole());
- stm.setString(index++, user.getProtocolloSelezionatoPddMonitor());
- stm.setString(index++, user.getSoggettoSelezionatoPddConsole());
- stm.setString(index++, user.getSoggettoSelezionatoPddMonitor());
- stm.setInt(index++, user.isPermitAllSoggetti()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setInt(index++, user.isPermitAllServizi()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.executeUpdate();
- stm.close();
-
- if(user.getStati().size()>0 || user.getPrecedentiPassword().size()>0 || user.getSoggetti().size()>0 || user.getServizi().size()>0) {
-
- // recupero id
- long idUser = this._getIdUser(connectionDB, login);
-
- _addListeUtente(connectionDB, user, idUser);
-
- }
-
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (rs != null)
- rs.close();
- } catch (Exception e) {
- //ignore
- }
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
-
- try{
- if(this.connection==null) {
- connectionDB.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- }
- public void updateUser(User user) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::updateUser] Parametro non valido.");
- String login = user.getLogin();
- if (login == null || login.equals(""))
- throw new DriverUsersDBException("[DriverUsersDB::updateUser] Parametro Login non valido.");
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("password", "?");
- if(user.getLastUpdatePassword()!=null) {
- sqlQueryObject.addUpdateField("data_password", "?");
- }
- sqlQueryObject.addUpdateField("check_data_password", "?");
- sqlQueryObject.addUpdateField("tipo_interfaccia", "?");
- sqlQueryObject.addUpdateField("interfaccia_completa", "?");
- sqlQueryObject.addUpdateField("permessi", "?");
- sqlQueryObject.addUpdateField("protocolli", "?");
- sqlQueryObject.addUpdateField("protocollo_pddconsole", "?");
- sqlQueryObject.addUpdateField("protocollo_pddmonitor", "?");
- sqlQueryObject.addUpdateField("soggetto_pddconsole", "?");
- sqlQueryObject.addUpdateField("soggetto_pddmonitor", "?");
- sqlQueryObject.addUpdateField("soggetti_all", "?");
- sqlQueryObject.addUpdateField("servizi_all", "?");
- sqlQueryObject.addWhereCondition("login=?");
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, user.getPassword());
- if(user.getLastUpdatePassword()!=null) {
- stm.setTimestamp(index++, new Timestamp(user.getLastUpdatePassword().getTime()));
- }
- stm.setInt(index++, user.isCheckLastUpdatePassword()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setString(index++,user.getInterfaceType().toString());
- stm.setInt(index++, user.isPermitInterfaceComplete()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setString(index++,user.getPermessi().toString());
- stm.setString(index++, user.getProtocolliSupportatiAsString());
- stm.setString(index++, user.getProtocolloSelezionatoPddConsole());
- stm.setString(index++, user.getProtocolloSelezionatoPddMonitor());
- stm.setString(index++, user.getSoggettoSelezionatoPddConsole());
- stm.setString(index++, user.getSoggettoSelezionatoPddMonitor());
- stm.setInt(index++, user.isPermitAllSoggetti()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setInt(index++, user.isPermitAllServizi()? CostantiDB.TRUE : CostantiDB.FALSE);
- stm.setString(index++, user.getLogin());
- stm.executeUpdate();
- stm.close();
-
- long idUser = this._getIdUser(connectionDB, user);
-
- _deleteListeUtente(connectionDB, idUser);
-
- if(user.getStati().size()>0 || user.getPrecedentiPassword().size()>0 || user.getSoggetti().size()>0 || user.getServizi().size()>0) {
- _addListeUtente(connectionDB, user, idUser);
- }
-
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (rs != null)
- rs.close();
- } catch (Exception e) {
- //ignore
- }
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
-
- releaseConnection(connectionDB);
- }
- }
-
- public void deleteUser(User user) throws DriverUsersDBException {
-
- Connection connectionDB = null;
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::deleteUser] Parametro non valido.");
- String login = user.getLogin();
- if (login == null || login.equals(""))
- throw new DriverUsersDBException("[DriverUsersDB::deleteUser] Parametro Login non valido.");
- try {
- // Get Connection
- connectionDB = getConnection();
-
- long idUser = this._getIdUser(connectionDB, user);
-
- _deleteListeUtente(connectionDB, idUser);
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS);
- sqlQueryObject.addWhereCondition("login = ?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, login);
- stm.executeUpdate();
- stm.close();
- } catch (Exception qe) {
- throw new DriverUsersDBException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
-
- releaseConnection(connectionDB);
- }
- }
-
-
- private void _addListeUtente(Connection connectionDB, User user, long idUser) throws Exception {
-
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- if(user.getStati().size()>0) {
- for (Stato stato : user.getStati()) {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addInsertField("id_utente", "?");
- sqlQueryObject.addInsertField("oggetto", "?");
- sqlQueryObject.addInsertField("stato", "?");
- String sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setLong(index++, idUser);
- stm.setString(index++, stato.getOggetto());
- stm.setString(index++, stato.getStato());
- stm.executeUpdate();
- stm.close();
- }
- }
-
- if(user.getPrecedentiPassword().size()>0) {
- for (UserPassword userPassword : user.getPrecedentiPassword()) {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_PASSWORD);
- sqlQueryObject.addInsertField("id_utente", "?");
- sqlQueryObject.addInsertField("password", "?");
- sqlQueryObject.addInsertField("data_password", "?");
- String sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setLong(index++, idUser);
- stm.setString(index++, userPassword.getPassword());
- stm.setTimestamp(index++, new Timestamp(userPassword.getDatePassword().getTime()));
- stm.executeUpdate();
- stm.close();
- }
- }
-
- if(user.getSoggetti().size()>0) {
- for (IDSoggetto idSoggetto : user.getSoggetti()) {
-
- long idSoggettoLong = DBUtils.getIdSoggetto(idSoggetto.getNome(), idSoggetto.getTipo(), connectionDB, this.tipoDatabase);
- if(idSoggettoLong<=0) {
- throw new Exception("Impossibile recuperare id soggetto ["+idSoggetto+"]");
- }
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_SOGGETTI);
- sqlQueryObject.addInsertField("id_utente", "?");
- sqlQueryObject.addInsertField("id_soggetto", "?");
- String sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setLong(index++, idUser);
- stm.setLong(index++, idSoggettoLong);
- stm.executeUpdate();
- stm.close();
- }
- }
-
- if(user.getServizi().size()>0) {
- for (IDServizio idServizio : user.getServizi()) {
-
- long idServizioLong = DBUtils.getIdServizio(idServizio.getNome(), idServizio.getTipo(), idServizio.getVersione(),
- idServizio.getSoggettoErogatore().getNome(), idServizio.getSoggettoErogatore().getTipo(),
- connectionDB, this.tipoDatabase);
- if(idServizioLong<=0) {
- throw new Exception("Impossibile recuperare id soggetto ["+idServizio+"]");
- }
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_SERVIZI);
- sqlQueryObject.addInsertField("id_utente", "?");
- sqlQueryObject.addInsertField("id_servizio", "?");
- String sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setLong(index++, idUser);
- stm.setLong(index++, idServizioLong);
- stm.executeUpdate();
- stm.close();
- }
- }
- } finally {
- //Chiudo statement and resultset
- try {
- if (rs != null)
- rs.close();
- } catch (Exception e) {
- //ignore
- }
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
-
- }
- }
-
- private void _deleteListeUtente(Connection connectionDB, long idUser) throws Exception {
-
- PreparedStatement stm = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addWhereCondition("id_utente = ?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idUser);
- stm.executeUpdate();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS_PASSWORD);
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idUser);
- stm.executeUpdate();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS_SOGGETTI);
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idUser);
- stm.executeUpdate();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS_SERVIZI);
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idUser);
- stm.executeUpdate();
- stm.close();
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
-
- private long _getIdUser(Connection connectionDB, User user) throws Exception {
-
- if (user == null)
- throw new DriverUsersDBException("[DriverUsersDB::_getIdUser] Parametro non valido.");
- String login = user.getLogin();
- if (login == null || login.equals(""))
- throw new DriverUsersDBException("[DriverUsersDB::_getIdUser] Parametro Login non valido.");
- long idUser = -1;
- if(user.getId()==null || user.getId().longValue()<=0) {
- idUser = this._getIdUser(connectionDB, login);
- }
- else {
- idUser = user.getId().longValue();
- }
-
- return idUser;
-
- }
- private long _getIdUser(Connection connectionDB, String login) throws Exception {
-
- PreparedStatement stm = null;
- ResultSet rs = null;
- String sqlQuery = "";
- if (login == null || login.equals(""))
- throw new DriverUsersDBException("[DriverUsersDB::_getIdUser] Parametro Login non valido.");
- try {
-
- long idUser = -1;
- // recupero id
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addWhereCondition("login = ?");
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, login);
- rs = stm.executeQuery();
- if(rs.next()) {
- idUser = rs.getLong("id");
- }
- if(idUser<=0) {
- throw new Exception("Impossibile recuperare id utente con login ["+login+"]");
- }
- rs.close();
- stm.close();
-
- return idUser;
-
- } finally {
- //Chiudo statement and resultset
- try {
- if (rs != null)
- rs.close();
- } catch (Exception e) {
- //ignore
- }
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
-
- public List<IDServizio> utentiServiziList(String login, ISearch ricerca) throws DriverUsersDBException {
- String nomeMetodo = "utentiServiziList";
- int idLista = Liste.UTENTI_SERVIZI;
- int offset;
- int limit;
- String search;
- String queryString;
- limit = ricerca.getPageSize(idLista);
- offset = ricerca.getIndexIniziale(idLista);
- search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
- String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
- String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
- List<String> tipoServiziProtocollo = null;
- try {
- tipoServiziProtocollo = Filtri.convertToTipiServizi(filterProtocollo, filterProtocolli);
- }catch(Exception e) {
- throw new DriverUsersDBException(e.getMessage(),e);
- }
- String filterDominio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_DOMINIO);
- PddTipologia pddTipologia = null;
- if(filterDominio!=null && !"".equals(filterDominio)) {
- pddTipologia = PddTipologia.toPddTipologia(filterDominio);
- }
-
- this.log.debug("search : " + search);
- this.log.debug("filterProtocollo : " + filterProtocollo);
- this.log.debug("filterProtocolli : " + filterProtocolli);
- this.log.debug("filterDominio : " + filterDominio);
-
- Connection connectionDB = null;
- PreparedStatement stmt = null;
- ResultSet risultato = null;
- ArrayList<IDServizio> lista = new ArrayList<IDServizio>();
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObjectSoggetti = null;
- if (!search.equals("")) {
- sqlQueryObjectSoggetti = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectSoggetti.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObjectSoggetti.addSelectField(CostantiDB.SOGGETTI, "tipo_soggetto");
- sqlQueryObjectSoggetti.addSelectField(CostantiDB.SOGGETTI, "nome_soggetto");
- sqlQueryObjectSoggetti.setANDLogicOperator(true);
- sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
- sqlQueryObjectSoggetti.addWhereCondition(false,
- //sqlQueryObjectSoggetti.getWhereLikeCondition("tipo_soggetto", search, true, true),
- sqlQueryObjectSoggetti.getWhereLikeCondition("nome_soggetto", search, true, true));
- }
- ISQLQueryObject sqlQueryObjectPdd = null;
- if(pddTipologia!=null && PddTipologia.ESTERNO.equals(pddTipologia)) {
- ISQLQueryObject sqlQueryObjectExistsPdd = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectExistsPdd.addSelectField(CostantiDB.PDD+".nome");
- sqlQueryObjectExistsPdd.addFromTable(CostantiDB.PDD);
- sqlQueryObjectExistsPdd.setANDLogicOperator(true);
- sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server");
- sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".tipo=?");
-
- sqlQueryObjectPdd = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectPdd.setANDLogicOperator(false);
- sqlQueryObjectPdd.addWhereIsNullCondition(CostantiDB.SOGGETTI+".server");
- sqlQueryObjectPdd.addWhereExistsCondition(false, sqlQueryObjectExistsPdd);
- }
-
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addSelectCountField("*", "cont");
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addWhereCondition(CostantiDB.USERS+".login = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SERVIZI+".id_utente = "+CostantiDB.USERS+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SERVIZI+".id_servizio = "+CostantiDB.SERVIZI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
-
- if (!search.equals("")) {
- //query con search
- sqlQueryObject.addWhereCondition(false,
- // - ricerca su tipo/nome servizio
- //sqlQueryObject.getWhereLikeCondition("tipo_servizio", search, true, true),
- sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI+".nome_servizio", search, true, true),
- //sqlQueryObject.getWhereLikeCondition("versione_servizio", search, true, true),
- sqlQueryObject.getWhereExistsCondition(false, sqlQueryObjectSoggetti));
- }
-
- if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
- sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
- }
- if(pddTipologia!=null) {
- if(PddTipologia.ESTERNO.equals(pddTipologia)) {
- sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());
- }
- else {
- sqlQueryObject.addFromTable(CostantiDB.PDD);
- sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
- }
- }
-
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = connectionDB.prepareStatement(queryString);
- int index = 1;
- stmt.setString(index++, login);
- if(pddTipologia!=null) {
- stmt.setString(index++, pddTipologia.toString());
- }
- risultato = stmt.executeQuery();
- if (risultato.next())
- ricerca.setNumEntries(idLista, risultato.getInt(1));
- risultato.close();
- stmt.close();
- // ricavo le entries
- if (limit == 0) // con limit
- limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addSelectField(CostantiDB.USERS_SERVIZI+".id_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".tipo_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".nome_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".versione_servizio");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addWhereCondition(CostantiDB.USERS+".login = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SERVIZI+".id_utente = "+CostantiDB.USERS+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SERVIZI+".id_servizio = "+CostantiDB.SERVIZI+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
-
- if (!search.equals("")) {
- //query con search
- sqlQueryObject.addWhereCondition(false,
- // - ricerca su tipo/nome servizio
- //sqlQueryObject.getWhereLikeCondition("tipo_servizio", search, true, true),
- sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI+".nome_servizio", search, true, true),
- //sqlQueryObject.getWhereLikeCondition("versione_servizio", search, true, true),
- sqlQueryObject.getWhereExistsCondition(false, sqlQueryObjectSoggetti));
- }
-
- if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
- sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
- }
- if(pddTipologia!=null) {
- if(PddTipologia.ESTERNO.equals(pddTipologia)) {
- sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());
- }
- else {
- sqlQueryObject.addFromTable(CostantiDB.PDD);
- sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
- }
- }
-
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".nome_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".versione_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addOrderBy(CostantiDB.SERVIZI+".tipo_servizio");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = connectionDB.prepareStatement(queryString);
- index = 1;
- stmt.setString(index++, login);
- if(pddTipologia!=null) {
- stmt.setString(index++, pddTipologia.toString());
- }
- risultato = stmt.executeQuery();
-
- JDBCServiceManagerProperties jdbcProperties = new JDBCServiceManagerProperties();
- jdbcProperties.setDatabaseType(this.tipoDatabase);
- jdbcProperties.setShowSql(true);
- JDBCServiceManager manager = new JDBCServiceManager(connectionDB, jdbcProperties, this.log);
- // IDBSoggettoServiceSearch soggettiSearch = (IDBSoggettoServiceSearch) manager.getSoggettoServiceSearch();
- IDBAccordoServizioParteSpecificaServiceSearch serviziSearch = (IDBAccordoServizioParteSpecificaServiceSearch) manager.getAccordoServizioParteSpecificaServiceSearch();
-
- while (risultato.next()) {
- long id = risultato.getLong("id_servizio");
- AccordoServizioParteSpecifica servizio = serviziSearch.get(id);
- IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(servizio.getTipo(),
- servizio.getNome(),
- servizio.getIdErogatore().getTipo(),
- servizio.getIdErogatore().getNome(),
- servizio.getVersione());
- lista.add(idServizio);
- }
- risultato.close();
- return lista;
- } catch (Exception qe) {
- throw new DriverUsersDBException("[DriverUsersDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(risultato!=null) {
- risultato.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmt!=null) {
- stmt.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
-
- releaseConnection(connectionDB);
- }
- }
-
-
- public List<IDSoggetto> utentiSoggettiList(String login, ISearch ricerca) throws DriverUsersDBException {
- String nomeMetodo = "utentiSoggettiList";
- int idLista = Liste.UTENTI_SOGGETTI;
- int offset;
- int limit;
- String search;
- String queryString;
- limit = ricerca.getPageSize(idLista);
- offset = ricerca.getIndexIniziale(idLista);
- search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
- String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
- String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
- List<String> tipoSoggettiProtocollo = null;
- try {
- tipoSoggettiProtocollo = Filtri.convertToTipiSoggetti(filterProtocollo, filterProtocolli);
- }catch(Exception e) {
- throw new DriverUsersDBException(e.getMessage(),e);
- }
-
- String filterDominio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_DOMINIO);
- PddTipologia pddTipologia = null;
- if(filterDominio!=null && !"".equals(filterDominio)) {
- pddTipologia = PddTipologia.toPddTipologia(filterDominio);
- }
-
- this.log.debug("search : " + search);
- this.log.debug("filterProtocollo : " + filterProtocollo);
- this.log.debug("filterProtocolli : " + filterProtocolli);
- this.log.debug("filterDominio : " + filterDominio);
-
- Connection connectionDB = null;
- PreparedStatement stmt = null;
- ResultSet risultato = null;
- ArrayList<IDSoggetto> lista = new ArrayList<IDSoggetto>();
- try {
-
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObjectPdd = null;
- if(pddTipologia!=null && PddTipologia.ESTERNO.equals(pddTipologia)) {
- ISQLQueryObject sqlQueryObjectExistsPdd = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectExistsPdd.addSelectField(CostantiDB.PDD+".nome");
- sqlQueryObjectExistsPdd.addFromTable(CostantiDB.PDD);
- sqlQueryObjectExistsPdd.setANDLogicOperator(true);
- sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server");
- sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".tipo=?");
-
- sqlQueryObjectPdd = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectPdd.setANDLogicOperator(false);
- sqlQueryObjectPdd.addWhereIsNullCondition(CostantiDB.SOGGETTI+".server");
- sqlQueryObjectPdd.addWhereExistsCondition(false, sqlQueryObjectExistsPdd);
- }
-
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addSelectCountField("*", "cont");
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SOGGETTI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addWhereCondition(CostantiDB.USERS+".login = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SOGGETTI+".id_utente = "+CostantiDB.USERS+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SOGGETTI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
-
- if (!search.equals("")) {
- //query con search
- sqlQueryObject.addWhereLikeCondition(CostantiDB.SOGGETTI+".nome_soggetto", search, true, true);
- }
-
- if(tipoSoggettiProtocollo!=null && tipoSoggettiProtocollo.size()>0) {
- sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+".tipo_soggetto", true, tipoSoggettiProtocollo.toArray(new String[1]));
- }
- if(pddTipologia!=null) {
- if(PddTipologia.ESTERNO.equals(pddTipologia)) {
- sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());
- }
- else {
- sqlQueryObject.addFromTable(CostantiDB.PDD);
- sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
- }
- }
-
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = connectionDB.prepareStatement(queryString);
- int index = 1;
- stmt.setString(index++, login);
- if(pddTipologia!=null) {
- stmt.setString(index++, pddTipologia.toString());
- }
- risultato = stmt.executeQuery();
- if (risultato.next())
- ricerca.setNumEntries(idLista, risultato.getInt(1));
- risultato.close();
- stmt.close();
- // ricavo le entries
- if (limit == 0) // con limit
- limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addSelectField(CostantiDB.USERS_SOGGETTI+".id_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addFromTable(CostantiDB.USERS_SOGGETTI);
- sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
- sqlQueryObject.addWhereCondition(CostantiDB.USERS+".login = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SOGGETTI+".id_utente = "+CostantiDB.USERS+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_SOGGETTI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
-
- if (!search.equals("")) { // con search
- sqlQueryObject.addWhereLikeCondition(CostantiDB.SOGGETTI+".nome_soggetto", search, true, true);
- }
-
- if(tipoSoggettiProtocollo!=null && tipoSoggettiProtocollo.size()>0) {
- sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+".tipo_soggetto", true, tipoSoggettiProtocollo.toArray(new String[1]));
- }
- if(pddTipologia!=null) {
- if(PddTipologia.ESTERNO.equals(pddTipologia)) {
- sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());
- }
- else {
- sqlQueryObject.addFromTable(CostantiDB.PDD);
- sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
- }
- }
-
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".nome_soggetto");
- sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI+".tipo_soggetto");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = connectionDB.prepareStatement(queryString);
- index = 1;
- stmt.setString(index++, login);
- if(pddTipologia!=null) {
- stmt.setString(index++, pddTipologia.toString());
- }
- risultato = stmt.executeQuery();
-
- JDBCServiceManagerProperties jdbcProperties = new JDBCServiceManagerProperties();
- jdbcProperties.setDatabaseType(this.tipoDatabase);
- jdbcProperties.setShowSql(true);
- JDBCServiceManager manager = new JDBCServiceManager(connectionDB, jdbcProperties, this.log);
- IDBSoggettoServiceSearch soggettiSearch = (IDBSoggettoServiceSearch) manager.getSoggettoServiceSearch();
-
- while (risultato.next()) {
- long id = risultato.getLong("id_soggetto");
- Soggetto soggetto = soggettiSearch.get(id);
- IDSoggetto idSoggetto = new IDSoggetto(soggetto.getTipoSoggetto(), soggetto.getNomeSoggetto(), soggetto.getIdentificativoPorta());
- lista.add(idSoggetto);
- }
- risultato.close();
- return lista;
- } catch (Exception qe) {
- throw new DriverUsersDBException("[DriverUsersDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if(risultato!=null) {
- risultato.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmt!=null) {
- stmt.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
-
- releaseConnection(connectionDB);
- }
- }
-
- /**
- * Restituisce lo stato identificato da <var>login</var> e da <var>nomeOggetto</var>
- *
- * @param login Identificatore di un utente
- * @param nomeOggetto Oggetto da ricercare
- *
- * @return Lo stato individuato
- */
- public Stato getStato(String login, String nomeOggetto) throws DriverUsersDBException {
- if (login == null || nomeOggetto == null)
- throw new DriverUsersDBException("[getStato] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- Stato statoObject = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addFromTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addSelectField(CostantiDB.USERS_STATI+".stato");
- sqlQueryObject.addSelectField(CostantiDB.USERS_STATI+".oggetto");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_STATI+".id_utente = "+CostantiDB.USERS+".id");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_STATI +".oggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, login);
- stm.setString(2, nomeOggetto);
- rs = stm.executeQuery();
- while (rs.next()) {
- String oggetto = rs.getString("oggetto");
- String stato = rs.getString("stato");
- statoObject = new Stato();
- statoObject.setOggetto(oggetto);
- statoObject.setStato(stato);
- }
- rs.close();
- stm.close();
- return statoObject;
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::getStato] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::getStato] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- /**
- * Aggiorna il protocollo utilizzato dall'utente <var>login</var>
- *
- * @param login Identificatore di un utente
- * @param protocollo Protocollo
- *
- */
- public void saveProtocolloUtilizzatoPddConsole(String login, String protocollo) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveProtocolloUtilizzatoPddConsole] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("protocollo_pddconsole", "?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, protocollo);
- stm.setString(2, login);
- stm.executeUpdate();
- stm.close();
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveProtocolloUtilizzatoPddConsole] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveProtocolloUtilizzatoPddConsole] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- /**
- * Aggiorna il protocollo utilizzato dall'utente <var>login</var>
- *
- * @param login Identificatore di un utente
- * @param protocollo Protocollo
- *
- */
- public void saveProtocolloUtilizzatoPddMonitor(String login, String protocollo) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveProtocolloUtilizzatoPddMonitor] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("protocollo_pddmonitor", "?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, protocollo);
- stm.setString(2, login);
- stm.executeUpdate();
- stm.close();
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveProtocolloUtilizzatoPddMonitor] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveProtocolloUtilizzatoPddMonitor] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- /**
- * Aggiorna il soggetto utilizzato dall'utente <var>login</var>
- *
- * @param login Identificatore di un utente
- * @param soggetto Soggetto
- *
- */
- public void saveSoggettoUtilizzatoPddConsole(String login, String soggetto) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveSoggettoUtilizzatoPddConsole] Parametri Non Validi");
- Connection connectionDB = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- saveSoggettoUtilizzatoPddConsole(connectionDB, login, soggetto);
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddConsole] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddConsole] Exception: " + ex.getMessage(),ex);
- } finally {
- releaseConnection(connectionDB);
- }
- }
-
- public void saveSoggettoUtilizzatoPddConsole(Connection conParam, String login, String soggetto) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveSoggettoUtilizzatoPddConsole] Parametri Non Validi");
- PreparedStatement stm = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("soggetto_pddconsole", "?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setString(1, soggetto);
- stm.setString(2, login);
- stm.executeUpdate();
- stm.close();
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddConsole] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddConsole] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- /**
- * Aggiorna il soggetto utilizzato dall'utente <var>login</var>
- *
- * @param login Identificatore di un utente
- * @param soggetto Soggetto
- *
- */
- public void saveSoggettoUtilizzatoPddMonitor(String login, String soggetto) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveSoggettoUtilizzatoPddMonitor] Parametri Non Validi");
- Connection connectionDB = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- saveSoggettoUtilizzatoPddMonitor(connectionDB, login, soggetto);
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] Exception: " + ex.getMessage(),ex);
- } finally {
- releaseConnection(connectionDB);
- }
- }
-
- public void saveSoggettoUtilizzatoPddMonitor(Connection conParam, String login, String soggetto) throws DriverUsersDBException {
- if (login == null)
- throw new DriverUsersDBException("[saveSoggettoUtilizzatoPddMonitor] Parametri Non Validi");
- PreparedStatement stm = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("soggetto_pddmonitor", "?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = conParam.prepareStatement(sqlQuery);
- stm.setString(1, soggetto);
- stm.setString(2, login);
- stm.executeUpdate();
- stm.close();
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- /**
- * Aggiorna il soggetto utilizzato dall'utente <var>login</var>
- *
- * @param oldSoggetto Identita precedentemente associata
- * @param newSoggetto Nuova identita associata
- *
- */
- public void modificaSoggettoUtilizzatoConsole(String oldSoggetto, String newSoggetto) throws DriverUsersDBException {
- if (oldSoggetto == null) // || newSoggetto==null)
- throw new DriverUsersDBException("[modificaSoggettoUtilizzatoConsole] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- List<String> users = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addWhereCondition("soggetto_pddconsole=?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, oldSoggetto);
- rs = stm.executeQuery();
- while(rs.next()) {
- String login = rs.getString("login");
- users.add(login);
- }
- rs.close();
- stm.close();
- if(!users.isEmpty()) {
- for (String user : users) {
- this.saveSoggettoUtilizzatoPddConsole(connectionDB, user, newSoggetto);
- }
- }
-
- users = new ArrayList<>();
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addWhereCondition("soggetto_pddmonitor=?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, oldSoggetto);
- rs = stm.executeQuery();
- while(rs.next()) {
- String login = rs.getString("login");
- users.add(login);
- }
- rs.close();
- stm.close();
- if(!users.isEmpty()) {
- for (String user : users) {
- this.saveSoggettoUtilizzatoPddMonitor(connectionDB, user, newSoggetto);
- }
- }
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveSoggettoUtilizzatoPddMonitor] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- /**
- * Aggiorna lo stato identificato da <var>login</var> e da <var>nomeOggetto</var>
- *
- * @param login Identificatore di un utente
- * @param nomeOggetto Oggetto da ricercare
- * @param statoOggetto Stato da salvare
- *
- */
- public void saveStato(String login, String nomeOggetto, String statoOggetto) throws DriverUsersDBException {
- if (login == null || nomeOggetto == null)
- throw new DriverUsersDBException("[saveStato] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addFromTable(CostantiDB.USERS);
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, login);
- rs = stm.executeQuery();
-
- Long idUtente = null;
- while (rs.next()) {
- idUtente = rs.getLong("id");
- }
- rs.close();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addUpdateField("stato","?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_STATI+".id_utente = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.USERS_STATI +".oggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, statoOggetto);
- stm.setLong(2, idUtente);
- stm.setString(3, nomeOggetto);
- int update = stm.executeUpdate();
- stm.close();
-
- // nuovo stato
- if(update == 0) {
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_STATI);
- sqlQueryObject.addInsertField("stato","?");
- sqlQueryObject.addInsertField("id_utente","?");
- sqlQueryObject.addInsertField("oggetto","?");
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, statoOggetto);
- stm.setLong(2, idUtente);
- stm.setString(3, nomeOggetto);
- update = stm.executeUpdate();
- stm.close();
- }
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::saveStato] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::saveStato] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
-
- public void savePassword(Long idUser, String login, String newPassword, Date dataAggiornamentoPassword) throws DriverUsersDBException {
- this.savePassword(idUser, login, newPassword, dataAggiornamentoPassword, null);
- }
-
- public void savePassword(Long idUser, String login, String password, Date dataAggiornamentoPassword, List<UserPassword> storicoPassword) throws DriverUsersDBException {
- if (login == null || password==null)
- throw new DriverUsersDBException("[savePassword] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.USERS);
- sqlQueryObject.addUpdateField("password", "?");
- if(dataAggiornamentoPassword!=null) {
- sqlQueryObject.addUpdateField("data_password", "?");
- }
- sqlQueryObject.addWhereCondition(CostantiDB.USERS +".login = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, password);
- if(dataAggiornamentoPassword!=null) {
- stm.setTimestamp(index++, new Timestamp(dataAggiornamentoPassword.getTime()));
- }
- stm.setString(index++, login);
- stm.executeUpdate();
- stm.close();
-
- // salvataggio dello storico password
- if(storicoPassword != null) {
- try {
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.USERS_PASSWORD);
- sqlQueryObject.addWhereCondition("id_utente = ?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idUser);
- stm.executeUpdate();
- stm.close();
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
-
- if(storicoPassword.size()>0) {
- stm = null;
- ResultSet rs = null;
- try {
- for (UserPassword userPassword : storicoPassword) {
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.USERS_PASSWORD);
- sqlQueryObject.addInsertField("id_utente", "?");
- sqlQueryObject.addInsertField("password", "?");
- sqlQueryObject.addInsertField("data_password", "?");
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connectionDB.prepareStatement(sqlQuery);
- index = 1;
- stm.setLong(index++, idUser);
- stm.setString(index++, userPassword.getPassword());
- stm.setTimestamp(index++, new Timestamp(userPassword.getDatePassword().getTime()));
- stm.executeUpdate();
- stm.close();
- }
- } finally {
- //Chiudo statement and resultset
- try {
- if (rs != null)
- rs.close();
- } catch (Exception e) {
- //ignore
- }
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
-
- }
- }
- }
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::savePassword] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::savePassword] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- public UserObjects countUserServizi(String user) throws DriverUsersDBException {
- return countUser(user, false);
- }
- public UserObjects countUserCooperazione(String user) throws DriverUsersDBException {
- return countUser(user, true);
- }
- public UserObjects countUser(String user, boolean cooperazione) throws DriverUsersDBException {
- if (user==null)
- throw new DriverUsersDBException("[countUser] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- List<String> tables = new ArrayList<>();
- if(cooperazione) {
- tables.add(CostantiDB.ACCORDI_COOPERAZIONE);
- tables.add(CostantiDB.ACCORDI);
- }
- else {
- tables.add(CostantiDB.PDD);
- tables.add(CostantiDB.GRUPPI);
- tables.add(CostantiDB.RUOLI);
- tables.add(CostantiDB.SCOPE);
- tables.add(CostantiDB.SOGGETTI);
- tables.add(CostantiDB.ACCORDI);
- tables.add(CostantiDB.SERVIZI);
- }
-
- UserObjects results = new UserObjects();
-
- for (String table : tables) {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addFromTable(table);
- sqlQueryObject.addSelectCountField("id", "somma");
- sqlQueryObject.addWhereCondition("superuser = ?");
- if(CostantiDB.ACCORDI.equals(table)) {
-
- ISQLQueryObject sqlQueryObjectExclude = null;
- sqlQueryObjectExclude = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectExclude.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
- sqlQueryObjectExclude.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPOSTO, "id_accordo");
- sqlQueryObjectExclude.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo="+CostantiDB.ACCORDI+".id");
- if(cooperazione){
- sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectExclude);
- }
- else{
- sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExclude);
- }
-
- }
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, user);
- rs = stm.executeQuery();
- int result = rs.getInt("somma");
- rs.close();
- stm.close();
-
- if(CostantiDB.PDD.equals(table)) {
- results.pdd = result;
- }
- else if(CostantiDB.GRUPPI.equals(table)) {
- results.gruppi = result;
- }
- else if(CostantiDB.RUOLI.equals(table)) {
- results.ruoli = result;
- }
- else if(CostantiDB.SCOPE.equals(table)) {
- results.scope = result;
- }
- else if(CostantiDB.SOGGETTI.equals(table)) {
- results.soggetti = result;
- }
- else if(CostantiDB.ACCORDI.equals(table)) {
- results.accordi_parte_comune = result;
- }
- else if(CostantiDB.ACCORDI_COOPERAZIONE.equals(table)) {
- results.accordi_accoperazione = result;
- }
- else if(CostantiDB.SERVIZI.equals(table)) {
- results.accordi_parte_specifica = result;
- }
- }
-
- return results;
-
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::countUser] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::countUser] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
-
- public UserObjects updateUserServizi(String oldUser, String newUser) throws DriverUsersDBException {
- return updateUser(oldUser, newUser, false);
- }
- public UserObjects updateUserCooperazione(String oldUser, String newUser) throws DriverUsersDBException {
- return updateUser(oldUser, newUser, true);
- }
- public UserObjects updateUser(String oldUser, String newUser, boolean cooperazione) throws DriverUsersDBException {
- if (oldUser == null || newUser==null)
- throw new DriverUsersDBException("[updateUser] Parametri Non Validi");
- Connection connectionDB = null;
- PreparedStatement stm = null;
- try {
- // Get Connection
- connectionDB = getConnection();
-
- List<String> tables = new ArrayList<>();
- if(cooperazione) {
- tables.add(CostantiDB.ACCORDI_COOPERAZIONE);
- tables.add(CostantiDB.ACCORDI);
- }
- else {
- tables.add(CostantiDB.PDD);
- tables.add(CostantiDB.GRUPPI);
- tables.add(CostantiDB.RUOLI);
- tables.add(CostantiDB.SCOPE);
- tables.add(CostantiDB.SOGGETTI);
- tables.add(CostantiDB.ACCORDI);
- tables.add(CostantiDB.SERVIZI);
- }
-
- UserObjects results = new UserObjects();
-
- for (String table : tables) {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObject.addUpdateTable(table);
- sqlQueryObject.addUpdateField("superuser", "?");
- sqlQueryObject.addWhereCondition("superuser = ?");
- if(CostantiDB.ACCORDI.equals(table)) {
-
- ISQLQueryObject sqlQueryObjectExclude = null;
- sqlQueryObjectExclude = SQLObjectFactory.createSQLQueryObject(this.tipoDatabase);
- sqlQueryObjectExclude.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
- sqlQueryObjectExclude.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPOSTO, "id_accordo");
- sqlQueryObjectExclude.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo="+CostantiDB.ACCORDI+".id");
- if(cooperazione){
- sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectExclude);
- }
- else{
- sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExclude);
- }
-
- }
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connectionDB.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, newUser);
- stm.setString(index++, oldUser);
- int result = stm.executeUpdate();
- stm.close();
-
- if(CostantiDB.PDD.equals(table)) {
- results.pdd = result;
- }
- else if(CostantiDB.GRUPPI.equals(table)) {
- results.gruppi = result;
- }
- else if(CostantiDB.RUOLI.equals(table)) {
- results.ruoli = result;
- }
- else if(CostantiDB.SCOPE.equals(table)) {
- results.scope = result;
- }
- else if(CostantiDB.SOGGETTI.equals(table)) {
- results.soggetti = result;
- }
- else if(CostantiDB.ACCORDI.equals(table)) {
- results.accordi_parte_comune = result;
- }
- else if(CostantiDB.ACCORDI_COOPERAZIONE.equals(table)) {
- results.accordi_accoperazione = result;
- }
- else if(CostantiDB.SERVIZI.equals(table)) {
- results.accordi_parte_specifica = result;
- }
- }
-
- return results;
-
- } catch (SQLException se) {
- throw new DriverUsersDBException("[DriverUsersDB::updateUser] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new DriverUsersDBException("[DriverUsersDB::updateUser] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- releaseConnection(connectionDB);
- }
- }
- }