JDBCDumpMessaggioServiceImpl.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.core.transazioni.dao.jdbc;

  21. import java.sql.Connection;

  22. import org.openspcoop2.utils.sql.ISQLQueryObject;

  23. import org.slf4j.Logger;

  24. import org.openspcoop2.generic_project.dao.jdbc.IJDBCServiceCRUDWithId;
  25. import org.openspcoop2.core.transazioni.IdDumpMessaggio;
  26. import org.openspcoop2.generic_project.beans.NonNegativeNumber;
  27. import org.openspcoop2.generic_project.beans.UpdateField;
  28. import org.openspcoop2.generic_project.beans.UpdateModel;

  29. import org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities;
  30. import org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject;
  31. import org.openspcoop2.generic_project.exception.NotFoundException;
  32. import org.openspcoop2.generic_project.exception.NotImplementedException;
  33. import org.openspcoop2.generic_project.exception.ServiceException;
  34. import org.openspcoop2.generic_project.expression.IExpression;
  35. import org.openspcoop2.generic_project.dao.jdbc.JDBCExpression;
  36. import org.openspcoop2.generic_project.dao.jdbc.JDBCPaginatedExpression;

  37. import org.openspcoop2.generic_project.dao.jdbc.JDBCServiceManagerProperties;

  38. import org.openspcoop2.core.transazioni.DumpHeaderTrasporto;
  39. import org.openspcoop2.core.transazioni.DumpHeaderAllegato;
  40. import org.openspcoop2.core.transazioni.DumpContenuto;
  41. import org.openspcoop2.core.transazioni.DumpAllegato;
  42. import org.openspcoop2.core.transazioni.DumpMessaggio;
  43. import org.openspcoop2.core.transazioni.DumpMultipartHeader;

  44. /**    
  45.  * JDBCDumpMessaggioServiceImpl
  46.  *
  47.  * @author Poli Andrea (poli@link.it)
  48.  * @author $Author$
  49.  * @version $Rev$, $Date$
  50.  */
  51. public class JDBCDumpMessaggioServiceImpl extends JDBCDumpMessaggioServiceSearchImpl
  52.     implements IJDBCServiceCRUDWithId<DumpMessaggio, IdDumpMessaggio, JDBCServiceManager> {

  53.     @Override
  54.     public void create(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, DumpMessaggio dumpMessaggio, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {

  55.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  56.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  57.        
  58.         ISQLQueryObject sqlQueryObjectInsert = sqlQueryObject.newSQLQueryObject();
  59.                


  60.         // Object dumpMessaggio
  61.         sqlQueryObjectInsert.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  62.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,false),"?");
  63.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().PROTOCOLLO,false),"?");
  64.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,false),"?");
  65.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DATA_CONSEGNA_EROGATORE,false),"?");
  66.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO,false),"?");
  67.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().FORMATO_MESSAGGIO,false),"?");
  68.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_TYPE,false),"?");
  69.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_LENGTH,false),"?");
  70.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_TYPE,false),"?");
  71.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_ID,false),"?");
  72.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_LOCATION,false),"?");
  73.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().BODY,false),"?");
  74.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DUMP_TIMESTAMP,false),"?");
  75.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_HEADER,false),"?");
  76.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_FILENAME,false),"?");
  77.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONTENT,false),"?");
  78.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONFIG_ID,false),"?");
  79.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_TIMESTAMP,false),"?");
  80.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESSED,false),"?");
  81.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER_EXT,false),"?");
  82.         sqlQueryObjectInsert.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_EXT,false),"?");

  83.         // Insert dumpMessaggio
  84.         org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model());
  85.         long id = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert, keyGenerator, jdbcProperties.isShowSql(),
  86.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getIdTransazione(),DumpMessaggio.model().ID_TRANSAZIONE.getFieldType()),
  87.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getProtocollo(),DumpMessaggio.model().PROTOCOLLO.getFieldType()),
  88.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getServizioApplicativoErogatore(),DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE.getFieldType()),
  89.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getDataConsegnaErogatore(),DumpMessaggio.model().DATA_CONSEGNA_EROGATORE.getFieldType()),
  90.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getTipoMessaggio(),DumpMessaggio.model().TIPO_MESSAGGIO.getFieldType()),
  91.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getFormatoMessaggio(),DumpMessaggio.model().FORMATO_MESSAGGIO.getFieldType()),
  92.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContentType(),DumpMessaggio.model().CONTENT_TYPE.getFieldType()),
  93.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContentLength(),DumpMessaggio.model().CONTENT_LENGTH.getFieldType()),
  94.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartContentType(),DumpMessaggio.model().MULTIPART_CONTENT_TYPE.getFieldType()),
  95.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartContentId(),DumpMessaggio.model().MULTIPART_CONTENT_ID.getFieldType()),
  96.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartContentLocation(),DumpMessaggio.model().MULTIPART_CONTENT_LOCATION.getFieldType()),
  97.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getBody(),DumpMessaggio.model().BODY.getFieldType()),
  98.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getDumpTimestamp(),DumpMessaggio.model().DUMP_TIMESTAMP.getFieldType()),
  99.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessHeader(),DumpMessaggio.model().POST_PROCESS_HEADER.getFieldType()),
  100.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessFilename(),DumpMessaggio.model().POST_PROCESS_FILENAME.getFieldType()),
  101.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessContent(),DumpMessaggio.model().POST_PROCESS_CONTENT.getFieldType()),
  102.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessConfigId(),DumpMessaggio.model().POST_PROCESS_CONFIG_ID.getFieldType()),
  103.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessTimestamp(),DumpMessaggio.model().POST_PROCESS_TIMESTAMP.getFieldType()),
  104.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getPostProcessed(),DumpMessaggio.model().POST_PROCESSED.getFieldType()),
  105.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartHeaderExt(),DumpMessaggio.model().MULTIPART_HEADER_EXT.getFieldType()),
  106.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getHeaderExt(),DumpMessaggio.model().HEADER_EXT.getFieldType())
  107.         );
  108.         dumpMessaggio.setId(id);

  109.         // for dumpMessaggio
  110.         for (int i = 0; i < dumpMessaggio.getAllegatoList().size(); i++) {


  111.             // Object dumpMessaggio.getAllegatoList().get(i)
  112.             ISQLQueryObject sqlQueryObjectInsert_allegato = sqlQueryObjectInsert.newSQLQueryObject();
  113.             sqlQueryObjectInsert_allegato.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  114.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_TYPE,false),"?");
  115.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_ID,false),"?");
  116.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION,false),"?");
  117.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.ALLEGATO,false),"?");
  118.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP,false),"?");
  119.             sqlQueryObjectInsert_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER_EXT,false),"?");
  120.             sqlQueryObjectInsert_allegato.addInsertField("id_messaggio","?");

  121.             // Insert dumpMessaggio.getAllegatoList().get(i)
  122.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_allegato = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().ALLEGATO);
  123.             long id_allegato = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_allegato, keyGenerator_allegato, jdbcProperties.isShowSql(),
  124.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getContentType(),DumpMessaggio.model().ALLEGATO.CONTENT_TYPE.getFieldType()),
  125.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getContentId(),DumpMessaggio.model().ALLEGATO.CONTENT_ID.getFieldType()),
  126.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getContentLocation(),DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION.getFieldType()),
  127.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getAllegato(),DumpMessaggio.model().ALLEGATO.ALLEGATO.getFieldType()),
  128.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getDumpTimestamp(),DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP.getFieldType()),
  129.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getHeaderExt(),DumpMessaggio.model().ALLEGATO.HEADER_EXT.getFieldType()),
  130.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  131.             );
  132.             dumpMessaggio.getAllegatoList().get(i).setId(id_allegato);

  133.             // for dumpMessaggio.getAllegatoList().get(i)
  134.             for (int i_allegato = 0; i_allegato < dumpMessaggio.getAllegatoList().get(i).getHeaderList().size(); i_allegato++) {

  135.                 // Bug fix OPPT-466 per gestione empty string as null on oracle
  136.                 // Rilasciare il vincolo di not null 'fisico' sul database.
  137.                 // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  138.                 // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  139.                 DumpHeaderAllegato dht = dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato);
  140.                 if(dht.getValore()==null){
  141.                     throw new ServiceException("Header ["+dht.getNome()+"] dell'allegato-"+i+" ["+dumpMessaggio.getAllegatoList().get(i).getContentId()+"] with value null");
  142.                 }

  143.                 // Object dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato)
  144.                 ISQLQueryObject sqlQueryObjectInsert_allegato_header = sqlQueryObjectInsert.newSQLQueryObject();
  145.                 sqlQueryObjectInsert_allegato_header.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  146.                 sqlQueryObjectInsert_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.NOME,false),"?");
  147.                 sqlQueryObjectInsert_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.VALORE,false),"?");
  148.                 sqlQueryObjectInsert_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP,false),"?");
  149.                 sqlQueryObjectInsert_allegato_header.addInsertField("id_allegato","?");

  150.                 // Insert dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato)
  151.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_allegato_header = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().ALLEGATO.HEADER);
  152.                 long id_allegato_header = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_allegato_header, keyGenerator_allegato_header, jdbcProperties.isShowSql(),
  153.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato).getNome(),DumpMessaggio.model().ALLEGATO.HEADER.NOME.getFieldType()),
  154.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato).getValore(),DumpMessaggio.model().ALLEGATO.HEADER.VALORE.getFieldType()),
  155.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato).getDumpTimestamp(),DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP.getFieldType()),
  156.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_allegato),Long.class)
  157.                 );
  158.                 dumpMessaggio.getAllegatoList().get(i).getHeaderList().get(i_allegato).setId(id_allegato_header);
  159.             } // fine for _allegato
  160.         } // fine for

  161.         // for dumpMessaggio
  162.         for (int i = 0; i < dumpMessaggio.getContenutoList().size(); i++) {


  163.             // Object dumpMessaggio.getContenutoList().get(i)
  164.             ISQLQueryObject sqlQueryObjectInsert_contenuto = sqlQueryObjectInsert.newSQLQueryObject();
  165.             sqlQueryObjectInsert_contenuto.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  166.             sqlQueryObjectInsert_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.NOME,false),"?");
  167.             sqlQueryObjectInsert_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE,false),"?");
  168.             sqlQueryObjectInsert_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES,false),"?");
  169.             sqlQueryObjectInsert_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP,false),"?");
  170.             sqlQueryObjectInsert_contenuto.addInsertField("id_messaggio","?");

  171.             // Insert dumpMessaggio.getContenutoList().get(i)
  172.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_contenuto = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().CONTENUTO);
  173.             long id_contenuto = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_contenuto, keyGenerator_contenuto, jdbcProperties.isShowSql(),
  174.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContenutoList().get(i).getNome(),DumpMessaggio.model().CONTENUTO.NOME.getFieldType()),
  175.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContenutoList().get(i).getValore(),DumpMessaggio.model().CONTENUTO.VALORE.getFieldType()),
  176.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContenutoList().get(i).getValoreAsBytes(),DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES.getFieldType()),
  177.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getContenutoList().get(i).getDumpTimestamp(),DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP.getFieldType()),
  178.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  179.             );
  180.             dumpMessaggio.getContenutoList().get(i).setId(id_contenuto);
  181.         } // fine for

  182.         // for dumpMessaggio
  183.         for (int i = 0; i < dumpMessaggio.getHeaderTrasportoList().size(); i++) {

  184.             // Bug fix OPPT-466 per gestione empty string as null on oracle
  185.             // Rilasciare il vincolo di not null 'fisico' sul database.
  186.             // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  187.             // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  188.             DumpHeaderTrasporto dht = dumpMessaggio.getHeaderTrasporto(i);
  189.             if(dht.getValore()==null){
  190.                 throw new ServiceException("Header ["+dht.getNome()+"] with value null");
  191.             }

  192.             // Object dumpMessaggio.getHeaderTrasportoList().get(i)
  193.             ISQLQueryObject sqlQueryObjectInsert_headerTrasporto = sqlQueryObjectInsert.newSQLQueryObject();
  194.             sqlQueryObjectInsert_headerTrasporto.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  195.             sqlQueryObjectInsert_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.NOME,false),"?");
  196.             sqlQueryObjectInsert_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.VALORE,false),"?");
  197.             sqlQueryObjectInsert_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP,false),"?");
  198.             sqlQueryObjectInsert_headerTrasporto.addInsertField("id_messaggio","?");

  199.             // Insert dumpMessaggio.getHeaderTrasportoList().get(i)
  200.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_headerTrasporto = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().HEADER_TRASPORTO);
  201.             long id_headerTrasporto = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_headerTrasporto, keyGenerator_headerTrasporto, jdbcProperties.isShowSql(),
  202.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getHeaderTrasportoList().get(i).getNome(),DumpMessaggio.model().HEADER_TRASPORTO.NOME.getFieldType()),
  203.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getHeaderTrasportoList().get(i).getValore(),DumpMessaggio.model().HEADER_TRASPORTO.VALORE.getFieldType()),
  204.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getHeaderTrasportoList().get(i).getDumpTimestamp(),DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP.getFieldType()),
  205.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  206.             );
  207.             dumpMessaggio.getHeaderTrasportoList().get(i).setId(id_headerTrasporto);
  208.         } // fine for

  209.         // for dumpMessaggio
  210.         for (int i = 0; i < dumpMessaggio.getMultipartHeaderList().size(); i++) {

  211.             // Bug fix OPPT-466 per gestione empty string as null on oracle
  212.             // Rilasciare il vincolo di not null 'fisico' sul database.
  213.             // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  214.             // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  215.             DumpMultipartHeader dht = dumpMessaggio.getMultipartHeader(i);
  216.             if(dht.getValore()==null){
  217.                 throw new ServiceException("Header ["+dht.getNome()+"] with value null");
  218.             }

  219.             // Object dumpMessaggio.getMultipartHeaderList().get(i)
  220.             ISQLQueryObject sqlQueryObjectInsert_multipartHeader = sqlQueryObjectInsert.newSQLQueryObject();
  221.             sqlQueryObjectInsert_multipartHeader.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  222.             sqlQueryObjectInsert_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.NOME,false),"?");
  223.             sqlQueryObjectInsert_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.VALORE,false),"?");
  224.             sqlQueryObjectInsert_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP,false),"?");
  225.             sqlQueryObjectInsert_multipartHeader.addInsertField("id_messaggio","?");

  226.             // Insert dumpMessaggio.getMultipartHeaderList().get(i)
  227.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_multipartHeader = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().MULTIPART_HEADER);
  228.             long id_multipartHeader = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_multipartHeader, keyGenerator_multipartHeader, jdbcProperties.isShowSql(),
  229.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartHeaderList().get(i).getNome(),DumpMessaggio.model().MULTIPART_HEADER.NOME.getFieldType()),
  230.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartHeaderList().get(i).getValore(),DumpMessaggio.model().MULTIPART_HEADER.VALORE.getFieldType()),
  231.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio.getMultipartHeaderList().get(i).getDumpTimestamp(),DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP.getFieldType()),
  232.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  233.             );
  234.             dumpMessaggio.getMultipartHeaderList().get(i).setId(id_multipartHeader);
  235.         } // fine for

  236.        
  237.     }

  238.     @Override
  239.     public void update(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio oldId, DumpMessaggio dumpMessaggio, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  240.         ISQLQueryObject sqlQueryObjectUpdate = sqlQueryObject.newSQLQueryObject();
  241.         Long longIdByLogicId = this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObjectUpdate.newSQLQueryObject(), oldId, true);
  242.         Long tableId = dumpMessaggio.getId();
  243.         if(tableId != null && tableId.longValue() > 0) {
  244.             if(tableId.longValue() != longIdByLogicId.longValue()) {
  245.                 throw new Exception("Ambiguous parameter: dumpMessaggio.id ["+tableId+"] does not match logic id ["+longIdByLogicId+"]");
  246.             }
  247.         } else {
  248.             tableId = longIdByLogicId;
  249.             dumpMessaggio.setId(tableId);
  250.         }
  251.         if(tableId==null || tableId<=0){
  252.             throw new Exception("Retrieve tableId failed");
  253.         }

  254.         this.update(jdbcProperties, log, connection, sqlQueryObject, tableId, dumpMessaggio, idMappingResolutionBehaviour);
  255.     }
  256.     @Override
  257.     public void update(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, DumpMessaggio dumpMessaggio, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  258.    
  259.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  260.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  261.        
  262.         ISQLQueryObject sqlQueryObjectInsert = sqlQueryObject.newSQLQueryObject();
  263.         ISQLQueryObject sqlQueryObjectDelete = sqlQueryObjectInsert.newSQLQueryObject();
  264.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObjectDelete.newSQLQueryObject();
  265.         ISQLQueryObject sqlQueryObjectUpdate = sqlQueryObjectGet.newSQLQueryObject();
  266.        


  267.         // Object dumpMessaggio
  268.         sqlQueryObjectUpdate.setANDLogicOperator(true);
  269.         sqlQueryObjectUpdate.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  270.         boolean isUpdate_dumpMessaggio = true;
  271.         java.util.List<JDBCObject> lstObjects_dumpMessaggio = new java.util.ArrayList<>();
  272.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,false), "?");
  273.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getIdTransazione(), DumpMessaggio.model().ID_TRANSAZIONE.getFieldType()));
  274.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().PROTOCOLLO,false), "?");
  275.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getProtocollo(), DumpMessaggio.model().PROTOCOLLO.getFieldType()));
  276.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,false), "?");
  277.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getServizioApplicativoErogatore(), DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE.getFieldType()));
  278.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DATA_CONSEGNA_EROGATORE,false), "?");
  279.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getDataConsegnaErogatore(), DumpMessaggio.model().DATA_CONSEGNA_EROGATORE.getFieldType()));
  280.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO,false), "?");
  281.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getTipoMessaggio(), DumpMessaggio.model().TIPO_MESSAGGIO.getFieldType()));
  282.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().FORMATO_MESSAGGIO,false), "?");
  283.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getFormatoMessaggio(), DumpMessaggio.model().FORMATO_MESSAGGIO.getFieldType()));
  284.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_TYPE,false), "?");
  285.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getContentType(), DumpMessaggio.model().CONTENT_TYPE.getFieldType()));
  286.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_LENGTH,false), "?");
  287.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getContentLength(), DumpMessaggio.model().CONTENT_LENGTH.getFieldType()));
  288.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_TYPE,false), "?");
  289.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getMultipartContentType(), DumpMessaggio.model().MULTIPART_CONTENT_TYPE.getFieldType()));
  290.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_ID,false), "?");
  291.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getMultipartContentId(), DumpMessaggio.model().MULTIPART_CONTENT_ID.getFieldType()));
  292.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_LOCATION,false), "?");
  293.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getMultipartContentLocation(), DumpMessaggio.model().MULTIPART_CONTENT_LOCATION.getFieldType()));
  294.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().BODY,false), "?");
  295.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getBody(), DumpMessaggio.model().BODY.getFieldType()));
  296.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DUMP_TIMESTAMP,false), "?");
  297.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getDumpTimestamp(), DumpMessaggio.model().DUMP_TIMESTAMP.getFieldType()));
  298.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_HEADER,false), "?");
  299.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessHeader(), DumpMessaggio.model().POST_PROCESS_HEADER.getFieldType()));
  300.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_FILENAME,false), "?");
  301.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessFilename(), DumpMessaggio.model().POST_PROCESS_FILENAME.getFieldType()));
  302.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONTENT,false), "?");
  303.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessContent(), DumpMessaggio.model().POST_PROCESS_CONTENT.getFieldType()));
  304.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONFIG_ID,false), "?");
  305.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessConfigId(), DumpMessaggio.model().POST_PROCESS_CONFIG_ID.getFieldType()));
  306.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_TIMESTAMP,false), "?");
  307.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessTimestamp(), DumpMessaggio.model().POST_PROCESS_TIMESTAMP.getFieldType()));
  308.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESSED,false), "?");
  309.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getPostProcessed(), DumpMessaggio.model().POST_PROCESSED.getFieldType()));
  310.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER_EXT,false), "?");
  311.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getMultipartHeaderExt(), DumpMessaggio.model().MULTIPART_HEADER_EXT.getFieldType()));
  312.         sqlQueryObjectUpdate.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_EXT,false), "?");
  313.         lstObjects_dumpMessaggio.add(new JDBCObject(dumpMessaggio.getHeaderExt(), DumpMessaggio.model().HEADER_EXT.getFieldType()));
  314.         sqlQueryObjectUpdate.addWhereCondition("id=?");
  315.         lstObjects_dumpMessaggio.add(new JDBCObject(tableId, Long.class));

  316.         if(isUpdate_dumpMessaggio) {
  317.             // Update dumpMessaggio
  318.             jdbcUtilities.executeUpdate(sqlQueryObjectUpdate.createSQLUpdate(), jdbcProperties.isShowSql(),
  319.                 lstObjects_dumpMessaggio.toArray(new JDBCObject[]{}));
  320.         }
  321.         // for dumpMessaggio_multipartHeader

  322.         java.util.List<Long> ids_dumpMessaggio_multipartHeader_da_non_eliminare = new java.util.ArrayList<Long>();
  323.         for (Object dumpMessaggio_multipartHeader_object : dumpMessaggio.getMultipartHeaderList()) {
  324.             DumpMultipartHeader dumpMessaggio_multipartHeader = (DumpMultipartHeader) dumpMessaggio_multipartHeader_object;
  325.            
  326.             // Bug fix OPPT-466 per gestione empty string as null on oracle
  327.             // Rilasciare il vincolo di not null 'fisico' sul database.
  328.             // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  329.             // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  330.             if(dumpMessaggio_multipartHeader.getValore()==null){
  331.                 throw new ServiceException("Header ["+dumpMessaggio_multipartHeader.getNome()+"] with value null");
  332.             }
  333.            
  334.             if(dumpMessaggio_multipartHeader.getId() == null || dumpMessaggio_multipartHeader.getId().longValue() <= 0) {

  335.                 long id = dumpMessaggio.getId();            

  336.                 // Object dumpMessaggio_multipartHeader
  337.                 ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_multipartHeader = sqlQueryObjectInsert.newSQLQueryObject();
  338.                 sqlQueryObjectInsert_dumpMessaggio_multipartHeader.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  339.                 sqlQueryObjectInsert_dumpMessaggio_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.NOME,false),"?");
  340.                 sqlQueryObjectInsert_dumpMessaggio_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.VALORE,false),"?");
  341.                 sqlQueryObjectInsert_dumpMessaggio_multipartHeader.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP,false),"?");
  342.                 sqlQueryObjectInsert_dumpMessaggio_multipartHeader.addInsertField("id_messaggio","?");

  343.                 // Insert dumpMessaggio_multipartHeader
  344.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_multipartHeader = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().MULTIPART_HEADER);
  345.                 long id_dumpMessaggio_multipartHeader = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_multipartHeader, keyGenerator_dumpMessaggio_multipartHeader, jdbcProperties.isShowSql(),
  346.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_multipartHeader.getNome(),DumpMessaggio.model().MULTIPART_HEADER.NOME.getFieldType()),
  347.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_multipartHeader.getValore(),DumpMessaggio.model().MULTIPART_HEADER.VALORE.getFieldType()),
  348.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_multipartHeader.getDumpTimestamp(),DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP.getFieldType()),
  349.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  350.                 );
  351.                 dumpMessaggio_multipartHeader.setId(id_dumpMessaggio_multipartHeader);

  352.                 ids_dumpMessaggio_multipartHeader_da_non_eliminare.add(dumpMessaggio_multipartHeader.getId());
  353.             } else {


  354.                 // Object dumpMessaggio_multipartHeader
  355.                 ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_multipartHeader = sqlQueryObjectUpdate.newSQLQueryObject();
  356.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.setANDLogicOperator(true);
  357.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  358.                 boolean isUpdate_dumpMessaggio_multipartHeader = true;
  359.                 java.util.List<JDBCObject> lstObjects_dumpMessaggio_multipartHeader = new java.util.ArrayList<>();
  360.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.NOME,false), "?");
  361.                 lstObjects_dumpMessaggio_multipartHeader.add(new JDBCObject(dumpMessaggio_multipartHeader.getNome(), DumpMessaggio.model().MULTIPART_HEADER.NOME.getFieldType()));
  362.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.VALORE,false), "?");
  363.                 lstObjects_dumpMessaggio_multipartHeader.add(new JDBCObject(dumpMessaggio_multipartHeader.getValore(), DumpMessaggio.model().MULTIPART_HEADER.VALORE.getFieldType()));
  364.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP,false), "?");
  365.                 lstObjects_dumpMessaggio_multipartHeader.add(new JDBCObject(dumpMessaggio_multipartHeader.getDumpTimestamp(), DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP.getFieldType()));
  366.                 sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.addWhereCondition("id=?");
  367.                 ids_dumpMessaggio_multipartHeader_da_non_eliminare.add(dumpMessaggio_multipartHeader.getId());
  368.                 lstObjects_dumpMessaggio_multipartHeader.add(new JDBCObject(dumpMessaggio_multipartHeader.getId(),Long.class));

  369.                 if(isUpdate_dumpMessaggio_multipartHeader) {
  370.                     // Update dumpMessaggio_multipartHeader
  371.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_dumpMessaggio_multipartHeader.createSQLUpdate(), jdbcProperties.isShowSql(),
  372.                         lstObjects_dumpMessaggio_multipartHeader.toArray(new JDBCObject[]{}));
  373.                 }
  374.             }
  375.         } // fine for dumpMessaggio_multipartHeader

  376.         // elimino tutte le occorrenze di dumpMessaggio_multipartHeader non presenti nell'update

  377.         ISQLQueryObject sqlQueryObjectUpdate_multipartHeaderdeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  378.         sqlQueryObjectUpdate_multipartHeaderdeleteEngineList.setANDLogicOperator(true);
  379.         sqlQueryObjectUpdate_multipartHeaderdeleteEngineList.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  380.         java.util.List<JDBCObject> jdbcObjects_dumpMessaggio_multipartHeaderdeleteEngine = new java.util.ArrayList<>();

  381.         sqlQueryObjectUpdate_multipartHeaderdeleteEngineList.addWhereCondition("id_messaggio=?");
  382.         jdbcObjects_dumpMessaggio_multipartHeaderdeleteEngine.add(new JDBCObject(dumpMessaggio.getId(), Long.class));

  383.         StringBuilder marks_dumpMessaggio_multipartHeader = new StringBuilder();
  384.         if(ids_dumpMessaggio_multipartHeader_da_non_eliminare.size() > 0) {
  385.             for(Long ids : ids_dumpMessaggio_multipartHeader_da_non_eliminare) {
  386.                 if(marks_dumpMessaggio_multipartHeader.length() > 0) {
  387.                     marks_dumpMessaggio_multipartHeader.append(",");
  388.                 }
  389.                 marks_dumpMessaggio_multipartHeader.append("?");
  390.                 jdbcObjects_dumpMessaggio_multipartHeaderdeleteEngine.add(new JDBCObject(ids, Long.class));

  391.             }
  392.             sqlQueryObjectUpdate_multipartHeaderdeleteEngineList.addWhereCondition("id NOT IN ("+marks_dumpMessaggio_multipartHeader.toString()+")");
  393.         }

  394.         jdbcUtilities.execute(sqlQueryObjectUpdate_multipartHeaderdeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_dumpMessaggio_multipartHeaderdeleteEngine.toArray(new JDBCObject[]{}));

  395.         // for dumpMessaggio_headerTrasporto

  396.         java.util.List<Long> ids_dumpMessaggio_headerTrasporto_da_non_eliminare = new java.util.ArrayList<Long>();
  397.         for (Object dumpMessaggio_headerTrasporto_object : dumpMessaggio.getHeaderTrasportoList()) {
  398.             DumpHeaderTrasporto dumpMessaggio_headerTrasporto = (DumpHeaderTrasporto) dumpMessaggio_headerTrasporto_object;
  399.            
  400.             // Bug fix OPPT-466 per gestione empty string as null on oracle
  401.             // Rilasciare il vincolo di not null 'fisico' sul database.
  402.             // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  403.             // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  404.             if(dumpMessaggio_headerTrasporto.getValore()==null){
  405.                 throw new ServiceException("Header ["+dumpMessaggio_headerTrasporto.getNome()+"] with value null");
  406.             }
  407.            
  408.             if(dumpMessaggio_headerTrasporto.getId() == null || dumpMessaggio_headerTrasporto.getId().longValue() <= 0) {

  409.                 long id = dumpMessaggio.getId();            

  410.                 // Object dumpMessaggio_headerTrasporto
  411.                 ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_headerTrasporto = sqlQueryObjectInsert.newSQLQueryObject();
  412.                 sqlQueryObjectInsert_dumpMessaggio_headerTrasporto.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  413.                 sqlQueryObjectInsert_dumpMessaggio_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.NOME,false),"?");
  414.                 sqlQueryObjectInsert_dumpMessaggio_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.VALORE,false),"?");
  415.                 sqlQueryObjectInsert_dumpMessaggio_headerTrasporto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP,false),"?");
  416.                 sqlQueryObjectInsert_dumpMessaggio_headerTrasporto.addInsertField("id_messaggio","?");

  417.                 // Insert dumpMessaggio_headerTrasporto
  418.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_headerTrasporto = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().HEADER_TRASPORTO);
  419.                 long id_dumpMessaggio_headerTrasporto = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_headerTrasporto, keyGenerator_dumpMessaggio_headerTrasporto, jdbcProperties.isShowSql(),
  420.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_headerTrasporto.getNome(),DumpMessaggio.model().HEADER_TRASPORTO.NOME.getFieldType()),
  421.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_headerTrasporto.getValore(),DumpMessaggio.model().HEADER_TRASPORTO.VALORE.getFieldType()),
  422.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_headerTrasporto.getDumpTimestamp(),DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP.getFieldType()),
  423.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  424.                 );
  425.                 dumpMessaggio_headerTrasporto.setId(id_dumpMessaggio_headerTrasporto);

  426.                 ids_dumpMessaggio_headerTrasporto_da_non_eliminare.add(dumpMessaggio_headerTrasporto.getId());
  427.             } else {


  428.                 // Object dumpMessaggio_headerTrasporto
  429.                 ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto = sqlQueryObjectUpdate.newSQLQueryObject();
  430.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.setANDLogicOperator(true);
  431.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  432.                 boolean isUpdate_dumpMessaggio_headerTrasporto = true;
  433.                 java.util.List<JDBCObject> lstObjects_dumpMessaggio_headerTrasporto = new java.util.ArrayList<>();
  434.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.NOME,false), "?");
  435.                 lstObjects_dumpMessaggio_headerTrasporto.add(new JDBCObject(dumpMessaggio_headerTrasporto.getNome(), DumpMessaggio.model().HEADER_TRASPORTO.NOME.getFieldType()));
  436.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.VALORE,false), "?");
  437.                 lstObjects_dumpMessaggio_headerTrasporto.add(new JDBCObject(dumpMessaggio_headerTrasporto.getValore(), DumpMessaggio.model().HEADER_TRASPORTO.VALORE.getFieldType()));
  438.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP,false), "?");
  439.                 lstObjects_dumpMessaggio_headerTrasporto.add(new JDBCObject(dumpMessaggio_headerTrasporto.getDumpTimestamp(), DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP.getFieldType()));
  440.                 sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.addWhereCondition("id=?");
  441.                 ids_dumpMessaggio_headerTrasporto_da_non_eliminare.add(dumpMessaggio_headerTrasporto.getId());
  442.                 lstObjects_dumpMessaggio_headerTrasporto.add(new JDBCObject(dumpMessaggio_headerTrasporto.getId(),Long.class));

  443.                 if(isUpdate_dumpMessaggio_headerTrasporto) {
  444.                     // Update dumpMessaggio_headerTrasporto
  445.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_dumpMessaggio_headerTrasporto.createSQLUpdate(), jdbcProperties.isShowSql(),
  446.                         lstObjects_dumpMessaggio_headerTrasporto.toArray(new JDBCObject[]{}));
  447.                 }
  448.             }
  449.         } // fine for dumpMessaggio_headerTrasporto

  450.         // elimino tutte le occorrenze di dumpMessaggio_headerTrasporto non presenti nell'update

  451.         ISQLQueryObject sqlQueryObjectUpdate_headerTrasportodeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  452.         sqlQueryObjectUpdate_headerTrasportodeleteEngineList.setANDLogicOperator(true);
  453.         sqlQueryObjectUpdate_headerTrasportodeleteEngineList.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  454.         java.util.List<JDBCObject> jdbcObjects_dumpMessaggio_headerTrasportodeleteEngine = new java.util.ArrayList<>();

  455.         sqlQueryObjectUpdate_headerTrasportodeleteEngineList.addWhereCondition("id_messaggio=?");
  456.         jdbcObjects_dumpMessaggio_headerTrasportodeleteEngine.add(new JDBCObject(dumpMessaggio.getId(), Long.class));

  457.         StringBuilder marks_dumpMessaggio_headerTrasporto = new StringBuilder();
  458.         if(ids_dumpMessaggio_headerTrasporto_da_non_eliminare.size() > 0) {
  459.             for(Long ids : ids_dumpMessaggio_headerTrasporto_da_non_eliminare) {
  460.                 if(marks_dumpMessaggio_headerTrasporto.length() > 0) {
  461.                     marks_dumpMessaggio_headerTrasporto.append(",");
  462.                 }
  463.                 marks_dumpMessaggio_headerTrasporto.append("?");
  464.                 jdbcObjects_dumpMessaggio_headerTrasportodeleteEngine.add(new JDBCObject(ids, Long.class));

  465.             }
  466.             sqlQueryObjectUpdate_headerTrasportodeleteEngineList.addWhereCondition("id NOT IN ("+marks_dumpMessaggio_headerTrasporto.toString()+")");
  467.         }

  468.         jdbcUtilities.execute(sqlQueryObjectUpdate_headerTrasportodeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_dumpMessaggio_headerTrasportodeleteEngine.toArray(new JDBCObject[]{}));

  469.         // for dumpMessaggio_allegato

  470.         java.util.List<Long> ids_dumpMessaggio_allegato_da_non_eliminare = new java.util.ArrayList<Long>();
  471.         for (Object dumpMessaggio_allegato_object : dumpMessaggio.getAllegatoList()) {
  472.             DumpAllegato dumpMessaggio_allegato = (DumpAllegato) dumpMessaggio_allegato_object;
  473.             if(dumpMessaggio_allegato.getId() == null || dumpMessaggio_allegato.getId().longValue() <= 0) {

  474.                 long id = dumpMessaggio.getId();            

  475.                 // Object dumpMessaggio_allegato
  476.                 ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_allegato = sqlQueryObjectInsert.newSQLQueryObject();
  477.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  478.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_TYPE,false),"?");
  479.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_ID,false),"?");
  480.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION,false),"?");
  481.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.ALLEGATO,false),"?");
  482.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP,false),"?");
  483.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER_EXT,false),"?");
  484.                 sqlQueryObjectInsert_dumpMessaggio_allegato.addInsertField("id_messaggio","?");

  485.                 // Insert dumpMessaggio_allegato
  486.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_allegato = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().ALLEGATO);
  487.                 long id_dumpMessaggio_allegato = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_allegato, keyGenerator_dumpMessaggio_allegato, jdbcProperties.isShowSql(),
  488.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getContentType(),DumpMessaggio.model().ALLEGATO.CONTENT_TYPE.getFieldType()),
  489.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getContentId(),DumpMessaggio.model().ALLEGATO.CONTENT_ID.getFieldType()),
  490.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getContentLocation(),DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION.getFieldType()),
  491.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getAllegato(),DumpMessaggio.model().ALLEGATO.ALLEGATO.getFieldType()),
  492.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getDumpTimestamp(),DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP.getFieldType()),
  493.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getHeaderExt(),DumpMessaggio.model().ALLEGATO.HEADER_EXT.getFieldType()),
  494.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  495.                 );
  496.                 dumpMessaggio_allegato.setId(id_dumpMessaggio_allegato);

  497.                 // for dumpMessaggio_allegato
  498.                 for (int i_dumpMessaggio_allegato = 0; i_dumpMessaggio_allegato < dumpMessaggio_allegato.getHeaderList().size(); i_dumpMessaggio_allegato++) {

  499.                     // Bug fix OPPT-466 per gestione empty string as null on oracle
  500.                     // Rilasciare il vincolo di not null 'fisico' sul database.
  501.                     // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  502.                     // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  503.                     if(dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).getValore()==null){
  504.                         throw new ServiceException("Header ["+dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).getNome()+"] dell'allegato ["+dumpMessaggio_allegato.getContentId()+"] with value null");
  505.                     }

  506.                     // Object dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato)
  507.                     ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_allegato_header = sqlQueryObjectInsert.newSQLQueryObject();
  508.                     sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  509.                     sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.NOME,false),"?");
  510.                     sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.VALORE,false),"?");
  511.                     sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP,false),"?");
  512.                     sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField("id_allegato","?");

  513.                     // Insert dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato)
  514.                     org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_allegato_header = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().ALLEGATO.HEADER);
  515.                     long id_dumpMessaggio_allegato_header = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_allegato_header, keyGenerator_dumpMessaggio_allegato_header, jdbcProperties.isShowSql(),
  516.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).getNome(),DumpMessaggio.model().ALLEGATO.HEADER.NOME.getFieldType()),
  517.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).getValore(),DumpMessaggio.model().ALLEGATO.HEADER.VALORE.getFieldType()),
  518.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).getDumpTimestamp(),DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP.getFieldType()),
  519.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_dumpMessaggio_allegato),Long.class)
  520.                     );
  521.                     dumpMessaggio_allegato.getHeaderList().get(i_dumpMessaggio_allegato).setId(id_dumpMessaggio_allegato_header);
  522.                 } // fine for _dumpMessaggio_allegato

  523.                 ids_dumpMessaggio_allegato_da_non_eliminare.add(dumpMessaggio_allegato.getId());
  524.             } else {


  525.                 // Object dumpMessaggio_allegato
  526.                 ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_allegato = sqlQueryObjectUpdate.newSQLQueryObject();
  527.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.setANDLogicOperator(true);
  528.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  529.                 boolean isUpdate_dumpMessaggio_allegato = true;
  530.                 java.util.List<JDBCObject> lstObjects_dumpMessaggio_allegato = new java.util.ArrayList<>();
  531.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_TYPE,false), "?");
  532.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getContentType(), DumpMessaggio.model().ALLEGATO.CONTENT_TYPE.getFieldType()));
  533.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_ID,false), "?");
  534.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getContentId(), DumpMessaggio.model().ALLEGATO.CONTENT_ID.getFieldType()));
  535.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION,false), "?");
  536.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getContentLocation(), DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION.getFieldType()));
  537.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.ALLEGATO,false), "?");
  538.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getAllegato(), DumpMessaggio.model().ALLEGATO.ALLEGATO.getFieldType()));
  539.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP,false), "?");
  540.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getDumpTimestamp(), DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP.getFieldType()));
  541.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER_EXT,false), "?");
  542.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getHeaderExt(), DumpMessaggio.model().ALLEGATO.HEADER_EXT.getFieldType()));
  543.                 sqlQueryObjectUpdate_dumpMessaggio_allegato.addWhereCondition("id=?");
  544.                 ids_dumpMessaggio_allegato_da_non_eliminare.add(dumpMessaggio_allegato.getId());
  545.                 lstObjects_dumpMessaggio_allegato.add(new JDBCObject(dumpMessaggio_allegato.getId(),Long.class));

  546.                 if(isUpdate_dumpMessaggio_allegato) {
  547.                     // Update dumpMessaggio_allegato
  548.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_dumpMessaggio_allegato.createSQLUpdate(), jdbcProperties.isShowSql(),
  549.                         lstObjects_dumpMessaggio_allegato.toArray(new JDBCObject[]{}));
  550.                 }
  551.                 // for dumpMessaggio_allegato_header

  552.                 java.util.List<Long> ids_dumpMessaggio_allegato_header_da_non_eliminare = new java.util.ArrayList<Long>();
  553.                 for (Object dumpMessaggio_allegato_header_object : dumpMessaggio_allegato.getHeaderList()) {
  554.                     DumpHeaderAllegato dumpMessaggio_allegato_header = (DumpHeaderAllegato) dumpMessaggio_allegato_header_object;
  555.                     if(dumpMessaggio_allegato_header.getId() == null || dumpMessaggio_allegato_header.getId().longValue() <= 0) {

  556.                         long id_dumpMessaggio_allegato = dumpMessaggio_allegato.getId();                    

  557.                         // Object dumpMessaggio_allegato_header
  558.                         ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_allegato_header = sqlQueryObjectInsert.newSQLQueryObject();
  559.                         sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  560.                         sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.NOME,false),"?");
  561.                         sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.VALORE,false),"?");
  562.                         sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP,false),"?");
  563.                         sqlQueryObjectInsert_dumpMessaggio_allegato_header.addInsertField("id_allegato","?");

  564.                         // Insert dumpMessaggio_allegato_header
  565.                         org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_allegato_header = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().ALLEGATO.HEADER);
  566.                         long id_dumpMessaggio_allegato_header = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_allegato_header, keyGenerator_dumpMessaggio_allegato_header, jdbcProperties.isShowSql(),
  567.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato_header.getNome(),DumpMessaggio.model().ALLEGATO.HEADER.NOME.getFieldType()),
  568.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato_header.getValore(),DumpMessaggio.model().ALLEGATO.HEADER.VALORE.getFieldType()),
  569.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato_header.getDumpTimestamp(),DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP.getFieldType()),
  570.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_dumpMessaggio_allegato),Long.class)
  571.                         );
  572.                         dumpMessaggio_allegato_header.setId(id_dumpMessaggio_allegato_header);

  573.                         ids_dumpMessaggio_allegato_header_da_non_eliminare.add(dumpMessaggio_allegato_header.getId());
  574.                     } else {


  575.                         // Object dumpMessaggio_allegato_header
  576.                         ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_allegato_header = sqlQueryObjectUpdate.newSQLQueryObject();
  577.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.setANDLogicOperator(true);
  578.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  579.                         boolean isUpdate_dumpMessaggio_allegato_header = true;
  580.                         java.util.List<JDBCObject> lstObjects_dumpMessaggio_allegato_header = new java.util.ArrayList<>();
  581.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.NOME,false), "?");
  582.                         lstObjects_dumpMessaggio_allegato_header.add(new JDBCObject(dumpMessaggio_allegato_header.getNome(), DumpMessaggio.model().ALLEGATO.HEADER.NOME.getFieldType()));
  583.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.VALORE,false), "?");
  584.                         lstObjects_dumpMessaggio_allegato_header.add(new JDBCObject(dumpMessaggio_allegato_header.getValore(), DumpMessaggio.model().ALLEGATO.HEADER.VALORE.getFieldType()));
  585.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP,false), "?");
  586.                         lstObjects_dumpMessaggio_allegato_header.add(new JDBCObject(dumpMessaggio_allegato_header.getDumpTimestamp(), DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP.getFieldType()));
  587.                         sqlQueryObjectUpdate_dumpMessaggio_allegato_header.addWhereCondition("id=?");
  588.                         ids_dumpMessaggio_allegato_header_da_non_eliminare.add(dumpMessaggio_allegato_header.getId());
  589.                         lstObjects_dumpMessaggio_allegato_header.add(new JDBCObject(dumpMessaggio_allegato_header.getId(),Long.class));

  590.                         if(isUpdate_dumpMessaggio_allegato_header) {
  591.                             // Update dumpMessaggio_allegato_header
  592.                             jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_dumpMessaggio_allegato_header.createSQLUpdate(), jdbcProperties.isShowSql(),
  593.                                 lstObjects_dumpMessaggio_allegato_header.toArray(new JDBCObject[]{}));
  594.                         }
  595.                     }
  596.                 } // fine for dumpMessaggio_allegato_header

  597.                 // elimino tutte le occorrenze di dumpMessaggio_allegato_header non presenti nell'update

  598.                 ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  599.                 sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList.setANDLogicOperator(true);
  600.                 sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  601.                 java.util.List<JDBCObject> jdbcObjects_dumpMessaggio_allegato_headerdeleteEngine = new java.util.ArrayList<>();

  602.                 sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList.addWhereCondition("id_allegato=?");
  603.                 jdbcObjects_dumpMessaggio_allegato_headerdeleteEngine.add(new JDBCObject(dumpMessaggio_allegato.getId(), Long.class));

  604.                 StringBuilder marks_dumpMessaggio_allegato_header = new StringBuilder();
  605.                 if(ids_dumpMessaggio_allegato_header_da_non_eliminare.size() > 0) {
  606.                     for(Long ids : ids_dumpMessaggio_allegato_header_da_non_eliminare) {
  607.                         if(marks_dumpMessaggio_allegato_header.length() > 0) {
  608.                             marks_dumpMessaggio_allegato_header.append(",");
  609.                         }
  610.                         marks_dumpMessaggio_allegato_header.append("?");
  611.                         jdbcObjects_dumpMessaggio_allegato_headerdeleteEngine.add(new JDBCObject(ids, Long.class));

  612.                     }
  613.                     sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList.addWhereCondition("id NOT IN ("+marks_dumpMessaggio_allegato_header.toString()+")");
  614.                 }

  615.                 jdbcUtilities.execute(sqlQueryObjectUpdate_dumpMessaggio_allegato_headerdeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_dumpMessaggio_allegato_headerdeleteEngine.toArray(new JDBCObject[]{}));

  616.             }
  617.         } // fine for dumpMessaggio_allegato

  618.         // elimino tutte le occorrenze di dumpMessaggio_allegato non presenti nell'update

  619.         ISQLQueryObject sqlQueryObjectUpdate_allegatodeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  620.         sqlQueryObjectUpdate_allegatodeleteEngineList.setANDLogicOperator(true);
  621.         sqlQueryObjectUpdate_allegatodeleteEngineList.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  622.         java.util.List<JDBCObject> jdbcObjects_dumpMessaggio_allegatodeleteEngine = new java.util.ArrayList<>();

  623.         sqlQueryObjectUpdate_allegatodeleteEngineList.addWhereCondition("id_messaggio=?");
  624.         jdbcObjects_dumpMessaggio_allegatodeleteEngine.add(new JDBCObject(dumpMessaggio.getId(), Long.class));

  625.         StringBuilder marks_dumpMessaggio_allegato = new StringBuilder();
  626.         if(ids_dumpMessaggio_allegato_da_non_eliminare.size() > 0) {
  627.             for(Long ids : ids_dumpMessaggio_allegato_da_non_eliminare) {
  628.                 if(marks_dumpMessaggio_allegato.length() > 0) {
  629.                     marks_dumpMessaggio_allegato.append(",");
  630.                 }
  631.                 marks_dumpMessaggio_allegato.append("?");
  632.                 jdbcObjects_dumpMessaggio_allegatodeleteEngine.add(new JDBCObject(ids, Long.class));

  633.             }
  634.             sqlQueryObjectUpdate_allegatodeleteEngineList.addWhereCondition("id NOT IN ("+marks_dumpMessaggio_allegato.toString()+")");
  635.         }

  636.         jdbcUtilities.execute(sqlQueryObjectUpdate_allegatodeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_dumpMessaggio_allegatodeleteEngine.toArray(new JDBCObject[]{}));

  637.         // for dumpMessaggio_contenuto

  638.         java.util.List<Long> ids_dumpMessaggio_contenuto_da_non_eliminare = new java.util.ArrayList<Long>();
  639.         for (Object dumpMessaggio_contenuto_object : dumpMessaggio.getContenutoList()) {
  640.             DumpContenuto dumpMessaggio_contenuto = (DumpContenuto) dumpMessaggio_contenuto_object;
  641.             if(dumpMessaggio_contenuto.getId() == null || dumpMessaggio_contenuto.getId().longValue() <= 0) {

  642.                 long id = dumpMessaggio.getId();            

  643.                 // Object dumpMessaggio_contenuto
  644.                 ISQLQueryObject sqlQueryObjectInsert_dumpMessaggio_contenuto = sqlQueryObjectInsert.newSQLQueryObject();
  645.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  646.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.NOME,false),"?");
  647.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE,false),"?");
  648.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES,false),"?");
  649.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP,false),"?");
  650.                 sqlQueryObjectInsert_dumpMessaggio_contenuto.addInsertField("id_messaggio","?");

  651.                 // Insert dumpMessaggio_contenuto
  652.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_dumpMessaggio_contenuto = this.getDumpMessaggioFetch().getKeyGeneratorObject(DumpMessaggio.model().CONTENUTO);
  653.                 long id_dumpMessaggio_contenuto = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_dumpMessaggio_contenuto, keyGenerator_dumpMessaggio_contenuto, jdbcProperties.isShowSql(),
  654.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_contenuto.getNome(),DumpMessaggio.model().CONTENUTO.NOME.getFieldType()),
  655.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_contenuto.getValore(),DumpMessaggio.model().CONTENUTO.VALORE.getFieldType()),
  656.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_contenuto.getValoreAsBytes(),DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES.getFieldType()),
  657.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_contenuto.getDumpTimestamp(),DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP.getFieldType()),
  658.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  659.                 );
  660.                 dumpMessaggio_contenuto.setId(id_dumpMessaggio_contenuto);

  661.                 ids_dumpMessaggio_contenuto_da_non_eliminare.add(dumpMessaggio_contenuto.getId());
  662.             } else {


  663.                 // Object dumpMessaggio_contenuto
  664.                 ISQLQueryObject sqlQueryObjectUpdate_dumpMessaggio_contenuto = sqlQueryObjectUpdate.newSQLQueryObject();
  665.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.setANDLogicOperator(true);
  666.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addUpdateTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  667.                 boolean isUpdate_dumpMessaggio_contenuto = true;
  668.                 java.util.List<JDBCObject> lstObjects_dumpMessaggio_contenuto = new java.util.ArrayList<>();
  669.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.NOME,false), "?");
  670.                 lstObjects_dumpMessaggio_contenuto.add(new JDBCObject(dumpMessaggio_contenuto.getNome(), DumpMessaggio.model().CONTENUTO.NOME.getFieldType()));
  671.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE,false), "?");
  672.                 lstObjects_dumpMessaggio_contenuto.add(new JDBCObject(dumpMessaggio_contenuto.getValore(), DumpMessaggio.model().CONTENUTO.VALORE.getFieldType()));
  673.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES,false), "?");
  674.                 lstObjects_dumpMessaggio_contenuto.add(new JDBCObject(dumpMessaggio_contenuto.getValoreAsBytes(), DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES.getFieldType()));
  675.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addUpdateField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP,false), "?");
  676.                 lstObjects_dumpMessaggio_contenuto.add(new JDBCObject(dumpMessaggio_contenuto.getDumpTimestamp(), DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP.getFieldType()));
  677.                 sqlQueryObjectUpdate_dumpMessaggio_contenuto.addWhereCondition("id=?");
  678.                 ids_dumpMessaggio_contenuto_da_non_eliminare.add(dumpMessaggio_contenuto.getId());
  679.                 lstObjects_dumpMessaggio_contenuto.add(new JDBCObject(dumpMessaggio_contenuto.getId(),Long.class));

  680.                 if(isUpdate_dumpMessaggio_contenuto) {
  681.                     // Update dumpMessaggio_contenuto
  682.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_dumpMessaggio_contenuto.createSQLUpdate(), jdbcProperties.isShowSql(),
  683.                         lstObjects_dumpMessaggio_contenuto.toArray(new JDBCObject[]{}));
  684.                 }
  685.             }
  686.         } // fine for dumpMessaggio_contenuto

  687.         // elimino tutte le occorrenze di dumpMessaggio_contenuto non presenti nell'update

  688.         ISQLQueryObject sqlQueryObjectUpdate_contenutodeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  689.         sqlQueryObjectUpdate_contenutodeleteEngineList.setANDLogicOperator(true);
  690.         sqlQueryObjectUpdate_contenutodeleteEngineList.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  691.         java.util.List<JDBCObject> jdbcObjects_dumpMessaggio_contenutodeleteEngine = new java.util.ArrayList<>();

  692.         sqlQueryObjectUpdate_contenutodeleteEngineList.addWhereCondition("id_messaggio=?");
  693.         jdbcObjects_dumpMessaggio_contenutodeleteEngine.add(new JDBCObject(dumpMessaggio.getId(), Long.class));

  694.         StringBuilder marks_dumpMessaggio_contenuto = new StringBuilder();
  695.         if(ids_dumpMessaggio_contenuto_da_non_eliminare.size() > 0) {
  696.             for(Long ids : ids_dumpMessaggio_contenuto_da_non_eliminare) {
  697.                 if(marks_dumpMessaggio_contenuto.length() > 0) {
  698.                     marks_dumpMessaggio_contenuto.append(",");
  699.                 }
  700.                 marks_dumpMessaggio_contenuto.append("?");
  701.                 jdbcObjects_dumpMessaggio_contenutodeleteEngine.add(new JDBCObject(ids, Long.class));

  702.             }
  703.             sqlQueryObjectUpdate_contenutodeleteEngineList.addWhereCondition("id NOT IN ("+marks_dumpMessaggio_contenuto.toString()+")");
  704.         }

  705.         jdbcUtilities.execute(sqlQueryObjectUpdate_contenutodeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_dumpMessaggio_contenutodeleteEngine.toArray(new JDBCObject[]{}));



  706.     }
  707.    
  708.     @Override
  709.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  710.        
  711.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  712.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  713.                 this.getMapTableToPKColumnEngine(),
  714.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  715.                 this.getDumpMessaggioFieldConverter(), this, null, updateFields);
  716.     }
  717.    
  718.     @Override
  719.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, IExpression condition, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  720.        
  721.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  722.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  723.                 this.getMapTableToPKColumnEngine(),
  724.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  725.                 this.getDumpMessaggioFieldConverter(), this, condition, updateFields);
  726.     }
  727.    
  728.     @Override
  729.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, UpdateModel ... updateModels) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  730.        
  731.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  732.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  733.                 this.getMapTableToPKColumnEngine(),
  734.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  735.                 this.getDumpMessaggioFieldConverter(), this, updateModels);
  736.     }  
  737.    
  738.     @Override
  739.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  740.         java.util.List<Object> ids = new java.util.ArrayList<>();
  741.         ids.add(tableId);
  742.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  743.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  744.                 this.getMapTableToPKColumnEngine(),
  745.                 ids,
  746.                 this.getDumpMessaggioFieldConverter(), this, null, updateFields);
  747.     }
  748.    
  749.     @Override
  750.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, IExpression condition, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  751.         java.util.List<Object> ids = new java.util.ArrayList<>();
  752.         ids.add(tableId);
  753.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  754.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  755.                 this.getMapTableToPKColumnEngine(),
  756.                 ids,
  757.                 this.getDumpMessaggioFieldConverter(), this, condition, updateFields);
  758.     }
  759.    
  760.     @Override
  761.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, UpdateModel ... updateModels) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  762.         java.util.List<Object> ids = new java.util.ArrayList<>();
  763.         ids.add(tableId);
  764.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  765.                 this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()),
  766.                 this.getMapTableToPKColumnEngine(),
  767.                 ids,
  768.                 this.getDumpMessaggioFieldConverter(), this, updateModels);
  769.     }
  770.    
  771.     @Override
  772.     public void updateOrCreate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio oldId, DumpMessaggio dumpMessaggio, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {
  773.    
  774.         if(this.exists(jdbcProperties, log, connection, sqlQueryObject, oldId)) {
  775.             this.update(jdbcProperties, log, connection, sqlQueryObject, oldId, dumpMessaggio,idMappingResolutionBehaviour);
  776.         } else {
  777.             this.create(jdbcProperties, log, connection, sqlQueryObject, dumpMessaggio,idMappingResolutionBehaviour);
  778.         }
  779.        
  780.     }
  781.    
  782.     @Override
  783.     public void updateOrCreate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, DumpMessaggio dumpMessaggio, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {
  784.         if(this.exists(jdbcProperties, log, connection, sqlQueryObject, tableId)) {
  785.             this.update(jdbcProperties, log, connection, sqlQueryObject, tableId, dumpMessaggio,idMappingResolutionBehaviour);
  786.         } else {
  787.             this.create(jdbcProperties, log, connection, sqlQueryObject, dumpMessaggio,idMappingResolutionBehaviour);
  788.         }
  789.     }
  790.    
  791.     @Override
  792.     public void delete(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, DumpMessaggio dumpMessaggio) throws NotImplementedException,ServiceException,Exception {
  793.        
  794.        
  795.         Long longId = null;
  796.         if( (dumpMessaggio.getId()!=null) && (dumpMessaggio.getId()>0) ){
  797.             longId = dumpMessaggio.getId();
  798.         }
  799.         else{
  800.             IdDumpMessaggio idDumpMessaggio = this.convertToId(jdbcProperties,log,connection,sqlQueryObject,dumpMessaggio);
  801.             longId = this.findIdDumpMessaggio(jdbcProperties,log,connection,sqlQueryObject,idDumpMessaggio,false);
  802.             if(longId == null){
  803.                 return; // entry not exists
  804.             }
  805.         }      
  806.        
  807.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, longId);
  808.        
  809.     }

  810.     private void deleteEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long id) throws NotImplementedException,ServiceException,Exception {
  811.    
  812.         if(id==null) {
  813.             throw new ServiceException("Id is null");
  814.         }
  815.         if(id!=null && id.longValue()<=0){
  816.             throw new ServiceException("Id is less equals 0");
  817.         }
  818.        
  819.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  820.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  821.        
  822.         ISQLQueryObject sqlQueryObjectDelete = sqlQueryObject.newSQLQueryObject();
  823.        

  824.         //Recupero oggetto _dumpMessaggio_multipartHeader
  825.         ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_multipartHeadergetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  826.         sqlQueryObjectDelete_dumpMessaggio_multipartHeadergetEngineToDelete.setANDLogicOperator(true);
  827.         sqlQueryObjectDelete_dumpMessaggio_multipartHeadergetEngineToDelete.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  828.         sqlQueryObjectDelete_dumpMessaggio_multipartHeadergetEngineToDelete.addWhereCondition("id_messaggio=?");
  829.         java.util.List<Object> dumpMessaggio_multipartHeader_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_dumpMessaggio_multipartHeadergetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().MULTIPART_HEADER, this.getDumpMessaggioFetch(),
  830.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  831.         // for dumpMessaggio_multipartHeader
  832.         for (Object dumpMessaggio_multipartHeader_object : dumpMessaggio_multipartHeader_toDelete_list) {
  833.             DumpMultipartHeader dumpMessaggio_multipartHeader = (DumpMultipartHeader) dumpMessaggio_multipartHeader_object;

  834.             // Object dumpMessaggio_multipartHeader
  835.             ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_multipartHeader = sqlQueryObjectDelete.newSQLQueryObject();
  836.             sqlQueryObjectDelete_dumpMessaggio_multipartHeader.setANDLogicOperator(true);
  837.             sqlQueryObjectDelete_dumpMessaggio_multipartHeader.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  838.             sqlQueryObjectDelete_dumpMessaggio_multipartHeader.addWhereCondition("id=?");

  839.             // Delete dumpMessaggio_multipartHeader
  840.             if(dumpMessaggio_multipartHeader != null){
  841.                 jdbcUtilities.execute(sqlQueryObjectDelete_dumpMessaggio_multipartHeader.createSQLDelete(), jdbcProperties.isShowSql(),
  842.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_multipartHeader.getId(),Long.class));
  843.             }
  844.         } // fine for dumpMessaggio_multipartHeader

  845.         //Recupero oggetto _dumpMessaggio_headerTrasporto
  846.         ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_headerTrasportogetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  847.         sqlQueryObjectDelete_dumpMessaggio_headerTrasportogetEngineToDelete.setANDLogicOperator(true);
  848.         sqlQueryObjectDelete_dumpMessaggio_headerTrasportogetEngineToDelete.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  849.         sqlQueryObjectDelete_dumpMessaggio_headerTrasportogetEngineToDelete.addWhereCondition("id_messaggio=?");
  850.         java.util.List<Object> dumpMessaggio_headerTrasporto_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_dumpMessaggio_headerTrasportogetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().HEADER_TRASPORTO, this.getDumpMessaggioFetch(),
  851.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  852.         // for dumpMessaggio_headerTrasporto
  853.         for (Object dumpMessaggio_headerTrasporto_object : dumpMessaggio_headerTrasporto_toDelete_list) {
  854.             DumpHeaderTrasporto dumpMessaggio_headerTrasporto = (DumpHeaderTrasporto) dumpMessaggio_headerTrasporto_object;

  855.             // Object dumpMessaggio_headerTrasporto
  856.             ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_headerTrasporto = sqlQueryObjectDelete.newSQLQueryObject();
  857.             sqlQueryObjectDelete_dumpMessaggio_headerTrasporto.setANDLogicOperator(true);
  858.             sqlQueryObjectDelete_dumpMessaggio_headerTrasporto.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  859.             sqlQueryObjectDelete_dumpMessaggio_headerTrasporto.addWhereCondition("id=?");

  860.             // Delete dumpMessaggio_headerTrasporto
  861.             if(dumpMessaggio_headerTrasporto != null){
  862.                 jdbcUtilities.execute(sqlQueryObjectDelete_dumpMessaggio_headerTrasporto.createSQLDelete(), jdbcProperties.isShowSql(),
  863.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_headerTrasporto.getId(),Long.class));
  864.             }
  865.         } // fine for dumpMessaggio_headerTrasporto

  866.         //Recupero oggetto _dumpMessaggio_allegato
  867.         ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_allegatogetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  868.         sqlQueryObjectDelete_dumpMessaggio_allegatogetEngineToDelete.setANDLogicOperator(true);
  869.         sqlQueryObjectDelete_dumpMessaggio_allegatogetEngineToDelete.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  870.         sqlQueryObjectDelete_dumpMessaggio_allegatogetEngineToDelete.addWhereCondition("id_messaggio=?");
  871.         java.util.List<Object> dumpMessaggio_allegato_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_dumpMessaggio_allegatogetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().ALLEGATO, this.getDumpMessaggioFetch(),
  872.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  873.         // for dumpMessaggio_allegato
  874.         for (Object dumpMessaggio_allegato_object : dumpMessaggio_allegato_toDelete_list) {
  875.             DumpAllegato dumpMessaggio_allegato = (DumpAllegato) dumpMessaggio_allegato_object;

  876.             if(dumpMessaggio_allegato==null) {
  877.                 continue;
  878.             }
  879.            
  880.             //Recupero oggetto _dumpMessaggio_allegato_header
  881.             ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_allegato_dumpMessaggio_allegato_headergetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  882.             sqlQueryObjectDelete_dumpMessaggio_allegato_dumpMessaggio_allegato_headergetEngineToDelete.setANDLogicOperator(true);
  883.             sqlQueryObjectDelete_dumpMessaggio_allegato_dumpMessaggio_allegato_headergetEngineToDelete.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  884.             sqlQueryObjectDelete_dumpMessaggio_allegato_dumpMessaggio_allegato_headergetEngineToDelete.addWhereCondition("id_allegato=?");
  885.             java.util.List<Object> dumpMessaggio_allegato_header_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_dumpMessaggio_allegato_dumpMessaggio_allegato_headergetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().ALLEGATO.HEADER, this.getDumpMessaggioFetch(),
  886.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getId(),Long.class));

  887.             // for dumpMessaggio_allegato_header
  888.             for (Object dumpMessaggio_allegato_header_object : dumpMessaggio_allegato_header_toDelete_list) {
  889.                 DumpHeaderAllegato dumpMessaggio_allegato_header = (DumpHeaderAllegato) dumpMessaggio_allegato_header_object;

  890.                 // Object dumpMessaggio_allegato_header
  891.                 ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_allegato_header = sqlQueryObjectDelete.newSQLQueryObject();
  892.                 sqlQueryObjectDelete_dumpMessaggio_allegato_header.setANDLogicOperator(true);
  893.                 sqlQueryObjectDelete_dumpMessaggio_allegato_header.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  894.                 sqlQueryObjectDelete_dumpMessaggio_allegato_header.addWhereCondition("id=?");

  895.                 // Delete dumpMessaggio_allegato_header
  896.                 if(dumpMessaggio_allegato_header != null){
  897.                     jdbcUtilities.execute(sqlQueryObjectDelete_dumpMessaggio_allegato_header.createSQLDelete(), jdbcProperties.isShowSql(),
  898.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato_header.getId(),Long.class));
  899.                 }
  900.             } // fine for dumpMessaggio_allegato_header

  901.             // Object dumpMessaggio_allegato
  902.             ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_allegato = sqlQueryObjectDelete.newSQLQueryObject();
  903.             sqlQueryObjectDelete_dumpMessaggio_allegato.setANDLogicOperator(true);
  904.             sqlQueryObjectDelete_dumpMessaggio_allegato.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  905.             sqlQueryObjectDelete_dumpMessaggio_allegato.addWhereCondition("id=?");

  906.             // Delete dumpMessaggio_allegato
  907.             if(dumpMessaggio_allegato != null){
  908.                 jdbcUtilities.execute(sqlQueryObjectDelete_dumpMessaggio_allegato.createSQLDelete(), jdbcProperties.isShowSql(),
  909.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_allegato.getId(),Long.class));
  910.             }
  911.         } // fine for dumpMessaggio_allegato

  912.         //Recupero oggetto _dumpMessaggio_contenuto
  913.         ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_contenutogetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  914.         sqlQueryObjectDelete_dumpMessaggio_contenutogetEngineToDelete.setANDLogicOperator(true);
  915.         sqlQueryObjectDelete_dumpMessaggio_contenutogetEngineToDelete.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  916.         sqlQueryObjectDelete_dumpMessaggio_contenutogetEngineToDelete.addWhereCondition("id_messaggio=?");
  917.         java.util.List<Object> dumpMessaggio_contenuto_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_dumpMessaggio_contenutogetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().CONTENUTO, this.getDumpMessaggioFetch(),
  918.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  919.         // for dumpMessaggio_contenuto
  920.         for (Object dumpMessaggio_contenuto_object : dumpMessaggio_contenuto_toDelete_list) {
  921.             DumpContenuto dumpMessaggio_contenuto = (DumpContenuto) dumpMessaggio_contenuto_object;

  922.             // Object dumpMessaggio_contenuto
  923.             ISQLQueryObject sqlQueryObjectDelete_dumpMessaggio_contenuto = sqlQueryObjectDelete.newSQLQueryObject();
  924.             sqlQueryObjectDelete_dumpMessaggio_contenuto.setANDLogicOperator(true);
  925.             sqlQueryObjectDelete_dumpMessaggio_contenuto.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  926.             sqlQueryObjectDelete_dumpMessaggio_contenuto.addWhereCondition("id=?");

  927.             // Delete dumpMessaggio_contenuto
  928.             if(dumpMessaggio_contenuto != null){
  929.                 jdbcUtilities.execute(sqlQueryObjectDelete_dumpMessaggio_contenuto.createSQLDelete(), jdbcProperties.isShowSql(),
  930.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(dumpMessaggio_contenuto.getId(),Long.class));
  931.             }
  932.         } // fine for dumpMessaggio_contenuto

  933.         // Object dumpMessaggio
  934.         sqlQueryObjectDelete.setANDLogicOperator(true);
  935.         sqlQueryObjectDelete.addDeleteTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  936.         if(id != null)
  937.             sqlQueryObjectDelete.addWhereCondition("id=?");

  938.         // Delete dumpMessaggio
  939.         jdbcUtilities.execute(sqlQueryObjectDelete.createSQLDelete(), jdbcProperties.isShowSql(),
  940.             new JDBCObject(id,Long.class));

  941.     }

  942.     @Override
  943.     public void deleteById(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio idDumpMessaggio) throws NotImplementedException,ServiceException,Exception {

  944.         Long id = null;
  945.         try{
  946.             id = this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObject, idDumpMessaggio, true);
  947.         }catch(NotFoundException notFound){
  948.             return;
  949.         }
  950.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, id);
  951.        
  952.     }
  953.    
  954.     @Override
  955.     public NonNegativeNumber deleteAll(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject) throws NotImplementedException,ServiceException,Exception {
  956.        
  957.         return this.deleteAll(jdbcProperties, log, connection, sqlQueryObject, new JDBCExpression(this.getDumpMessaggioFieldConverter()));

  958.     }

  959.     @Override
  960.     public NonNegativeNumber deleteAll(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws NotImplementedException, ServiceException,Exception {

  961.         java.util.List<Long> lst = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, new JDBCPaginatedExpression(expression));
  962.        
  963.         for(Long id : lst) {
  964.             this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, id);
  965.         }
  966.        
  967.         return new NonNegativeNumber(lst.size());
  968.    
  969.     }



  970.     // -- DB
  971.    
  972.     @Override
  973.     public void deleteById(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws ServiceException, NotImplementedException, Exception {
  974.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  975.     }
  976.    
  977.     @Override
  978.     public int nativeUpdate(JDBCServiceManagerProperties jdbcProperties, Logger log,Connection connection,ISQLQueryObject sqlObject, String sql,Object ... param) throws ServiceException,NotImplementedException, Exception {
  979.    
  980.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.nativeUpdate(jdbcProperties, log, connection, sqlObject,
  981.                                                                                             sql,param);
  982.    
  983.     }
  984. }