DriverAudit.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.audit;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import org.openspcoop2.core.commons.ISearch;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- import org.openspcoop2.web.lib.audit.costanti.Costanti;
- import org.openspcoop2.web.lib.audit.dao.Appender;
- import org.openspcoop2.web.lib.audit.dao.AppenderProperty;
- import org.openspcoop2.web.lib.audit.dao.Configurazione;
- import org.openspcoop2.web.lib.audit.dao.Filtro;
- import org.openspcoop2.web.lib.audit.log.constants.Stato;
- import org.openspcoop2.web.lib.audit.log.constants.Tipologia;
- /**
- * 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 DriverAudit {
- /** Connessione al Database */
- private Connection connectionDB;
- // Tipo database passato al momento della creazione dell'oggetto
- private String tipoDB = null;
- public DriverAudit(Connection con, String tipoDB) throws AuditException {
- this.connectionDB = con;
- if (con == null)
- throw new AuditException("Connessione al Database non definita");
- this.tipoDB = tipoDB;
- if (tipoDB == null)
- throw new AuditException("Il tipoDatabase non puo essere null.");
- }
-
-
-
- public Configurazione getConfigurazione() throws AuditException {
-
- Configurazione configurazione = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_CONFIGURAZIONE);
- sqlQueryObject.addSelectField("*");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- rs = stm.executeQuery();
- if (rs.next()) {
- configurazione = new Configurazione();
- if(rs.getInt("audit_engine")==1)
- configurazione.setAuditEngineEnabled(true);
- else
- configurazione.setAuditEngineEnabled(false);
- if(rs.getInt("enabled")==1)
- configurazione.setAuditEnabled(true);
- else
- configurazione.setAuditEnabled(false);
- if(rs.getInt("dump")==1)
- configurazione.setDumpEnabled(true);
- else
- configurazione.setDumpEnabled(false);
- configurazione.setDumpFormat(rs.getString("dump_format"));
- configurazione.setAppender(this.getAppender());
- configurazione.setFiltri(this.getFiltri());
-
- }else{
- throw new AuditException("[DriverAudit::getConfigurazione] Configurazione non presente");
- }
- rs.close();
- stm.close();
-
- return configurazione;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getConfigurazione] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getConfigurazione] 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
- }
- }
- }
-
- public ArrayList<Filtro> getFiltri() throws AuditException {
-
- ArrayList<Filtro> filtri = new ArrayList<Filtro>();
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addSelectField("ora_registrazione");
- sqlQueryObject.addOrderBy("ora_registrazione");
- sqlQueryObject.setSortType(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- rs = stm.executeQuery();
- while (rs.next()) {
- filtri.add(this.getFiltro(rs.getLong("id")));
- }
- rs.close();
- stm.close();
-
- return filtri;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::::getFiltri] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::::getFiltri] 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
- }
- }
- }
- public List<Filtro> filtriList(ISearch ricerca, int idLista) throws AuditException {
- String nomeMetodo = "filtriList";
- 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));
- PreparedStatement stmt=null;
- ResultSet risultato=null;
- ArrayList<Filtro> lista = new ArrayList<Filtro>();
- try {
- if (!search.equals("")) {
- //query con search
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectCountField("*", "cont");
- sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition("username",search,true,true),
- sqlQueryObject.getWhereLikeCondition("tipo_operazione",search,true,true),
- sqlQueryObject.getWhereLikeCondition("tipo",search,true,true),
- sqlQueryObject.getWhereLikeCondition("stato",search,true,true),
- sqlQueryObject.getWhereLikeCondition("dump_search",search,true,true));
- queryString = sqlQueryObject.createSQLQuery();
- } else {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectCountField("*", "cont");
- queryString = sqlQueryObject.createSQLQuery();
- }
- stmt = this.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.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addSelectField("username");
- sqlQueryObject.addSelectField("tipo_operazione");
- sqlQueryObject.addSelectField("tipo");
- sqlQueryObject.addSelectField("stato");
- sqlQueryObject.addSelectField("dump_search");
- sqlQueryObject.addSelectField("ora_registrazione");
- sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition("username",search,true,true),
- sqlQueryObject.getWhereLikeCondition("tipo_operazione",search,true,true),
- sqlQueryObject.getWhereLikeCondition("tipo",search,true,true),
- sqlQueryObject.getWhereLikeCondition("stato",search,true,true),
- sqlQueryObject.getWhereLikeCondition("dump_search",search,true,true));
- sqlQueryObject.addOrderBy("ora_registrazione");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- queryString = sqlQueryObject.createSQLQuery();
- } else {
- // senza search
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addSelectField("username");
- sqlQueryObject.addSelectField("tipo_operazione");
- sqlQueryObject.addSelectField("tipo");
- sqlQueryObject.addSelectField("stato");
- sqlQueryObject.addSelectField("dump_search");
- sqlQueryObject.addSelectField("ora_registrazione");
- sqlQueryObject.addOrderBy("ora_registrazione");
- sqlQueryObject.setSortType(true);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- queryString = sqlQueryObject.createSQLQuery();
- }
- stmt = this.connectionDB.prepareStatement(queryString);
- risultato = stmt.executeQuery();
- while (risultato.next()) {
- lista.add(this.getFiltro(risultato.getLong("id")));
- }
- return lista;
- } catch (Exception qe) {
- throw new AuditException("[DriverAudit::" + nomeMetodo + "] Errore : " + qe.getMessage());
- } finally {
- try {
- if(risultato!=null)
- risultato.close();
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmt!=null)
- stmt.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public Filtro getFiltro(long id) throws AuditException {
-
- Filtro filtro = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
- if (rs.next()) {
- filtro = new Filtro();
- filtro.setUsername(rs.getString("username"));
- filtro.setTipoOperazione(Tipologia.toEnumConstant(rs.getString("tipo_operazione")));
- filtro.setTipoOggettoInModifica(rs.getString("tipo"));
- filtro.setStatoOperazione(Stato.toEnumConstant(rs.getString("stato")));
- filtro.setDump(rs.getString("dump_search"));
- if(rs.getInt("dump_expr")==1)
- filtro.setDumpExprRegular(true);
- else
- filtro.setDumpExprRegular(false);
-
- if(rs.getInt("enabled")==1)
- filtro.setAuditEnabled(true);
- else
- filtro.setAuditEnabled(false);
- if(rs.getInt("dump")==1)
- filtro.setDumpEnabled(true);
- else
- filtro.setDumpEnabled(false);
-
- filtro.setId(rs.getLong("id"));
- }else{
- throw new Exception("Filtro con id["+id+"] non trovato");
- }
- rs.close();
- stm.close();
-
- return filtro;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::::getFiltri] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::::getFiltri] 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
- }
- }
- }
-
- public ArrayList<Appender> getAppender() throws AuditException {
-
- ArrayList<Appender> appender = new ArrayList<Appender>();
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_APPENDER);
- sqlQueryObject.addSelectField("id");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- rs = stm.executeQuery();
- while (rs.next()) {
- appender.add(this.getAppender(rs.getLong("id")));
- }
- rs.close();
- stm.close();
-
- return appender;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getAppender] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getAppender] 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
- }
- }
- }
-
-
- public Appender getAppender(String nome) throws AuditException {
- PreparedStatement stm = null;
- ResultSet rs = null;
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_APPENDER);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("name=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, nome);
- rs = stm.executeQuery();
- if (rs.next()) {
-
- return this.getAppender(rs.getLong("id"));
-
- }else{
- throw new Exception("Appender con nome["+nome+"] non trovato");
- }
-
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getAppender] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getAppender] 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
- }
- }
- }
-
- public Appender getAppender(long id) throws AuditException {
-
- Appender appender = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- PreparedStatement stmProperties = null;
- ResultSet rsProperties = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_APPENDER);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
- if (rs.next()) {
-
- appender = new Appender();
-
- appender.setNome(rs.getString("name"));
- appender.setClassName(rs.getString("class"));
- appender.setId(rs.getLong("id"));
-
- ISQLQueryObject sqlQueryObjectProperties = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObjectProperties.addFromTable(Costanti.DB_AUDIT_APPENDER_PROPERTIES);
- sqlQueryObjectProperties.addSelectField("*");
- sqlQueryObjectProperties.addWhereCondition("id_audit_appender=?");
- String sqlQueryProperties = sqlQueryObjectProperties.createSQLQuery();
- stmProperties = this.connectionDB.prepareStatement(sqlQueryProperties);
- stmProperties.setLong(1, appender.getId());
- rsProperties = stmProperties.executeQuery();
- while (rsProperties.next()) {
-
- AppenderProperty ap = new AppenderProperty();
- ap.setId(rsProperties.getLong("id"));
- ap.setIdAppender(appender.getId());
- ap.setName(rsProperties.getString("name"));
- ap.setValue(rsProperties.getString("value"));
- appender.addProperty(ap);
-
- }
-
- }else{
- throw new Exception("Appender con id["+id+"] non trovato");
- }
- rs.close();
- stm.close();
-
- return appender;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getAppender] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getAppender] Exception: " + ex.getMessage(),ex);
- } finally {
- try {
- if(rsProperties!=null)
- rsProperties.close();
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmProperties!=null)
- stmProperties.close();
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(rs!=null)
- rs.close();
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
-
-
- public void createConfigurazione(Configurazione configurazione) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (configurazione == null)
- throw new AuditException("[DriverAudit::createConfigurazione] Parametro non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addInsertTable(Costanti.DB_AUDIT_CONFIGURAZIONE);
- sqlQueryObject.addInsertField("audit_engine", "?");
- sqlQueryObject.addInsertField("enabled", "?");
- sqlQueryObject.addInsertField("dump", "?");
- sqlQueryObject.addInsertField("dump_format", "?");
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- if(configurazione.isAuditEngineEnabled())
- stm.setInt(1, 1);
- else
- stm.setInt(1, 0);
- if(configurazione.isAuditEnabled())
- stm.setInt(2, 1);
- else
- stm.setInt(2, 0);
- if(configurazione.isDumpEnabled())
- stm.setInt(3, 1);
- else
- stm.setInt(3, 0);
- stm.setString(4, configurazione.getDumpFormat());
- stm.executeUpdate();
- stm.close();
-
- // Filtri
- for(int i=0; i<configurazione.sizeFiltri(); i++){
- Filtro filtro = configurazione.getFiltro(i);
- this.createFiltro(filtro);
- }
-
- // Appender
- for(int i=0; i<configurazione.sizeAppender(); i++){
- Appender appender = configurazione.getAppender(i);
- this.createAppender(appender);
- }
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void createFiltro(Filtro filtro) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (filtro == null)
- throw new AuditException("[DriverAudit::createFiltro] Parametro non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addInsertTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addInsertField("username", "?");
- sqlQueryObject.addInsertField("tipo_operazione", "?");
- sqlQueryObject.addInsertField("tipo", "?");
- sqlQueryObject.addInsertField("stato", "?");
- sqlQueryObject.addInsertField("dump_search", "?");
- sqlQueryObject.addInsertField("dump_expr", "?");
- sqlQueryObject.addInsertField("enabled", "?");
- sqlQueryObject.addInsertField("dump", "?");
-
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, filtro.getUsername());
- stm.setString(2, filtro.getTipoOperazione() != null ?
- filtro.getTipoOperazione().toString() : null);
- stm.setString(3, filtro.getTipoOggettoInModifica());
- stm.setString(4, filtro.getStatoOperazione() != null ?
- filtro.getStatoOperazione().toString() : null);
- stm.setString(5, filtro.getDump());
- if(filtro.isDumpExprRegular())
- stm.setInt(6, 1);
- else
- stm.setInt(6, 0);
- if(filtro.isAuditEnabled())
- stm.setInt(7, 1);
- else
- stm.setInt(7, 0);
- if(filtro.isDumpEnabled())
- stm.setInt(8, 1);
- else
- stm.setInt(8, 0);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void createAppender(Appender appender) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (appender == null)
- throw new AuditException("[DriverAudit::createAppender] Parametro non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addInsertTable(Costanti.DB_AUDIT_APPENDER);
- sqlQueryObject.addInsertField("name", "?");
- sqlQueryObject.addInsertField("class", "?");
-
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, appender.getNome());
- stm.setString(2, appender.getClassName());
- stm.executeUpdate();
- stm.close();
-
- // Recupero id dell'appender appena inserito
- long idAppender = this.getAppender(appender.getNome()).getId();
- appender.setId(idAppender);
-
- // Inserisco proprieta
- for(int i=0; i<appender.sizeProperties(); i++){
-
- AppenderProperty ap = appender.getProperty(i);
- ap.setIdAppender(idAppender);
-
- this.createAppenderProperty(ap);
- }
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void createAppenderProperty(AppenderProperty appender) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (appender == null)
- throw new AuditException("[DriverAudit::createAppender] Parametro non valido.");
-
- if (appender.getIdAppender() <=0 )
- throw new AuditException("[DriverAudit::createAppender] IdAppender ["+appender.getIdAppender()+"] non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addInsertTable(Costanti.DB_AUDIT_APPENDER_PROPERTIES);
- sqlQueryObject.addInsertField("name", "?");
- sqlQueryObject.addInsertField("value", "?");
- sqlQueryObject.addInsertField("id_audit_appender", "?");
-
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, appender.getName());
- stm.setString(2, appender.getValue());
- stm.setLong(3, appender.getIdAppender());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
- public void updateConfigurazione(Configurazione configurazione) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (configurazione == null)
- throw new AuditException("[DriverAudit::updateConfigurazione] Parametro non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_CONFIGURAZIONE);
- sqlQueryObject.addUpdateField("audit_engine", "?");
- sqlQueryObject.addUpdateField("enabled", "?");
- sqlQueryObject.addUpdateField("dump", "?");
- sqlQueryObject.addUpdateField("dump_format", "?");
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- if(configurazione.isAuditEngineEnabled())
- stm.setInt(1, 1);
- else
- stm.setInt(1, 0);
- if(configurazione.isAuditEnabled())
- stm.setInt(2, 1);
- else
- stm.setInt(2, 0);
- if(configurazione.isDumpEnabled())
- stm.setInt(3, 1);
- else
- stm.setInt(3, 0);
- stm.setString(4, configurazione.getDumpFormat());
- stm.executeUpdate();
- stm.close();
-
- // Elimino tutti i filtri presenti
- this.deleteFiltri();
-
- // Aggiungo quelli presenti
- for(int i=0; i<configurazione.sizeFiltri(); i++){
- Filtro filtro = configurazione.getFiltro(i);
- this.createFiltro(filtro);
- }
-
- // Elimino tutti gli appender presenti
- this.deleteAppenders();
-
- // Appender
- for(int i=0; i<configurazione.sizeAppender(); i++){
- Appender appender = configurazione.getAppender(i);
- this.createAppender(appender);
- }
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
- public void updateFiltro(Filtro filtro) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (filtro == null)
- throw new AuditException("[DriverAudit::updateFiltro] Parametro non valido.");
- if (filtro.getId()<=0)
- throw new AuditException("[DriverAudit::updateFiltro] Id ["+filtro.getId()+"] non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addUpdateField("username", "?");
- sqlQueryObject.addUpdateField("tipo_operazione", "?");
- sqlQueryObject.addUpdateField("tipo", "?");
- sqlQueryObject.addUpdateField("stato", "?");
- sqlQueryObject.addUpdateField("dump_search", "?");
- sqlQueryObject.addUpdateField("dump_expr", "?");
- sqlQueryObject.addUpdateField("enabled", "?");
- sqlQueryObject.addUpdateField("dump", "?");
- sqlQueryObject.addWhereCondition("id=?");
-
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, filtro.getUsername());
- stm.setString(2, filtro.getTipoOperazione() != null ?
- filtro.getTipoOperazione().toString() : null);
- stm.setString(3, filtro.getTipoOggettoInModifica());
- stm.setString(4, filtro.getStatoOperazione() != null ?
- filtro.getStatoOperazione().toString() : null);
- stm.setString(5, filtro.getDump());
- if(filtro.isDumpExprRegular())
- stm.setInt(6, 1);
- else
- stm.setInt(6, 0);
- if(filtro.isAuditEnabled())
- stm.setInt(7, 1);
- else
- stm.setInt(7, 0);
- if(filtro.isDumpEnabled())
- stm.setInt(8, 1);
- else
- stm.setInt(8, 0);
- stm.setLong(9, filtro.getId());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void updateAppender(Appender appender) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (appender == null)
- throw new AuditException("[DriverAudit::updateAppender] Parametro non valido.");
-
- if (appender.getId()<=0)
- throw new AuditException("[DriverAudit::updateAppender] Id ["+appender.getId()+"] non valido.");
-
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_APPENDER);
- sqlQueryObject.addUpdateField("name", "?");
- sqlQueryObject.addUpdateField("class", "?");
- sqlQueryObject.addWhereCondition("id=?");
-
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, appender.getNome());
- stm.setString(2, appender.getClassName());
- stm.setLong(3, appender.getId());
- stm.executeUpdate();
- stm.close();
-
- // Delete appenderProperties
- deleteAppenderProperties(appender);
-
- // Inserisco le proprieta
- for(int i=0; i<appender.sizeProperties(); i++){
-
- AppenderProperty ap = appender.getProperty(i);
- ap.setIdAppender(appender.getId());
-
- this.createAppenderProperty(ap);
- }
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
- public void updateAppenderProperty(AppenderProperty appender) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (appender == null)
- throw new AuditException("[DriverAudit::updateAppenderProperty] Parametro non valido.");
-
- if (appender.getIdAppender() <=0 )
- throw new AuditException("[DriverAudit::updateAppenderProperty] IdAppender ["+appender.getIdAppender()+"] non valido.");
- if (appender.getId() <=0 )
- throw new AuditException("[DriverAudit::updateAppenderProperty] Id ["+appender.getId()+"] non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_APPENDER_PROPERTIES);
- sqlQueryObject.addUpdateField("name", "?");
- sqlQueryObject.addUpdateField("value", "?");
- sqlQueryObject.addUpdateField("id_audit_appender", "?");
- sqlQueryObject.addWhereCondition("id=?");
-
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, appender.getName());
- stm.setString(2, appender.getValue());
- stm.setLong(3, appender.getIdAppender());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
-
- public void deleteConfigurazione() throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- try {
- // Elimino tutti i filtri presenti
- this.deleteFiltri();
-
- // Elimino tutti gli appender presenti
- this.deleteAppenders();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_CONFIGURAZIONE);
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
- public void deleteFiltri() throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_FILTRI);
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void deleteFiltro(Filtro f) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_FILTRI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, f.getId());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void deleteAppenders() throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_APPENDER_PROPERTIES);
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.executeUpdate();
- stm.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_APPENDER);
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
- public void deleteAppenderProperties(Appender appender) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (appender == null)
- throw new AuditException("[DriverAudit::deleteAppenderProperties] Parametro non valido.");
-
- if (appender.getId() <=0 )
- throw new AuditException("[DriverAudit::deleteAppenderProperties] Id ["+appender.getId()+"] non valido.");
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_APPENDER_PROPERTIES);
- sqlQueryObject.addWhereCondition("id_audit_appender=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, appender.getId());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
- }