DriverAuditDBAppender.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.sql.Timestamp;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- import org.openspcoop2.core.commons.ISearch;
- import org.openspcoop2.utils.TipiDatabase;
- import org.openspcoop2.utils.date.DateUtils;
- import org.openspcoop2.utils.jdbc.CustomKeyGeneratorObject;
- import org.openspcoop2.utils.jdbc.InsertAndGeneratedKey;
- import org.openspcoop2.utils.jdbc.InsertAndGeneratedKeyJDBCType;
- import org.openspcoop2.utils.jdbc.InsertAndGeneratedKeyObject;
- 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.log.Binary;
- import org.openspcoop2.web.lib.audit.log.Operation;
- 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 DriverAuditDBAppender {
- /** Connessione al Database */
- private Connection connectionDB;
- // Tipo database passato al momento della creazione dell'oggetto
- private String tipoDB = null;
- public DriverAuditDBAppender(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 Operation getOperation(long id) throws AuditException {
-
- Operation operation = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(id<=0){
- throw new AuditException("[DriverAudit::getOperation] Id non valido");
- }
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_OPERATIONS_TABLE);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
- if (rs.next()) {
- operation = new Operation();
- operation.setTipologia(Tipologia.toEnumConstant(rs.getString("tipo_operazione")));
- operation.setTipoOggetto(rs.getString("tipo"));
- operation.setObjectId(rs.getString("object_id"));
- operation.setObjectOldId(rs.getString("object_old_id"));
- operation.setUtente(rs.getString("utente"));
- operation.setStato(Stato.toEnumConstant(rs.getString("stato")));
- operation.setObjectDetails(rs.getString("object_details"));
- operation.setObjectClass(rs.getString("object_class"));
- operation.setError(rs.getString("error"));
- operation.setTimeRequest(rs.getTimestamp("time_request"));
- operation.setTimeExecute(rs.getTimestamp("time_execute"));
- operation.setId(id);
-
- // binaries
- ArrayList<Binary> list = this.getBinaries(id);
- if(list!=null && !list.isEmpty()){
- operation.setBinaryList(list);
- }
-
- }else{
- throw new AuditException("[DriverAudit::getOperation] non presente");
- }
-
- return operation;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getOperation] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getOperation] 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<Binary> getBinaries(long idOperation) throws AuditException {
-
- ArrayList<Binary> binaries = new ArrayList<Binary>();
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(idOperation<=0){
- throw new AuditException("[DriverAudit::getBinaries] Id non valido");
- }
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_audit_operation=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idOperation);
- rs = stm.executeQuery();
- while (rs.next()) {
- binaries.add(this.getBinary(rs.getLong("id")));
- }
-
- return binaries;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getBinaries] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getBinaries] 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 Binary getBinary(long id) throws AuditException {
-
- Binary binary = null;
- PreparedStatement stm = null;
- ResultSet rs = null;
- if(id<=0){
- throw new AuditException("[DriverAudit::getBinary] Id non valido");
- }
-
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
- if (rs.next()) {
- binary = new Binary();
-
- binary.setBinaryId(rs.getString("binary_id"));
- binary.setChecksum(rs.getLong("checksum"));
- binary.setIdOperation(rs.getLong("id_audit_operation"));
- binary.setId(id);
-
- }else{
- throw new AuditException("[DriverAudit::getBinary] non presente");
- }
-
- return binary;
- } catch (SQLException se) {
- throw new AuditException("[DriverAudit::getBinary] SqlException: " + se.getMessage(),se);
- } catch (Exception ex) {
- throw new AuditException("[DriverAudit::getBinary] 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 void createOperation(Operation operation) throws AuditException {
-
- if (operation == null)
- throw new AuditException("[DriverAudit::createOperation] Parametro non valido.");
-
- try {
-
- //Inserimento della traccia nel DB
- if(!TipiDatabase.isAMember(this.tipoDB)){
- throw new Exception("Tipo database ["+this.tipoDB+"] non supportato");
- }
- TipiDatabase tipo = TipiDatabase.toEnumConstant(this.tipoDB);
- // ** Preparazione parametri
- Timestamp timeRequestT = null;
- if(operation.getTimeRequest()!=null){
- timeRequestT = new Timestamp(operation.getTimeRequest().getTime());
- }
- Timestamp timeExecuteT = null;
- if(operation.getTimeExecute()!=null){
- timeExecuteT = new Timestamp(operation.getTimeExecute().getTime());
- }
- // ** Insert and return generated key
- CustomKeyGeneratorObject customKeyGeneratorObject = new CustomKeyGeneratorObject(Costanti.DB_AUDIT_OPERATIONS_TABLE, Costanti.DB_AUDIT_OPERATIONS_TABLE_ID,
- Costanti.DB_AUDIT_OPERATIONS_TABLE_SEQUENCE, Costanti.DB_AUDIT_OPERATIONS_TABLE_FOR_ID_SEQUENCE);
- long idoperazione = InsertAndGeneratedKey.insertAndReturnGeneratedKey(this.connectionDB, tipo, customKeyGeneratorObject,
- new InsertAndGeneratedKeyObject("tipo_operazione", operation.getTipologia()!=null ? operation.getTipologia().getValue() : null, InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("tipo", operation.getTipoOggetto(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("object_id", operation.getObjectId(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("object_old_id", operation.getObjectOldId(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("utente", operation.getUtente(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("stato", operation.getStato()!=null ? operation.getStato().getValue() : null, InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("object_details", operation.getObjectDetails(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("object_class", operation.getObjectClass(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("error", operation.getError(), InsertAndGeneratedKeyJDBCType.STRING),
- new InsertAndGeneratedKeyObject("time_request", timeRequestT, InsertAndGeneratedKeyJDBCType.TIMESTAMP),
- new InsertAndGeneratedKeyObject("time_execute", timeExecuteT, InsertAndGeneratedKeyJDBCType.TIMESTAMP));
- if(idoperazione<=0){
- throw new Exception("ID autoincrementale non ottenuto");
- }
-
- // binaries
- for(int i=0; i<operation.sizeBinaryList(); i++){
- Binary binary = operation.getBinary(i);
- binary.setIdOperation(idoperazione);
- this.createBinary(binary);
- }
-
- // Aggiorno l'id
- operation.setId(idoperazione);
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- }
- }
-
- public void createBinary(Binary binary) throws AuditException {
- ResultSet rs = null;
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (binary == null)
- throw new AuditException("[DriverAudit::createBinary] Parametro non valido.");
- if (binary.getIdOperation() == null)
- throw new AuditException("[DriverAudit::createBinary] IDOperation non valido.");
- if (binary.getIdOperation() <= 0)
- throw new AuditException("[DriverAudit::createBinary] IDOperation("+binary.getIdOperation()+") non valido.");
-
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addInsertTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addInsertField("binary_id", "?");
- sqlQueryObject.addInsertField("checksum", "?");
- sqlQueryObject.addInsertField("id_audit_operation", "?");
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = this.connectionDB.prepareStatement(sqlQuery);
-
- stm.setString(1, binary.getBinaryId());
- stm.setLong(2, binary.getChecksum());
- stm.setLong(3, binary.getIdOperation());
- stm.executeUpdate();
- stm.close();
-
- // Recupero id
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addSelectField(Costanti.DB_AUDIT_BINARIES_TABLE, "id");
- sqlQueryObject.addWhereCondition("binary_id=?");
- sqlQueryObject.addWhereCondition("id_audit_operation=?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setString(1, binary.getBinaryId());
- stm.setLong(2, binary.getIdOperation());
- rs = stm.executeQuery();
- if(rs.next()){
- binary.setId(rs.getLong("id"));
- }else{
- throw new Exception("Identificativo dopo l'insert non recuperato");
- }
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- try {
- if(rs!=null) {
- rs.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stm!=null) {
- stm.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
-
-
- public void updateOperation(Operation operation,boolean updateBinaries) throws AuditException {
- ResultSet rs = null;
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (operation == null)
- throw new AuditException("[DriverAudit::updateOperation] Parametro non valido.");
- if (operation.getId()<=0)
- throw new AuditException("[DriverAudit::updateOperation] ID ("+operation.getId()+") non valido.");
-
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_OPERATIONS_TABLE);
- sqlQueryObject.addUpdateField("tipo_operazione", "?");
- sqlQueryObject.addUpdateField("tipo", "?");
- sqlQueryObject.addUpdateField("object_id", "?");
- sqlQueryObject.addUpdateField("object_old_id", "?");
- sqlQueryObject.addUpdateField("utente", "?");
- sqlQueryObject.addUpdateField("stato", "?");
- sqlQueryObject.addUpdateField("object_details", "?");
- sqlQueryObject.addUpdateField("object_class", "?");
- sqlQueryObject.addUpdateField("error", "?");
- sqlQueryObject.addUpdateField("time_request", "?");
- sqlQueryObject.addUpdateField("time_execute", "?");
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
-
- stm.setString(1, operation.getTipologia()!=null ? operation.getTipologia().getValue() : null);
- stm.setString(2, operation.getTipoOggetto());
- stm.setString(3, operation.getObjectId());
- stm.setString(4, operation.getObjectOldId());
- stm.setString(5, operation.getUtente());
- stm.setString(6, operation.getStato()!=null ? operation.getStato().getValue() : null);
- stm.setString(7, operation.getObjectDetails());
- stm.setString(8, operation.getObjectClass());
- stm.setString(9, operation.getError());
- stm.setTimestamp(10, new Timestamp(operation.getTimeRequest().getTime()));
- stm.setTimestamp(11, new Timestamp(operation.getTimeExecute().getTime()));
- stm.setLong(12,operation.getId());
- stm.executeUpdate();
-
- if(updateBinaries){
-
- // deleteAllBinaries
- this.deleteBinaries(operation.getId());
-
- // binaries
- for(int i=0; i<operation.sizeBinaryList(); i++){
- Binary binary = operation.getBinary(i);
- binary.setIdOperation(operation.getId());
- this.createBinary(binary);
- }
-
- }
-
- } catch (Exception qe) {
- throw new AuditException(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
- }
- }
- }
-
- public void updateBinary(Binary binary) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (binary == null)
- throw new AuditException("[DriverAudit::updateBinary] Parametro non valido.");
- if (binary.getIdOperation() == null)
- throw new AuditException("[DriverAudit::updateBinary] IDOperation non valido.");
- if (binary.getIdOperation() <= 0)
- throw new AuditException("[DriverAudit::updateBinary] IDOperation("+binary.getIdOperation()+") non valido.");
- if (binary.getId() == null)
- throw new AuditException("[DriverAudit::updateBinary] ID non valido.");
- if (binary.getId() <= 0)
- throw new AuditException("[DriverAudit::updateBinary] ID("+binary.getId()+") non valido.");
-
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addUpdateTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addUpdateField("binary_id", "?");
- sqlQueryObject.addUpdateField("checksum", "?");
- sqlQueryObject.addUpdateField("id_audit_operation", "?");
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = this.connectionDB.prepareStatement(sqlQuery);
-
- stm.setString(1, binary.getBinaryId());
- stm.setLong(2, binary.getChecksum());
- stm.setLong(3, binary.getIdOperation());
- stm.setLong(4, binary.getId());
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
-
-
-
-
- public void deleteOperation(Operation operation) throws AuditException {
- if (operation == null)
- throw new AuditException("[DriverAudit::deleteOperation] Parametro non valido.");
- if (operation.getId() <= 0)
- throw new AuditException("[DriverAudit::deleteOperation] ID("+operation.getId()+") non valido.");
- this.deleteOperation(operation.getId());
- }
-
- public void deleteOperation(long id) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (id <= 0)
- throw new AuditException("[DriverAudit::deleteBinary] ID("+id+") non valido.");
-
- try {
-
- this.deleteBinaries(id);
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_OPERATIONS_TABLE);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
-
-
- public void deleteBinaries(long idOperation) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (idOperation <= 0)
- throw new AuditException("[DriverAudit::deleteBinary] IDOperation("+idOperation+") non valido.");
-
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addWhereCondition("id_audit_operation=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, idOperation);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
-
- public void deleteBinary(Binary binary) throws AuditException {
- if (binary == null)
- throw new AuditException("[DriverAudit::deleteBinary] Parametro non valido.");
- if (binary.getId() == null)
- throw new AuditException("[DriverAudit::deleteBinary] ID non valido.");
- if (binary.getId() <= 0)
- throw new AuditException("[DriverAudit::deleteBinary] ID("+binary.getId()+") non valido.");
- this.deleteBinary(binary.getId());
- }
-
- public void deleteBinary(long id) throws AuditException {
- PreparedStatement stm = null;
- String sqlQuery = "";
- if (id <= 0)
- throw new AuditException("[DriverAudit::deleteBinary] ID("+id+") non valido.");
-
- try {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addDeleteTable(Costanti.DB_AUDIT_BINARIES_TABLE);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = this.connectionDB.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- stm.executeUpdate();
- stm.close();
-
- } catch (Exception qe) {
- throw new AuditException(qe.getMessage(),qe);
- } finally {
- //Chiudo statement and resultset
- try {
- if (stm != null)
- stm.close();
- } catch (Exception e) {
- //ignore
- }
- }
- }
- public List<Operation> auditOperationList(ISearch ricerca, int idLista,
- String datainizio, String datafine, String tipooperazione,
- String tipooggetto, String id, String oldid, String utente,
- String statooperazione, String contoggetto) throws AuditException {
- String nomeMetodo = "auditOperationList";
- 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<Operation> lista = new ArrayList<Operation>();
- try {
- // Conversione Data
- SimpleDateFormat simpleDateFormat = DateUtils.getDefaultDateFormatter("yyyy-MM-dd");
- Date dataInizioData = datainizio != null && !"".equals(datainizio) ?
- simpleDateFormat.parse(datainizio) : null;
- Date dataFineData = datafine != null && !"".equals(datafine) ?
- simpleDateFormat.parse(datafine) : null;
- // data fine inidica l intera giornata quinid aggiungo 1 giorno alla
- // data
- // inserita
- if (dataFineData != null) {
- Calendar cal = Calendar.getInstance();
- cal.setTime(dataFineData);
- cal.add(Calendar.DAY_OF_WEEK, 1);
- dataFineData = cal.getTime();
- }
- Calendar cal_start = null;
- if (dataInizioData != null) {
- cal_start = Calendar.getInstance();
- cal_start.setTime(dataInizioData);
- }
- Calendar cal_end = null;
- if (dataFineData != null) {
- cal_end = Calendar.getInstance();
- cal_end.setTime(dataFineData);
- }
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_OPERATIONS_TABLE);
- sqlQueryObject.addSelectCountField("*", "cont");
- if (datainizio != null && !datainizio.equals(""))
- sqlQueryObject.addWhereCondition("time_request >= ?");
- if (datafine != null && !datafine.equals(""))
- sqlQueryObject.addWhereCondition("time_request <= ?");
- if (tipooperazione != null && !tipooperazione.equals("-"))
- sqlQueryObject.addWhereCondition("tipo_operazione = ?");
- if (tipooggetto != null && !tipooggetto.equals("-"))
- sqlQueryObject.addWhereCondition("tipo = ?");
- if (utente != null && !utente.equals(""))
- sqlQueryObject.addWhereCondition("utente = ?");
- if (statooperazione != null && !statooperazione.equals("-"))
- sqlQueryObject.addWhereCondition("stato = ?");
- if (id != null && !id.equals("")) {
- //sqlQueryObject.addWhereCondition("object_id = ?");
- sqlQueryObject.addWhereLikeCondition("object_id",id, true, true);
- }
- if (oldid != null && !oldid.equals("")) {
- //sqlQueryObject.addWhereCondition("object_old_id = ?");
- sqlQueryObject.addWhereLikeCondition("object_old_id",id, true, true);
- }
- if (contoggetto != null && !contoggetto.equals(""))
- sqlQueryObject.addWhereLikeCondition("object_details",
- contoggetto, true, true);
- sqlQueryObject.setANDLogicOperator(true);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = this.connectionDB.prepareStatement(queryString);
- int param_index = 0;
- if (datainizio != null && !datainizio.equals(""))
- stmt.setTimestamp(++param_index, new Timestamp(cal_start.getTimeInMillis()));
- if (datafine != null && !datafine.equals(""))
- stmt.setTimestamp(++param_index, new Timestamp(cal_end.getTimeInMillis()));
- if (tipooperazione != null && !tipooperazione.equals("-"))
- stmt.setString(++param_index, tipooperazione);
- if (tipooggetto != null && !tipooggetto.equals("-"))
- stmt.setString(++param_index, tipooggetto);
- if (utente != null && !utente.equals(""))
- stmt.setString(++param_index, utente);
- if (statooperazione != null && !statooperazione.equals("-"))
- stmt.setString(++param_index, statooperazione);
- /*if (id != null && !id.equals(""))
- stmt.setString(++param_index, id);
- if (oldid != null && !oldid.equals(""))
- stmt.setString(++param_index, oldid);*/
- 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.tipoDB);
- sqlQueryObject.addFromTable(Costanti.DB_AUDIT_OPERATIONS_TABLE);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addSelectField("time_execute");
- if (datainizio != null && !datainizio.equals(""))
- sqlQueryObject.addWhereCondition("time_request >= ?");
- if (datafine != null && !datafine.equals(""))
- sqlQueryObject.addWhereCondition("time_request <= ?");
- if (tipooperazione != null && !tipooperazione.equals("-"))
- sqlQueryObject.addWhereCondition("tipo_operazione = ?");
- if (tipooggetto != null && !tipooggetto.equals("-"))
- sqlQueryObject.addWhereCondition("tipo = ?");
- if (utente != null && !utente.equals(""))
- sqlQueryObject.addWhereCondition("utente = ?");
- if (statooperazione != null && !statooperazione.equals("-"))
- sqlQueryObject.addWhereCondition("stato = ?");
- if (id != null && !id.equals("")) {
- //sqlQueryObject.addWhereCondition("object_id = ?");
- sqlQueryObject.addWhereLikeCondition("object_id",id, true, true);
- }
- if (oldid != null && !oldid.equals("")) {
- //sqlQueryObject.addWhereCondition("object_old_id = ?");
- sqlQueryObject.addWhereLikeCondition("object_old_id",id, true, true);
- }
- if (contoggetto != null && !contoggetto.equals(""))
- sqlQueryObject.addWhereLikeCondition("object_details",
- contoggetto, true, true);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQueryObject.addOrderBy("time_execute");
- sqlQueryObject.setSortType(false);
- sqlQueryObject.setLimit(limit);
- sqlQueryObject.setOffset(offset);
- queryString = sqlQueryObject.createSQLQuery();
- stmt = this.connectionDB.prepareStatement(queryString);
- param_index = 0;
- if (datainizio != null && !datainizio.equals(""))
- stmt.setTimestamp(++param_index, new Timestamp(cal_start.getTimeInMillis()));
- if (datafine != null && !datafine.equals(""))
- stmt.setTimestamp(++param_index, new Timestamp(cal_end.getTimeInMillis()));
- if (tipooperazione != null && !tipooperazione.equals("-"))
- stmt.setString(++param_index, tipooperazione);
- if (tipooggetto != null && !tipooggetto.equals("-"))
- stmt.setString(++param_index, tipooggetto);
- if (utente != null && !utente.equals(""))
- stmt.setString(++param_index, utente);
- if (statooperazione != null && !statooperazione.equals("-"))
- stmt.setString(++param_index, statooperazione);
- /*if (id != null && !id.equals(""))
- stmt.setString(++param_index, id);
- if (oldid != null && !oldid.equals(""))
- stmt.setString(++param_index, oldid);*/
- risultato = stmt.executeQuery();
- while (risultato.next()) {
- lista.add(this.getOperation(risultato.getLong("id")));
- }
- return lista;
- } catch (Exception qe) {
- throw new AuditException("[DriverAuditDBAppender::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
- } finally {
- try {
- if(risultato!=null) {
- risultato.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- try {
- if(stmt!=null) {
- stmt.close();
- }
- } catch (Exception e) {
- // ignore exception
- }
- }
- }
- }