DriverConfigurazioneDBSoggettiLib.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.core.config.driver.db;
- import static org.openspcoop2.core.constants.CostantiDB.CREATE;
- import static org.openspcoop2.core.constants.CostantiDB.DELETE;
- import static org.openspcoop2.core.constants.CostantiDB.UPDATE;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- /**
- * DriverConfigurazioneDB_soggettiLIB
- *
- * @author Stefano Corallo - corallo@link.it
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class DriverConfigurazioneDBSoggettiLib {
-
- private DriverConfigurazioneDBSoggettiLib() {}
- private static String buildCrudSoggettoMessage(int type, int n) {
- return "CRUDSoggetto type = " + type + " row affected =" + n;
- }
-
- /**
- * CRUD oggetto Soggetto Non si occupa di chiudere la connessione con
- * il db in caso di errore in quanto verra' gestita dal metodo chiamante
- *
- * @param type
- * Tipo operazione {1 (CREATE),2 (UPDATE),3 (DELETE)}
- * @param soggetto
- * @return L'ID dell'oggetto creato in caso di CREATE, altrimenti il numero
- * di righe che sono state modificate/cancellate
- * @throws DriverConfigurazioneException
- */
- public static long CRUDSoggetto(int type, org.openspcoop2.core.config.Soggetto soggetto, Connection con) throws DriverConfigurazioneException {
- if (soggetto == null)
- throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDSoggetto] Parametro non valido.");
- String nome = soggetto.getNome();
- String tipo = soggetto.getTipo();
- if (nome == null || nome.equals(""))
- throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDSoggetto] Parametro Nome non valido.");
- if (tipo == null || tipo.equals(""))
- throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDSoggetto] Parametro Tipo non valido.");
- String descrizione = soggetto.getDescrizione();
- String identificativoPorta = soggetto.getIdentificativoPorta();
- String superuser = soggetto.getSuperUser();
- boolean router = soggetto.getRouter();
- boolean isDefault = soggetto.isDominioDefault();
-
- String pdUrlPrefixRewriter = soggetto.getPdUrlPrefixRewriter();
- String paUrlPrefixRewriter = soggetto.getPaUrlPrefixRewriter();
-
- PreparedStatement updateStmt = null;
- PreparedStatement selectStmt = null;
- String updateQuery = "";
- String selectQuery = "";
- ResultSet selectRS = null;
- int n = 0;
- try {
- // preparo lo statement in base al tipo di operazione
- switch (type) {
- case CREATE:
- // CREATE
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
- sqlQueryObject.addInsertTable(DriverConfigurazioneDBLib.tabellaSoggetti);
- sqlQueryObject.addInsertField("nome_soggetto", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- sqlQueryObject.addInsertField("identificativo_porta", "?");
- sqlQueryObject.addInsertField("tipo_soggetto", "?");
- sqlQueryObject.addInsertField("is_router", "?");
- sqlQueryObject.addInsertField("is_default", "?");
- sqlQueryObject.addInsertField("superuser", "?");
- sqlQueryObject.addInsertField("pd_url_prefix_rewriter", "?");
- sqlQueryObject.addInsertField("pa_url_prefix_rewriter", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setString(index++, nome);
- updateStmt.setString(index++, descrizione);
- updateStmt.setString(index++, identificativoPorta);
- updateStmt.setString(index++, tipo);
- updateStmt.setInt(index++, (router ? CostantiDB.TRUE : CostantiDB.FALSE));
- updateStmt.setInt(index++, (isDefault ? CostantiDB.TRUE : CostantiDB.FALSE));
- updateStmt.setString(index++, superuser);
- updateStmt.setString(index++, pdUrlPrefixRewriter);
- updateStmt.setString(index++, paUrlPrefixRewriter);
- // eseguo lo statement
- n = updateStmt.executeUpdate();
- DriverConfigurazioneDBLib.logDebug("CRUDSoggetto CREATE : \n" + DBUtils.formatSQLString(updateQuery, nome, descrizione, identificativoPorta, tipo, router, superuser));
- DriverConfigurazioneDBLib.logDebug(buildCrudSoggettoMessage(type, n));
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
- sqlQueryObject.addFromTable(DriverConfigurazioneDBLib.tabellaSoggetti);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("tipo_soggetto = ?");
- sqlQueryObject.addWhereCondition("nome_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setString(1, tipo);
- selectStmt.setString(2, nome);
- break;
- case UPDATE:
- // UPDATE
- String oldNomeSoggetto = null;
- String oldTipoSoggetto = null;
- if(soggetto.getOldIDSoggettoForUpdate()!=null){
- oldNomeSoggetto = soggetto.getOldIDSoggettoForUpdate().getNome();
- oldTipoSoggetto = soggetto.getOldIDSoggettoForUpdate().getTipo();
- }
- // controllo se sono presenti i campi necessari per
- // l'aggiornamento
- if (oldNomeSoggetto == null || oldNomeSoggetto.equals(""))
- oldNomeSoggetto = nome;
- if (oldTipoSoggetto == null || oldTipoSoggetto.equals(""))
- oldTipoSoggetto = tipo;
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
- sqlQueryObject.addUpdateTable(DriverConfigurazioneDBLib.tabellaSoggetti);
- sqlQueryObject.addUpdateField("nome_soggetto", "?");
- sqlQueryObject.addUpdateField("descrizione", "?");
- sqlQueryObject.addUpdateField("identificativo_porta", "?");
- sqlQueryObject.addUpdateField("tipo_soggetto", "?");
- sqlQueryObject.addUpdateField("is_router", "?");
- sqlQueryObject.addUpdateField("is_default", "?");
- sqlQueryObject.addUpdateField("superuser", "?");
- sqlQueryObject.addUpdateField("pd_url_prefix_rewriter", "?");
- sqlQueryObject.addUpdateField("pa_url_prefix_rewriter", "?");
- sqlQueryObject.addWhereCondition("nome_soggetto=?");
- sqlQueryObject.addWhereCondition("tipo_soggetto=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLUpdate();
- updateStmt = con.prepareStatement(updateQuery);
- index = 1;
- updateStmt.setString(index++, nome);
- updateStmt.setString(index++, descrizione);
- updateStmt.setString(index++, identificativoPorta);
- updateStmt.setString(index++, tipo);
- updateStmt.setInt(index++, (router ? CostantiDB.TRUE : CostantiDB.FALSE));
- updateStmt.setInt(index++, (isDefault ? CostantiDB.TRUE : CostantiDB.FALSE));
- updateStmt.setString(index++, superuser);
- updateStmt.setString(index++, pdUrlPrefixRewriter);
- updateStmt.setString(index++, paUrlPrefixRewriter);
- updateStmt.setString(index++, oldNomeSoggetto);
- updateStmt.setString(index++, oldTipoSoggetto);
- // eseguo lo statement
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverConfigurazioneDBLib.logDebug("CRUDSoggetto UPDATE : \n" + DBUtils.formatSQLString(updateQuery, nome, descrizione, identificativoPorta, tipo, router, soggetto.getId()));
- DriverConfigurazioneDBLib.logDebug(buildCrudSoggettoMessage(type, n));
- break;
- case DELETE:
- // DELETE
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
- sqlQueryObject.addDeleteTable(DriverConfigurazioneDBLib.tabellaSoggetti);
- sqlQueryObject.addWhereCondition("nome_soggetto=?");
- sqlQueryObject.addWhereCondition("tipo_soggetto=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setString(1, soggetto.getNome());
- updateStmt.setString(2, soggetto.getTipo());
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverConfigurazioneDBLib.logDebug(buildCrudSoggettoMessage(type, n));
- DriverConfigurazioneDBLib.logDebug("CRUDSoggetto DELETE : \n" + DBUtils.formatSQLString(updateQuery, soggetto.getNome(), soggetto.getTipo()));
- break;
- default:
- break;
- }
- // in caso di create eseguo la select e ritorno l'id dell'oggetto
- // creato
- if (type == CostantiDB.CREATE &&
- selectStmt!=null) {
- selectRS = selectStmt.executeQuery();
- if (selectRS.next()) {
- soggetto.setId(selectRS.getLong("id"));
- return soggetto.getId();
- }
- }
- return n;
- } catch (SQLException se) {
- throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDSoggetto] SQLException [" + se.getMessage() + "].",se);
- }catch (Exception se) {
- throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDSoggetto] Exception [" + se.getMessage() + "].",se);
- } finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
-
- }
- }
-
- }