DriverConfigurazioneDBTracciamentoLIB.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.config.driver.db;
import 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.config.TracciamentoConfigurazione;
import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletrace;
import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletraceConnector;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
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;
import org.openspcoop2.utils.sql.SQLQueryObjectException;
/**
* DriverConfigurazioneDBTracciamentoLIB
*
* @author Poli Andrea (poli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class DriverConfigurazioneDBTracciamentoLIB {
private DriverConfigurazioneDBTracciamentoLIB() {}
static void crudTracciamentoConfigurazione(int type, Connection con, TracciamentoConfigurazione tracciamentoConfig,
Long idProprietario, String tipoProprietario, String tipoConfigurazione) throws DriverConfigurazioneException {
PreparedStatement updateStmt = null;
try {
switch (type) {
case CREATE:
if(tracciamentoConfig==null) {
break;
}
createTracciamentoConfigurazione(con, tracciamentoConfig,
idProprietario, tipoProprietario, tipoConfigurazione);
break;
case UPDATE:
// Per la delete recupero l'immagine attuale del config
TracciamentoConfigurazione tracciamentoConfigOld = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazione(con, idProprietario, tipoProprietario, tipoConfigurazione);
if(tracciamentoConfigOld!=null) {
crudTracciamentoConfigurazione(DELETE, con, tracciamentoConfigOld, idProprietario, tipoProprietario, tipoConfigurazione);
}
// Creo la nuova immagine
if(tracciamentoConfig!=null) {
crudTracciamentoConfigurazione(CREATE, con, tracciamentoConfig, idProprietario, tipoProprietario, tipoConfigurazione);
}
break;
case DELETE:
if(tracciamentoConfig==null) {
break;
}
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE);
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_PROPRIETARIO+"=?");
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_TIPO+"=?");
if(idProprietario!=null) {
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_ID_PROPRIETARIO+"=?");
}
sqlQueryObject.setANDLogicOperator(true);
String updateQuery = sqlQueryObject.createSQLDelete();
updateStmt = con.prepareStatement(updateQuery);
int index = 1;
updateStmt.setString(index++, tipoProprietario);
updateStmt.setString(index++, tipoConfigurazione);
if(idProprietario!=null) {
updateStmt.setLong(index++, idProprietario);
}
updateStmt.executeUpdate();
break;
default:
break;
}
} catch (SQLException se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::crudTracciamentoConfigurazione] SQLException [" + se.getMessage() + "].",se);
}catch (Exception se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::crudTracciamentoConfigurazione] Exception [" + se.getMessage() + "].",se);
} finally {
JDBCUtilities.closeResources(updateStmt);
}
}
private static void createTracciamentoConfigurazione(Connection con, TracciamentoConfigurazione tracciamentoConfig,
Long idProprietario, String tipoProprietario, String tipoConfigurazione) throws SQLException, SQLQueryObjectException {
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE);
sqlQueryObject.addInsertField(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_PROPRIETARIO, "?");
sqlQueryObject.addInsertField(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_TIPO, "?");
sqlQueryObject.addInsertField(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_ID_PROPRIETARIO, "?");
sqlQueryObject.addInsertField("stato", "?");
sqlQueryObject.addInsertField("filtro_esiti", "?");
sqlQueryObject.addInsertField("request_in", "?");
sqlQueryObject.addInsertField("request_out", "?");
sqlQueryObject.addInsertField("response_out", "?");
sqlQueryObject.addInsertField("response_out_complete", "?");
PreparedStatement updateStmt = null;
try {
String updateQuery = sqlQueryObject.createSQLInsert();
updateStmt = con.prepareStatement(updateQuery);
int index = 1;
updateStmt.setString(index++, tipoProprietario);
updateStmt.setString(index++, tipoConfigurazione);
updateStmt.setLong(index++, idProprietario!=null ? idProprietario : -1);
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getStato()));
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getFiltroEsiti()));
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getRequestIn()));
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getRequestOut()));
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getResponseOut()));
updateStmt.setString(index++, DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getResponseOutComplete()));
updateStmt.executeUpdate();
updateStmt.close();
updateStmt=null;
} finally {
JDBCUtilities.closeResources(updateStmt);
}
}
protected static TracciamentoConfigurazione readTracciamentoConfigurazione(Connection con, Long idProprietario, String tipoProprietario, String tipoConfigurazione) throws DriverConfigurazioneException {
PreparedStatement stm1=null;
ResultSet rs1= null;
try {
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE);
sqlQueryObject.addSelectField("*");
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_PROPRIETARIO+"=?");
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_TIPO+"=?");
if(idProprietario!=null) {
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_COLUMN_ID_PROPRIETARIO+"=?");
}
sqlQueryObject.setANDLogicOperator(true);
String sqlQuery = sqlQueryObject.createSQLQuery();
stm1 = con.prepareStatement(sqlQuery);
int index = 1;
stm1.setString(index++, tipoProprietario);
stm1.setString(index++, tipoConfigurazione);
if(idProprietario!=null) {
stm1.setLong(index++, idProprietario);
}
rs1 = stm1.executeQuery();
TracciamentoConfigurazione tracciamentoConfig = null;
if(rs1.next()){
tracciamentoConfig = new TracciamentoConfigurazione();
tracciamentoConfig.setId(rs1.getLong("id"));
tracciamentoConfig.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConPersonalizzazione(rs1.getString("stato")));
tracciamentoConfig.setFiltroEsiti(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("filtro_esiti")));
tracciamentoConfig.setRequestIn(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaBloccante(rs1.getString("request_in")));
tracciamentoConfig.setRequestOut(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaBloccante(rs1.getString("request_out")));
tracciamentoConfig.setResponseOut(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaBloccante(rs1.getString("response_out")));
tracciamentoConfig.setResponseOutComplete(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("response_out_complete")));
}
return tracciamentoConfig;
}catch (Exception se) {
throw new DriverConfigurazioneException(se.getMessage(),se);
}finally {
JDBCUtilities.closeResources(rs1, stm1);
}
}
static void crudTracciamentoConfigurazioneFiletrace(int type, Connection con, TracciamentoConfigurazioneFiletrace tracciamentoConfig,
Long idProprietario, String tipoProprietario) throws DriverConfigurazioneException {
PreparedStatement updateStmt = null;
try {
switch (type) {
case CREATE:
if(tracciamentoConfig==null) {
break;
}
createTracciamentoConfigurazioneFiletrace(con, tracciamentoConfig,
idProprietario, tipoProprietario);
break;
case UPDATE:
// Per la delete recupero l'immagine attuale del config
TracciamentoConfigurazioneFiletrace tracciamentoConfigOld = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazioneFiletrace(con, idProprietario, tipoProprietario);
if(tracciamentoConfigOld!=null) {
crudTracciamentoConfigurazioneFiletrace(DELETE, con, tracciamentoConfigOld, idProprietario, tipoProprietario);
}
// Creo la nuova immagine
if(tracciamentoConfig!=null) {
crudTracciamentoConfigurazioneFiletrace(CREATE, con, tracciamentoConfig, idProprietario, tipoProprietario);
}
break;
case DELETE:
if(tracciamentoConfig==null) {
break;
}
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE);
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_PROPRIETARIO+"=?");
if(idProprietario!=null) {
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_ID_PROPRIETARIO+"=?");
}
sqlQueryObject.setANDLogicOperator(true);
String updateQuery = sqlQueryObject.createSQLDelete();
updateStmt = con.prepareStatement(updateQuery);
int index = 1;
updateStmt.setString(index++, tipoProprietario);
if(idProprietario!=null) {
updateStmt.setLong(index++, idProprietario);
}
updateStmt.executeUpdate();
break;
default:
break;
}
} catch (SQLException se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::crudTracciamentoConfigurazioneFiletrace] SQLException [" + se.getMessage() + "].",se);
}catch (Exception se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::crudTracciamentoConfigurazioneFiletrace] Exception [" + se.getMessage() + "].",se);
} finally {
JDBCUtilities.closeResources(updateStmt);
}
}
private static void createTracciamentoConfigurazioneFiletrace(Connection con, TracciamentoConfigurazioneFiletrace tracciamentoConfig,
Long idProprietario, String tipoProprietario) throws SQLException, SQLQueryObjectException {
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE);
sqlQueryObject.addInsertField(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_PROPRIETARIO, "?");
sqlQueryObject.addInsertField(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_ID_PROPRIETARIO, "?");
sqlQueryObject.addInsertField("config", "?");
sqlQueryObject.addInsertField("dump_in_stato", "?");
sqlQueryObject.addInsertField("dump_in_stato_hdr", "?");
sqlQueryObject.addInsertField("dump_in_stato_body", "?");
sqlQueryObject.addInsertField("dump_out_stato", "?");
sqlQueryObject.addInsertField("dump_out_stato_hdr", "?");
sqlQueryObject.addInsertField("dump_out_stato_body", "?");
PreparedStatement updateStmt = null;
try {
String updateQuery = sqlQueryObject.createSQLInsert();
updateStmt = con.prepareStatement(updateQuery);
int index = 1;
updateStmt.setString(index++, tipoProprietario);
updateStmt.setLong(index++, idProprietario!=null ? idProprietario : -1);
updateStmt.setString(index++, tracciamentoConfig.getConfig());
updateStmt.setString(index++, tracciamentoConfig.getDumpIn()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpIn().getStato()) : null);
updateStmt.setString(index++, tracciamentoConfig.getDumpIn()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpIn().getHeader()) : null);
updateStmt.setString(index++, tracciamentoConfig.getDumpIn()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpIn().getPayload()) : null);
updateStmt.setString(index++, tracciamentoConfig.getDumpOut()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpOut().getStato()) : null);
updateStmt.setString(index++, tracciamentoConfig.getDumpOut()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpOut().getHeader()) : null);
updateStmt.setString(index++, tracciamentoConfig.getDumpOut()!=null ? DriverConfigurazioneDBLib.getValue(tracciamentoConfig.getDumpOut().getPayload()) : null);
updateStmt.executeUpdate();
updateStmt.close();
updateStmt=null;
} finally {
JDBCUtilities.closeResources(updateStmt);
}
}
protected static TracciamentoConfigurazioneFiletrace readTracciamentoConfigurazioneFiletrace(Connection con, Long idProprietario, String tipoProprietario) throws DriverConfigurazioneException {
PreparedStatement stm1=null;
ResultSet rs1= null;
try {
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE);
sqlQueryObject.addSelectField("*");
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_PROPRIETARIO+"=?");
if(idProprietario!=null) {
sqlQueryObject.addWhereCondition(CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_FILETRACE_COLUMN_ID_PROPRIETARIO+"=?");
}
sqlQueryObject.setANDLogicOperator(true);
String sqlQuery = sqlQueryObject.createSQLQuery();
stm1 = con.prepareStatement(sqlQuery);
int index = 1;
stm1.setString(index++, tipoProprietario);
if(idProprietario!=null) {
stm1.setLong(index++, idProprietario);
}
rs1 = stm1.executeQuery();
TracciamentoConfigurazioneFiletrace tracciamentoConfig = null;
if(rs1.next()){
tracciamentoConfig = new TracciamentoConfigurazioneFiletrace();
tracciamentoConfig.setId(rs1.getLong("id"));
tracciamentoConfig.setConfig(rs1.getString("config"));
StatoFunzionalita inStato = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_in_stato"));
StatoFunzionalita inStatoHdr = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_in_stato_hdr"));
StatoFunzionalita inStatoBody = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_in_stato_body"));
if(inStato!=null || inStatoHdr!=null || inStatoBody!=null) {
tracciamentoConfig.setDumpIn(new TracciamentoConfigurazioneFiletraceConnector());
tracciamentoConfig.getDumpIn().setStato(inStato);
tracciamentoConfig.getDumpIn().setHeader(inStatoHdr);
tracciamentoConfig.getDumpIn().setPayload(inStatoBody);
}
StatoFunzionalita outStato = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_out_stato"));
StatoFunzionalita outStatoHdr = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_out_stato_hdr"));
StatoFunzionalita outStatoBody = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs1.getString("dump_out_stato_body"));
if(outStato!=null || outStatoHdr!=null || outStatoBody!=null) {
tracciamentoConfig.setDumpOut(new TracciamentoConfigurazioneFiletraceConnector());
tracciamentoConfig.getDumpOut().setStato(outStato);
tracciamentoConfig.getDumpOut().setHeader(outStatoHdr);
tracciamentoConfig.getDumpOut().setPayload(outStatoBody);
}
}
return tracciamentoConfig;
}catch (Exception se) {
throw new DriverConfigurazioneException(se.getMessage(),se);
}finally {
JDBCUtilities.closeResources(rs1, stm1);
}
}
}