DBProtocolPropertiesUtils.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.mapping;
- 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 java.util.ArrayList;
- import java.util.List;
- import org.apache.commons.lang.StringUtils;
- import org.openspcoop2.core.byok.BYOKWrappedValue;
- import org.openspcoop2.core.byok.IDriverBYOK;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.constants.ProprietariProtocolProperty;
- import org.openspcoop2.generic_project.exception.NotFoundException;
- import org.openspcoop2.utils.TipiDatabase;
- import org.openspcoop2.utils.UtilsException;
- import org.openspcoop2.utils.jdbc.IJDBCAdapter;
- import org.openspcoop2.utils.jdbc.JDBCAdapterException;
- import org.openspcoop2.utils.jdbc.JDBCAdapterFactory;
- import org.openspcoop2.utils.jdbc.JDBCParameterUtilities;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- import org.openspcoop2.utils.sql.SQLQueryObjectException;
- import org.slf4j.Logger;
- /**
- * Funzioni di utilita utilizzate dai driver
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class DBProtocolPropertiesUtils {
-
- private DBProtocolPropertiesUtils() {}
- private static void logDebug(Logger log, String msg) {
- if(log!=null) {
- log.debug(msg);
- }
- }
-
- private static List<String> protocolPropertiesConfidentials = new ArrayList<>();
- public static List<String> getProtocolPropertiesConfidentials() {
- return protocolPropertiesConfidentials;
- }
- public static void addConfidentialProtocolProperty(String nome){
- if(!protocolPropertiesConfidentials.contains(nome)) {
- protocolPropertiesConfidentials.add(nome);
- }
- }
- public static boolean isConfidentialProtocolProperty(String nome) {
- return protocolPropertiesConfidentials.contains(nome);
- }
-
- public static void crudRegistryProtocolProperty(Logger log, int type, List<org.openspcoop2.core.registry.ProtocolProperty> listPP, long idProprietario,
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty, Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- List<ProtocolProperty> list = null;
- if(listPP!=null) {
- list = new ArrayList<>();
- if(!listPP.isEmpty()) {
- for (org.openspcoop2.core.registry.ProtocolProperty pp : listPP) {
- list.add(new ProtocolProperty(pp));
- }
- }
- }
- crudProtocolProperty(log, type, list, idProprietario, tipologiaProprietarioProtocolProperty, connection, tipoDatabase, driverBYOK);
- }
- public static void crudConfigProtocolProperty(Logger log, int type, List<org.openspcoop2.core.config.ProtocolProperty> listPP, long idProprietario,
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty, Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- List<ProtocolProperty> list = null;
- if(listPP!=null) {
- list = new ArrayList<>();
- if(!listPP.isEmpty()) {
- for (org.openspcoop2.core.config.ProtocolProperty pp : listPP) {
- list.add(new ProtocolProperty(pp));
- }
- }
- }
- crudProtocolProperty(log, type, list, idProprietario, tipologiaProprietarioProtocolProperty, connection, tipoDatabase, driverBYOK);
- }
- private static void crudProtocolProperty(Logger log, int type, List<ProtocolProperty> listPP, long idProprietario,
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty, Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
-
- // NOTA: l'update dei documenti, essendo mega di documenti non puo' essere implementata come delete + create
-
- PreparedStatement stm = null;
- ResultSet rs=null;
- String sqlQuery;
- if((listPP == null) && (type!= CostantiDB.DELETE))
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] L'oggetto listPP non puo essere null");
- if(idProprietario <= 0 )
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] id proprietario non definito");
-
- IJDBCAdapter jdbcAdapter = null;
-
- try {
- jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(tipoDatabase);
-
- switch (type) {
- case CREATE:
- if(listPP!=null) {
- for(int i=0; i<listPP.size(); i++){
-
- ProtocolProperty protocolProperty = listPP.get(i);
- if(protocolProperty.getName()==null || "".equals(protocolProperty.getName()))
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Nome non definito per protocolProperty ["+i+"]");
-
- // Aggiorno proprietari
- protocolProperty.setIdProprietario(idProprietario);
- protocolProperty.setTipoProprietario(tipologiaProprietarioProtocolProperty.name());
-
- int contenutiDefiniti = 0;
-
- boolean stringValue = protocolProperty.getValue()!=null && !"".equals(protocolProperty.getValue());
- String plainContenutoString = null;
- String encContenutoString = null;
- if(stringValue){
- contenutiDefiniti++;
- plainContenutoString = protocolProperty.getValue();
- if(driverBYOK!=null && isConfidentialProtocolProperty(protocolProperty.getName())) {
- BYOKWrappedValue byokValue = driverBYOK.wrap(protocolProperty.getValue());
- if(byokValue!=null) {
- encContenutoString = byokValue.getWrappedValue();
- plainContenutoString = byokValue.getWrappedPlainValue();
- }
- }
- }
-
- boolean numberValue = protocolProperty.getNumberValue()!=null;
- Long contenutoNumber = null;
- if(numberValue){
- contenutiDefiniti++;
- contenutoNumber = protocolProperty.getNumberValue();
- }
-
- boolean booleanValue = protocolProperty.getBooleanValue()!=null;
- Boolean contenutoBoolean = null;
- if(booleanValue){
- contenutiDefiniti++;
- contenutoBoolean = protocolProperty.getBooleanValue();
- }
-
- boolean binaryValue = protocolProperty.getByteFile()!=null && protocolProperty.getByteFile().length>0;
- byte[] contenutoBinario = null;
- String contenutoBinarioFileName = null;
- if(binaryValue){
- contenutiDefiniti++;
- contenutoBinario = protocolProperty.getByteFile();
- if(contenutoBinario.length<3){
- String test = new String(contenutoBinario);
- if("".equals(test.trim().replace("\n", ""))){
- // eliminare \n\n
- contenutoBinario = null;
- binaryValue = false;
- contenutiDefiniti--;
- }
- }
- if(binaryValue){
- contenutoBinarioFileName = protocolProperty.getFile();
-
- if(driverBYOK!=null && isConfidentialProtocolProperty(protocolProperty.getName())) {
- BYOKWrappedValue byokValue = driverBYOK.wrap(contenutoBinario);
- if(byokValue!=null) {
- contenutoBinario = byokValue.getWrappedValue().getBytes();
- }
- }
- }
- }
-
- /**if(!stringValue && !numberValue && !binaryValue && !booleanValue){
- throw new DriverRegistroServiziException("[DBProtocolProperties::CRUDProtocolProperty] Contenuto non definito per protocolProperty ["+protocolProperty.getName()+"]");
- }*/
- // Per fare i filtri con is null e' necessario registrarlo!
- if(contenutiDefiniti>1){
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Contenuto definito con più tipologie per protocolProperty ["+protocolProperty.getName()+
- "] (string:"+stringValue+" number:"+numberValue+" binary:"+binaryValue+")");
- }
-
-
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME, "?");
- if(stringValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_ENCODING_STRING, "?");
- }
- if(numberValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER, "?");
- }
- if(booleanValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN, "?");
- }
- if(binaryValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BINARY, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_FILENAME, "?");
- }
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connection.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, tipologiaProprietarioProtocolProperty.name());
- stm.setLong(index++, idProprietario);
- stm.setString(index++, protocolProperty.getName());
- String debug = null;
- if(stringValue){
- stm.setString(index++, plainContenutoString);
- debug = plainContenutoString;
- stm.setString(index++, encContenutoString);
- }
- if(numberValue){
- stm.setLong(index++, contenutoNumber);
- debug = contenutoNumber+"";
- }
- if(booleanValue){
- if(contenutoBoolean!=null && contenutoBoolean.booleanValue()){
- stm.setInt(index++,CostantiDB.TRUE);
- debug = CostantiDB.TRUE+"";
- }
- else{
- stm.setInt(index++,CostantiDB.FALSE);
- debug = CostantiDB.FALSE+"";
- }
- }
- if(binaryValue){
- jdbcAdapter.setBinaryData(stm,index++,contenutoBinario);
- debug = "BinaryData";
- stm.setString(index++, contenutoBinarioFileName);
- debug = debug + "," + contenutoBinarioFileName;
- }
-
- logDebug(log,"CRUDProtocolProperty CREATE : \n" + DBUtils.
- formatSQLString(sqlQuery, tipologiaProprietarioProtocolProperty.name(), idProprietario, protocolProperty.getName(), debug));
-
- int n = stm.executeUpdate();
- stm.close();
- logDebug(log,"Inserted " + n + " row(s)");
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME+" = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connection.prepareStatement(sqlQuery);
- index = 1;
- stm.setString(index++, tipologiaProprietarioProtocolProperty.name());
- stm.setLong(index++, idProprietario);
- stm.setString(index++, protocolProperty.getName());
-
- logDebug(log,"Recupero id inserito : \n" + DBUtils.
- formatSQLString(sqlQuery, tipologiaProprietarioProtocolProperty.name(), idProprietario, protocolProperty.getName()));
-
- rs = stm.executeQuery();
-
- if (rs.next()) {
- listPP.get(i).setId(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID));
- } else {
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Errore avvenuto durante il recupero dell'id dopo una create");
- }
-
- rs.close();
- stm.close();
-
- }
- }
- break;
- case UPDATE:
-
- // Prelevo vecchia lista
- List<ProtocolProperty> oldLista = getListaProtocolPropertySafe(idProprietario,tipologiaProprietarioProtocolProperty, connection, tipoDatabase,
- null); //driverBYOK); // serve solo a verificare se devo aggiornare o meno. Non serve quindi decodificare
-
- // Gestico la nuova immagine
- if(listPP!=null) {
- for(int i=0; i<listPP.size(); i++){
-
- ProtocolProperty protocolProperty = listPP.get(i);
- if(protocolProperty.getName()==null || "".equals(protocolProperty.getName()))
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Nome non definito per protocolProperty ["+i+"]");
-
- // Aggiorno proprietari
- protocolProperty.setIdProprietario(idProprietario);
- protocolProperty.setTipoProprietario(tipologiaProprietarioProtocolProperty.name());
-
- int contenutiDefiniti = 0;
-
- boolean stringValue = protocolProperty.getValue()!=null && !"".equals(protocolProperty.getValue());
- String plainContenutoString = null;
- String encContenutoString = null;
- if(stringValue){
- contenutiDefiniti++;
- plainContenutoString = protocolProperty.getValue();
- if(driverBYOK!=null && isConfidentialProtocolProperty(protocolProperty.getName())) {
- BYOKWrappedValue byokValue = driverBYOK.wrap(protocolProperty.getValue());
- if(byokValue!=null) {
- encContenutoString = byokValue.getWrappedValue();
- plainContenutoString = byokValue.getWrappedPlainValue();
- }
- }
- }
-
- boolean numberValue = protocolProperty.getNumberValue()!=null;
- Long contenutoNumber = null;
- if(numberValue){
- contenutiDefiniti++;
- contenutoNumber = protocolProperty.getNumberValue();
- }
-
- boolean booleanValue = protocolProperty.getBooleanValue()!=null;
- Boolean contenutoBoolean = null;
- if(booleanValue){
- contenutiDefiniti++;
- contenutoBoolean = protocolProperty.getBooleanValue();
- }
-
- boolean binaryValue = protocolProperty.getByteFile()!=null && protocolProperty.getByteFile().length>0;
- byte[] contenutoBinario = null;
- String contenutoBinarioFileName = null;
- if(binaryValue){
- contenutiDefiniti++;
- contenutoBinario = protocolProperty.getByteFile();
- if(contenutoBinario.length<3){
- String test = new String(contenutoBinario);
- if("".equals(test.trim().replace("\n", ""))){
- // eliminare \n\n
- contenutoBinario = null;
- binaryValue = false;
- contenutiDefiniti--;
- }
- }
- if(binaryValue){
- contenutoBinarioFileName = protocolProperty.getFile();
-
- if(driverBYOK!=null && isConfidentialProtocolProperty(protocolProperty.getName())) {
- BYOKWrappedValue byokValue = driverBYOK.wrap(contenutoBinario);
- if(byokValue!=null) {
- contenutoBinario = byokValue.getWrappedValue().getBytes();
- }
- }
- }
- }
-
- /**if(!stringValue && !numberValue && !binaryValue && !booleanValue){
- throw new DriverRegistroServiziException("[DBProtocolProperties::CRUDProtocolProperty] Contenuto non definito per protocolProperty ["+protocolProperty.getName()+"]");
- }*/
- // Per fare i filtri con is null e' necessario registrarlo!
- if(contenutiDefiniti>1){
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Contenuto definito con più tipologie per protocolProperty ["+protocolProperty.getName()+
- "] (string:"+stringValue+" number:"+numberValue+" binary:"+binaryValue+")");
- }
-
-
- /**if(doc.getId()<=0){*/
- // Rileggo sempre id, puo' essere diverso (es. importato tramite sincronizzazioni)
- protocolProperty.setId(DBUtils.getIdProtocolProperty(protocolProperty.getTipoProprietario(), idProprietario,protocolProperty.getName(),
- connection,
- tipoDatabase));
-
- boolean ppGiaPresente = false;
- boolean ppDaAggiornare = false;
- if(protocolProperty.getId()>0){
- for(int j=0; j<oldLista.size(); j++){
- ProtocolProperty old = oldLista.get(j);
-
- /**System.out.println("OLD["+old.getId().longValue()+"]==ATTUALE["+doc.getId().longValue()+"] ("+((doc.getId().longValue() == old.getId().longValue()))+")");*/
- if(protocolProperty.getId().longValue() == old.getId().longValue()){
- ppGiaPresente = true; // non devo fare una insert, ma una update...
-
- // rimuovo la vecchia immagine del documento dalla lista dei doc vecchi
- oldLista.remove(j);
-
- ppDaAggiornare = true;
- break;
- }
- }
- }
-
- if(ppGiaPresente){
- if(ppDaAggiornare){
- // update
- long idPP = protocolProperty.getId();
- if(idPP<=0){
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] ID non definito per documento da aggiorare ["+protocolProperty.getName()+"]");
- }
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addUpdateTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING, "?");
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_ENCODING_STRING, "?");
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER, "?");
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN, "?");
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BINARY, "?");
- sqlQueryObject.addUpdateField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_FILENAME, "?");
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLUpdate();
- stm = connection.prepareStatement(sqlQuery);
- int index = 1;
-
- stm.setString(index++, plainContenutoString);
- stm.setString(index++, encContenutoString);
-
- if(numberValue){
- stm.setLong(index++, contenutoNumber);
- }
- else{
- stm.setNull(index++, java.sql.Types.BIGINT);
- }
-
- if(booleanValue){
- if(contenutoBoolean!=null && contenutoBoolean.booleanValue()){
- stm.setInt(index++,CostantiDB.TRUE);
- }
- else{
- stm.setInt(index++,CostantiDB.FALSE);
- }
- }
- else{
- stm.setNull(index++, java.sql.Types.INTEGER);
- }
-
- jdbcAdapter.setBinaryData(stm,index++,contenutoBinario);
- stm.setString(index++, contenutoBinarioFileName);
-
- stm.setLong(index++, idPP);
- stm.executeUpdate();
- stm.close();
- }
- }else{
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addInsertTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME, "?");
- if(stringValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_ENCODING_STRING, "?");
- }
- if(numberValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER, "?");
- }
- if(booleanValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN, "?");
- }
- if(binaryValue){
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BINARY, "?");
- sqlQueryObject.addInsertField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_FILENAME, "?");
- }
- sqlQuery = sqlQueryObject.createSQLInsert();
- stm = connection.prepareStatement(sqlQuery);
- int index = 1;
- stm.setString(index++, tipologiaProprietarioProtocolProperty.name());
- stm.setLong(index++, idProprietario);
- stm.setString(index++, protocolProperty.getName());
- String debug = null;
- if(stringValue){
- stm.setString(index++, plainContenutoString);
- debug = plainContenutoString;
- stm.setString(index++, encContenutoString);
- }
- if(numberValue){
- stm.setLong(index++, contenutoNumber);
- debug = contenutoNumber+"";
- }
- if(booleanValue){
- if(contenutoBoolean!=null && contenutoBoolean.booleanValue()){
- stm.setInt(index++,CostantiDB.TRUE);
- debug = CostantiDB.TRUE+"";
- }
- else{
- stm.setInt(index++,CostantiDB.FALSE);
- debug = CostantiDB.FALSE+"";
- }
- }
- if(binaryValue){
- jdbcAdapter.setBinaryData(stm,index++,contenutoBinario);
- debug = "BinaryData";
- stm.setString(index++, contenutoBinarioFileName);
- debug = debug + "," + contenutoBinarioFileName;
- }
-
- logDebug(log,"CRUDProtocolProperty CREATE : \n" + DBUtils.
- formatSQLString(sqlQuery, tipologiaProprietarioProtocolProperty.name(), idProprietario, protocolProperty.getName(), debug));
-
- int n = stm.executeUpdate();
- stm.close();
- logDebug(log,"Inserted " + n + " row(s)");
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME+" = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connection.prepareStatement(sqlQuery);
- index = 1;
- stm.setString(index++, tipologiaProprietarioProtocolProperty.name());
- stm.setLong(index++, idProprietario);
- stm.setString(index++, protocolProperty.getName());
-
- logDebug(log,"Recupero id inserito : \n" + DBUtils.
- formatSQLString(sqlQuery, tipologiaProprietarioProtocolProperty.name(), idProprietario, protocolProperty.getName()));
-
- rs = stm.executeQuery();
-
- if (rs.next()) {
- listPP.get(i).setId(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID));
- } else {
- throw new CoreException("[DBProtocolProperties::CRUDProtocolProperty] Errore avvenuto durante il recupero dell'id dopo una create");
- }
-
- rs.close();
- stm.close();
-
- }
-
- }
- }
-
- if(!oldLista.isEmpty()){
- // Qualche documento e' stato cancellato.
- // Non e' piu' presente.
- for(int j=0; j<oldLista.size(); j++){
- ProtocolProperty old = oldLista.get(j);
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connection.prepareStatement(sqlQuery);
- stm.setLong(1, old.getId());
- stm.executeUpdate();
- stm.close();
- }
- }
-
- break;
- case DELETE:
- // delete
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addDeleteTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+"=?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = connection.prepareStatement(sqlQuery);
- stm.setString(1, tipologiaProprietarioProtocolProperty.name());
- stm.setLong(2, idProprietario);
- stm.executeUpdate();
- stm.close();
- logDebug(log,"CRUDDocumento DELETE : \n" + DBUtils.formatSQLString(sqlQuery, tipologiaProprietarioProtocolProperty.name(), idProprietario));
- break;
-
- default:
- // nop
- }
- } catch (SQLException se) {
- throw new CoreException("[DBProtocolProperties::CRUDDocumento] SQLException : " + se.getMessage(),se);
- }catch (Exception se) {
- throw new CoreException("[DBProtocolProperties::CRUDDocumento] Exception : " + se.getMessage(),se);
- } finally {
- try {
- if(rs!=null)
- rs.close();
- } catch (Exception e) {
- // ignore
- }
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore
- }
- }
- }
-
- public static List<org.openspcoop2.core.registry.ProtocolProperty> getListaProtocolPropertyRegistry(long idProprietario, ProprietariProtocolProperty tipologiaProprietario,
- Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
- List<ProtocolProperty> l = getListaProtocolProperty(idProprietario, tipologiaProprietario, connection, tipoDatabase, driverBYOK);
- List<org.openspcoop2.core.registry.ProtocolProperty> lPP = null;
- if(l==null) {
- return lPP;
- }
- lPP = new ArrayList<>();
- if(!l.isEmpty()) {
- for (ProtocolProperty protocolProperty : l) {
- lPP.add(protocolProperty.toRegistry());
- }
- }
- return lPP;
- }
- public static List<org.openspcoop2.core.config.ProtocolProperty> getListaProtocolPropertyConfig(long idProprietario, ProprietariProtocolProperty tipologiaProprietario,
- Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
- List<ProtocolProperty> l = getListaProtocolProperty(idProprietario, tipologiaProprietario, connection, tipoDatabase, driverBYOK);
- List<org.openspcoop2.core.config.ProtocolProperty> lPP = null;
- if(l==null) {
- return lPP;
- }
- lPP = new ArrayList<>();
- if(!l.isEmpty()) {
- for (ProtocolProperty protocolProperty : l) {
- lPP.add(protocolProperty.toConfig());
- }
- }
- return lPP;
- }
-
- public static List<ProtocolProperty> getListaProtocolPropertySafe(long idProprietario, ProprietariProtocolProperty tipologiaProprietario,
- Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- List<ProtocolProperty> l = null;
- try{
- l = getListaProtocolProperty(idProprietario,tipologiaProprietario, connection, tipoDatabase, driverBYOK);
- }catch(NotFoundException dNotFound){
- l = new ArrayList<>();
- }
- return l;
- }
- public static List<ProtocolProperty> getListaProtocolProperty(long idProprietario, ProprietariProtocolProperty tipologiaProprietario,
- Connection connection,
- String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
-
- PreparedStatement stm = null;
- ResultSet rs=null;
- String sqlQuery;
- if(idProprietario <= 0 )
- throw new CoreException("[DBProtocolProperties::getListaProtocolProperty] id proprietario non definito");
-
- try {
-
- List<ProtocolProperty> listPP = new ArrayList<>();
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+" = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connection.prepareStatement(sqlQuery);
- stm.setString(1, tipologiaProprietario.name());
- stm.setLong(2, idProprietario);
- rs = stm.executeQuery();
-
- while(rs.next()){
- ProtocolProperty pp = getProtocolProperty(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID), connection,tipoDatabase, driverBYOK);
- listPP.add(pp);
- }
-
- if(listPP.isEmpty())
- throw new NotFoundException("ProtocolProperty con tipologiaProprietario["+tipologiaProprietario.name()+
- "] e idProprietario["+idProprietario+"] non trovati");
-
- return listPP;
- } catch (SQLException se) {
- throw new CoreException("[DBProtocolProperties::getListaProtocolProperty] SQLException : " + se.getMessage(),se);
- }catch (NotFoundException dnf) {
- throw dnf;
- }catch (Exception se) {
- throw new CoreException("[DBProtocolProperties::getListaProtocolProperty] Exception : " + se.getMessage(),se);
- } finally {
- try {
- if(rs!=null)
- rs.close();
- } catch (Exception e) {
- // ignore
- }
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore
- }
- }
- }
-
- public static org.openspcoop2.core.registry.ProtocolProperty getProtocolPropertyRegistry(long id, Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
- ProtocolProperty pp = getProtocolProperty(id, connection, tipoDatabase, driverBYOK);
- if(pp==null) {
- return null;
- }
- return pp.toRegistry();
- }
- public static org.openspcoop2.core.config.ProtocolProperty getProtocolPropertyConfig(long id, Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
- ProtocolProperty pp = getProtocolProperty(id, connection, tipoDatabase, driverBYOK);
- if(pp==null) {
- return null;
- }
- return pp.toConfig();
- }
- public static ProtocolProperty getProtocolProperty(long id, Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException,NotFoundException {
-
- PreparedStatement stm = null;
- ResultSet rs=null;
- String sqlQuery;
- if(id <= 0 )
- throw new CoreException("[DBProtocolProperties::getProtocolProperty] id non definito");
-
- try {
-
- IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(tipoDatabase);
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_ENCODING_STRING);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BINARY);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_FILENAME);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID+" = ?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connection.prepareStatement(sqlQuery);
- stm.setLong(1, id);
- rs = stm.executeQuery();
-
- ProtocolProperty pp = null;
- if(rs.next()){
- pp = new ProtocolProperty();
- pp.setTipoProprietario(rs.getString(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO));
- pp.setIdProprietario(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO));
-
- String ppName = rs.getString(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME);
- pp.setName(ppName);
-
- String plainStringValue = rs.getString(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING);
- String encStringValue = rs.getString(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_ENCODING_STRING);
- if(encStringValue!=null && StringUtils.isNotEmpty(encStringValue)) {
- if(driverBYOK!=null) {
- pp.setValue(driverBYOK.unwrapAsString(encStringValue));
- }
- else {
- pp.setValue(encStringValue);
- }
- }
- else {
- pp.setValue(plainStringValue);
- }
-
- pp.setNumberValue(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER));
- if(rs.wasNull()){
- pp.setNumberValue(null);
- }
- int value = rs.getInt(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN);
- pp.setBooleanValue(value == CostantiDB.TRUE);
- if(rs.wasNull()){
- pp.setBooleanValue(null);
- }
-
- byte[]binaryValue = jdbcAdapter.getBinaryData(rs,CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BINARY);
- if(binaryValue!=null && binaryValue.length>0 && driverBYOK!=null && isConfidentialProtocolProperty(ppName)) {
- binaryValue = driverBYOK.unwrap(binaryValue);
- }
- pp.setByteFile(binaryValue);
-
- pp.setFile(rs.getString(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_FILENAME));
- pp.setId(rs.getLong(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID));
- }
-
- if(pp==null)
- throw new NotFoundException("ProtocolProperty con id["+id+"] non trovato");
-
- return pp;
- } catch (SQLException se) {
- throw new CoreException("[DBProtocolProperties::getProtocolProperty] SQLException : " + se.getMessage(),se);
- }catch (NotFoundException dnf) {
- throw dnf;
- }catch (Exception se) {
- throw new CoreException("[DBProtocolProperties::getProtocolProperty] Exception : " + se.getMessage(),se);
- } finally {
- try {
- if(rs!=null)
- rs.close();
- } catch (Exception e) {
- // ignore
- }
- try {
- if(stm!=null)
- stm.close();
- } catch (Exception e) {
- // ignore
- }
- }
- }
-
-
-
-
-
- public static boolean existsProtocolProperty(ProprietariProtocolProperty proprietarioProtocolProperty, long idProprietario, String nome,
- Connection connection, String tipoDatabase) throws CoreException {
- boolean exist = false;
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDatabase);
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
- sqlQueryObject.addSelectField(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+" = ?");
- sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME+" = ?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLQuery();
- stm = connection.prepareStatement(sqlQuery);
- stm.setString(1, proprietarioProtocolProperty.name());
- stm.setLong(2, idProprietario);
- stm.setString(3, nome);
- rs = stm.executeQuery();
- if (rs.next())
- exist = true;
- rs.close();
- stm.close();
- } catch (Exception e) {
- exist = false;
- throw new CoreException(e.getMessage(),e);
- } 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
- }
- }
- return exist;
- }
- public static org.openspcoop2.core.registry.ProtocolProperty getProtocolPropertyRegistry(ProprietariProtocolProperty proprietarioProtocolProperty, long idProprietario, String nome,
- Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- ProtocolProperty pp = getProtocolProperty(proprietarioProtocolProperty, idProprietario, nome, connection, tipoDatabase, driverBYOK);
- if(pp==null) {
- return null;
- }
- return pp.toRegistry();
- }
- public static org.openspcoop2.core.config.ProtocolProperty getProtocolPropertyConfig(ProprietariProtocolProperty proprietarioProtocolProperty, long idProprietario, String nome,
- Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- ProtocolProperty pp = getProtocolProperty(proprietarioProtocolProperty, idProprietario, nome, connection, tipoDatabase, driverBYOK);
- if(pp==null) {
- return null;
- }
- return pp.toConfig();
- }
- public static ProtocolProperty getProtocolProperty(ProprietariProtocolProperty proprietarioProtocolProperty, long idProprietario, String nome,
- Connection connection, String tipoDatabase, IDriverBYOK driverBYOK) throws CoreException {
- String nomeMetodo = "getProtocolProperty";
- try {
- long idPP = DBUtils.getIdProtocolProperty(proprietarioProtocolProperty.name(),idProprietario,nome,connection,tipoDatabase);
- return getProtocolProperty(idPP, connection, tipoDatabase, driverBYOK);
- } catch (Exception se) {
- throw new CoreException("[DriverRegistroServiziException::" + nomeMetodo + "] Exception: " + se.getMessage());
- }
- }
-
-
- private static final String AND_SEPARATOR = " AND ";
- private static final String IS_NULL_CONDITION = "is null";
- public static void setProtocolPropertiesForSearch(ISQLQueryObject sqlQueryObject, List<FiltroRicercaProtocolProperty> list, String tabella) throws SQLQueryObjectException{
- if(list!=null && !list.isEmpty()){
- String [] conditions = new String[list.size()];
- for (int i = 0; i < conditions.length; i++) {
- String aliasTabella = "pp"+i+tabella;
- sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES, aliasTabella);
- sqlQueryObject.setANDLogicOperator(true);
- sqlQueryObject.addWhereCondition(aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+"=?");
- sqlQueryObject.addWhereCondition(aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+"="+tabella+".id");
- FiltroRicercaProtocolProperty f = list.get(i);
-
- if(f.getName()!=null){
- if(conditions[i]!=null){
- conditions[i] = conditions[i] + AND_SEPARATOR;
- }
- else {
- conditions[i] = "";
- }
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME+"=?";
- }
-
- if(f.getValueAsString()!=null){
- if(conditions[i]!=null){
- conditions[i] = conditions[i] + AND_SEPARATOR;
- }
- else {
- conditions[i] = "";
- }
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING+"=?";
- }
- else if(f.getValueAsLong()!=null){
- if(conditions[i]!=null){
- conditions[i] = conditions[i] + AND_SEPARATOR;
- }
- else {
- conditions[i] = "";
- }
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER+"=?";
- }
- else if(f.getValueAsBoolean()!=null){
- if(conditions[i]!=null){
- conditions[i] = conditions[i] + AND_SEPARATOR;
- }
- else {
- conditions[i] = "";
- }
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN+"=?";
- }
- else {
- if(conditions[i]!=null){
- conditions[i] = conditions[i] + AND_SEPARATOR;
- }
- else {
- conditions[i] = "";
- }
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_STRING+" "+IS_NULL_CONDITION;
- conditions[i] = conditions[i] + AND_SEPARATOR;
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_NUMBER+" "+IS_NULL_CONDITION;
- conditions[i] = conditions[i] + AND_SEPARATOR;
- conditions[i] = conditions[i] + " " + aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_VALUE_BOOLEAN+" "+IS_NULL_CONDITION;
- }
-
- // casoSpecialeValoreNull
- ISQLQueryObject sqlQueryObjectPropertyNotExists = null;
- // in un caso dove il valore non e' definito nel database ci possono essere due casistiche:
- // 1) Passando via govwayConsole, la proprieta' esiste con il nome ('name') ed e' valorizzata null in tutte le colonne (value_string,value_number,value_boolean)
- // 2) Passando via govwayLoader, in una configurazione xml, non si definisce la proprietà senza il valore, quindi la riga con il nome non esistera proprio nel db.
- if(f.getValueAsString()==null && f.getValueAsLong()==null && f.getValueAsBoolean()==null){
-
- ISQLQueryObject sqlQueryObjectPropertyNotExistsInternal = sqlQueryObject.newSQLQueryObject();
- String aliasTabellaNotExists = "not_exists_"+aliasTabella;
- sqlQueryObjectPropertyNotExistsInternal.addFromTable(CostantiDB.PROTOCOL_PROPERTIES, aliasTabellaNotExists);
- sqlQueryObjectPropertyNotExistsInternal.addSelectField(aliasTabellaNotExists, CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID);
- sqlQueryObjectPropertyNotExistsInternal.addWhereCondition(aliasTabellaNotExists+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO+"="+aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_ID_PROPRIETARIO);
- sqlQueryObjectPropertyNotExistsInternal.addWhereCondition(aliasTabellaNotExists+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO+"="+aliasTabella+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_TIPO_PROPRIETARIO);
- sqlQueryObjectPropertyNotExistsInternal.addWhereCondition(aliasTabellaNotExists+"."+CostantiDB.PROTOCOL_PROPERTIES_COLUMN_NAME+"=?");
- sqlQueryObjectPropertyNotExistsInternal.setANDLogicOperator(true);
-
- sqlQueryObjectPropertyNotExists = sqlQueryObject.newSQLQueryObject();
- sqlQueryObjectPropertyNotExists.addWhereExistsCondition(true, sqlQueryObjectPropertyNotExistsInternal);
- conditions[i] = "( " + conditions[i] + " ) OR ( " + sqlQueryObjectPropertyNotExists.createSQLConditions() + " )";
- }
- }
- sqlQueryObject.addWhereCondition(true, conditions);
- }
- }
-
- public static void setProtocolPropertiesForSearch(PreparedStatement stmt, int index,
- List<FiltroRicercaProtocolProperty> list, ProprietariProtocolProperty proprietario,
- String tipoDatabase, Logger log) throws SQLQueryObjectException, SQLException, JDBCAdapterException, UtilsException{
-
- JDBCParameterUtilities jdbcParameterUtilities = new JDBCParameterUtilities(TipiDatabase.toEnumConstant(tipoDatabase));
-
- if(list!=null && !list.isEmpty()){
- for (int i = 0; i < list.size(); i++) {
-
- logDebug(log,"FiltroRicercaProtocolProperty size:"+list.size()+" ["+i+"] Proprietario stmt.setString("+proprietario.name()+")");
- stmt.setString(index++, proprietario.name());
-
- }
- for (int i = 0; i < list.size(); i++) {
-
- String prefix = "FiltroRicercaProtocolProperty["+i+"] ";
-
- FiltroRicercaProtocolProperty f = list.get(i);
- if(f.getName()!=null){
- logDebug(log,prefix+"Name stmt.setString("+f.getName()+")");
- stmt.setString(index++, f.getName());
- }
-
- if(f.getValueAsString()!=null){
- logDebug(log,prefix+"ValueAsString stmt.setString("+f.getValueAsString()+")");
- jdbcParameterUtilities.setParameter(stmt, index++, f.getValueAsString(), String.class);
- }
- else if(f.getValueAsLong()!=null){
- logDebug(log,prefix+"ValueAsLong stmt.setLong("+f.getValueAsLong()+")");
- jdbcParameterUtilities.setParameter(stmt, index++, f.getValueAsLong(), Long.class);
- }
- else if(f.getValueAsBoolean()!=null){
- int value = f.getValueAsBoolean()!=null && f.getValueAsBoolean().booleanValue() ? CostantiDB.TRUE : CostantiDB.FALSE;
- logDebug(log,prefix+"ValueAsBoolean stmt.setInt("+value+")");
- jdbcParameterUtilities.setParameter(stmt, index++, value, Integer.class);
- }
-
- // casoSpecialeValoreNull
- // in un caso dove il valore non e' definito nel database ci possono essere due casistiche:
- // 1) Passando via govwayConsole, la proprieta' esiste con il nome ('name') ed e' valorizzata null in tutte le colonne (value_string,value_number,value_boolean)
- // 2) Passando via govwayLoader, in una configurazione xml, non si definisce la proprietà senza il valore, quindi la riga con il nome non esistera proprio nel db.
- if(f.getValueAsString()==null && f.getValueAsLong()==null && f.getValueAsBoolean()==null){
- logDebug(log,prefix+"Name stmt.setString("+f.getName()+")");
- stmt.setString(index++, f.getName());
- }
- }
- }
- }
- }