JDBCDumpMessaggioServiceSearchImpl.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.util.List;
  22. import java.util.ArrayList;
  23. import java.util.Map;
  24. import java.io.InputStream;
  25. import java.sql.Connection;
  26. import java.sql.PreparedStatement;
  27. import java.sql.ResultSet;
  28. import java.sql.SQLException;

  29. import org.slf4j.Logger;
  30. import org.openspcoop2.utils.UtilsException;
  31. import org.openspcoop2.utils.jdbc.IJDBCAdapter;
  32. import org.openspcoop2.utils.jdbc.JDBCAdapterException;
  33. import org.openspcoop2.utils.jdbc.JDBCAdapterFactory;
  34. import org.openspcoop2.utils.sql.ISQLQueryObject;
  35. import org.openspcoop2.utils.sql.SQLQueryObjectException;
  36. import org.openspcoop2.generic_project.expression.impl.sql.ISQLFieldConverter;
  37. import org.openspcoop2.generic_project.dao.jdbc.utils.IJDBCFetch;
  38. import org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject;
  39. import org.openspcoop2.generic_project.dao.jdbc.IJDBCServiceSearchWithId;
  40. import org.openspcoop2.core.transazioni.IdDumpMessaggio;
  41. import org.openspcoop2.core.transazioni.constants.TipoMessaggio;
  42. import org.openspcoop2.generic_project.utils.UtilsTemplate;
  43. import org.openspcoop2.generic_project.beans.CustomField;
  44. import org.openspcoop2.generic_project.beans.InUse;
  45. import org.openspcoop2.generic_project.beans.IField;
  46. import org.openspcoop2.generic_project.beans.NonNegativeNumber;
  47. import org.openspcoop2.generic_project.beans.UnionExpression;
  48. import org.openspcoop2.generic_project.beans.Union;
  49. import org.openspcoop2.generic_project.beans.FunctionField;
  50. import org.openspcoop2.generic_project.exception.ExpressionException;
  51. import org.openspcoop2.generic_project.exception.MultipleResultException;
  52. import org.openspcoop2.generic_project.exception.NotFoundException;
  53. import org.openspcoop2.generic_project.exception.NotImplementedException;
  54. import org.openspcoop2.generic_project.exception.ServiceException;
  55. import org.openspcoop2.generic_project.expression.IExpression;
  56. import org.openspcoop2.generic_project.dao.jdbc.JDBCExpression;
  57. import org.openspcoop2.generic_project.dao.jdbc.JDBCPaginatedExpression;

  58. import org.openspcoop2.generic_project.dao.jdbc.JDBCServiceManagerProperties;
  59. import org.openspcoop2.core.transazioni.dao.jdbc.converter.DumpMessaggioFieldConverter;
  60. import org.openspcoop2.core.transazioni.dao.jdbc.fetch.DumpMessaggioFetch;
  61. import org.openspcoop2.core.transazioni.utils.DumpUtils;
  62. import org.openspcoop2.core.transazioni.DumpHeaderTrasporto;
  63. import org.openspcoop2.core.transazioni.DumpHeaderAllegato;
  64. import org.openspcoop2.core.transazioni.DumpContenuto;
  65. import org.openspcoop2.core.transazioni.DumpAllegato;
  66. import org.openspcoop2.core.transazioni.DumpMessaggio;
  67. import org.openspcoop2.core.transazioni.DumpMultipartHeader;

  68. /**    
  69.  * JDBCDumpMessaggioServiceSearchImpl
  70.  *
  71.  * @author Poli Andrea (poli@link.it)
  72.  * @author $Author$
  73.  * @version $Rev$, $Date$
  74.  */
  75. public class JDBCDumpMessaggioServiceSearchImpl implements IJDBCServiceSearchWithId<DumpMessaggio, IdDumpMessaggio, JDBCServiceManager> {

  76.     private DumpMessaggioFieldConverter _dumpMessaggioFieldConverter = null;
  77.     public DumpMessaggioFieldConverter getDumpMessaggioFieldConverter() {
  78.         if(this._dumpMessaggioFieldConverter==null){
  79.             this._dumpMessaggioFieldConverter = new DumpMessaggioFieldConverter(this.jdbcServiceManager.getJdbcProperties().getDatabaseType());
  80.         }      
  81.         return this._dumpMessaggioFieldConverter;
  82.     }
  83.     @Override
  84.     public ISQLFieldConverter getFieldConverter() {
  85.         return this.getDumpMessaggioFieldConverter();
  86.     }
  87.    
  88.     private DumpMessaggioFetch dumpMessaggioFetch = new DumpMessaggioFetch();
  89.     public DumpMessaggioFetch getDumpMessaggioFetch() {
  90.         return this.dumpMessaggioFetch;
  91.     }
  92.     @Override
  93.     public IJDBCFetch getFetch() {
  94.         return getDumpMessaggioFetch();
  95.     }
  96.    
  97.    
  98.     private JDBCServiceManager jdbcServiceManager = null;

  99.     @Override
  100.     public void setServiceManager(JDBCServiceManager serviceManager) throws ServiceException{
  101.         this.jdbcServiceManager = serviceManager;
  102.     }
  103.    
  104.     @Override
  105.     public JDBCServiceManager getServiceManager() throws ServiceException{
  106.         return this.jdbcServiceManager;
  107.     }
  108.    

  109.     @Override
  110.     public IdDumpMessaggio convertToId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, DumpMessaggio dumpMessaggio) throws NotImplementedException, ServiceException, Exception{
  111.    
  112.         IdDumpMessaggio idDumpMessaggio = new IdDumpMessaggio();
  113.         idDumpMessaggio.setIdTransazione(dumpMessaggio.getIdTransazione());
  114.         idDumpMessaggio.setTipoMessaggio(dumpMessaggio.getTipoMessaggio());
  115.         idDumpMessaggio.setServizioApplicativoErogatore(dumpMessaggio.getServizioApplicativoErogatore());
  116.         return idDumpMessaggio;
  117.     }
  118.    
  119.     @Override
  120.     public DumpMessaggio get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {
  121.         Long id_dumpMessaggio = ( (id!=null && id.getId()!=null && id.getId()>0) ? id.getId() : this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObject, id, true));
  122.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, id_dumpMessaggio,idMappingResolutionBehaviour);
  123.        
  124.        
  125.     }
  126.    
  127.     @Override
  128.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id) throws MultipleResultException, NotImplementedException, ServiceException,Exception {

  129.         Long id_dumpMessaggio = this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObject, id, false);
  130.         return id_dumpMessaggio != null && id_dumpMessaggio > 0;
  131.        
  132.     }
  133.    
  134.     @Override
  135.     public List<IdDumpMessaggio> findAllIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException, ServiceException,Exception {

  136.         List<IdDumpMessaggio> list = new ArrayList<IdDumpMessaggio>();

  137.         // TODO: implementazione non efficiente.
  138.         // Per ottenere una implementazione efficiente:
  139.         // 1. Usare metodo select di questa classe indirizzando esattamente i field necessari a create l'ID logico
  140.         // 2. Usare metodo getDumpMessaggioFetch() sul risultato della select per ottenere un oggetto DumpMessaggio
  141.         //    La fetch con la map inserirĂ  nell'oggetto solo i valori estratti
  142.         // 3. Usare metodo convertToId per ottenere l'id

  143.         List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  144.        
  145.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  146.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  147.        
  148.         for(Long id: ids) {
  149.            
  150.             ISQLQueryObject sqlQueryObjectReadIds = sqlQueryObject.newSQLQueryObject();
  151.             sqlQueryObjectReadIds.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  152.             sqlQueryObjectReadIds.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE, false));
  153.             sqlQueryObjectReadIds.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO, false));
  154.             sqlQueryObjectReadIds.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE, false));
  155.             sqlQueryObjectReadIds.addWhereCondition("id=?");
  156.            
  157.             List<Class<?>> returnTypes = new ArrayList<Class<?>>();
  158.             returnTypes.add(String.class);
  159.             returnTypes.add(String.class);
  160.             returnTypes.add(String.class);
  161.             JDBCObject param = new JDBCObject(id, Long.class);
  162.             List<Object> result = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectReadIds.toString(), jdbcProperties.isShowSql(), returnTypes, param);
  163.            
  164.             IdDumpMessaggio idDumpMessaggio = new IdDumpMessaggio();
  165.             idDumpMessaggio.setIdTransazione((String)result.get(0));
  166.             idDumpMessaggio.setTipoMessaggio(TipoMessaggio.toEnumConstant((String)result.get(1)));
  167.             Object sa = result.get(2);
  168.             if(sa!=null && sa instanceof String) {
  169.                 idDumpMessaggio.setServizioApplicativoErogatore((String)sa);
  170.             }
  171.             list.add(idDumpMessaggio);
  172.         }

  173.         return list;
  174.        
  175.     }
  176.    
  177.     @Override
  178.     public List<DumpMessaggio> findAll(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException, ServiceException,Exception {

  179.         List<DumpMessaggio> list = new ArrayList<DumpMessaggio>();
  180.        
  181.         // TODO: implementazione non efficiente.
  182.         // Per ottenere una implementazione efficiente:
  183.         // 1. Usare metodo select di questa classe indirizzando esattamente i field necessari
  184.         // 2. Usare metodo getDumpMessaggioFetch() sul risultato della select per ottenere un oggetto DumpMessaggio
  185.         //    La fetch con la map inserirĂ  nell'oggetto solo i valori estratti

  186.         List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  187.        
  188.         for(Long id: ids) {
  189.             list.add(this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour));
  190.         }

  191.         return list;      
  192.        
  193.     }
  194.    
  195.     @Override
  196.     public DumpMessaggio find(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour)
  197.         throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {

  198.         long id = this.findTableId(jdbcProperties, log, connection, sqlQueryObject, expression);
  199.         if(id>0){
  200.             return this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour);
  201.         }else{
  202.             throw new NotFoundException("Entry with id["+id+"] not found");
  203.         }
  204.        
  205.     }
  206.    
  207.     public JDBCDumpMessaggioStream getContentInputStream(JDBCServiceManagerProperties jdbcProperties, Logger log,
  208.             Connection connection, JDBCServiceManager jdbcServiceManager,
  209.             ISQLQueryObject sqlQueryObject, JDBCExpression expression)
  210.             throws NotFoundException, ServiceException {

  211.         long id = -1;
  212.         try {
  213.             id = this.findTableId(jdbcProperties, log, connection, sqlQueryObject, expression);
  214.         }catch(Exception e) {
  215.             throw new ServiceException(e.getMessage(),e);
  216.         }
  217.         if(id>0){
  218.             try {
  219.                 return getContentInputStream(connection, jdbcServiceManager,
  220.                         sqlQueryObject,
  221.                         id);
  222.             }catch(Exception e) {
  223.                 throw new ServiceException(e.getMessage(),e);
  224.             }
  225.         }else{
  226.             throw new NotFoundException("Entry with id["+id+"] not found");
  227.         }
  228.        
  229.     }
  230.     private JDBCDumpMessaggioStream getContentInputStream(Connection connection, JDBCServiceManager jdbcServiceManager,
  231.             ISQLQueryObject sqlQueryObject,
  232.             long id)
  233.             throws JDBCAdapterException, ExpressionException, SQLQueryObjectException, SQLException, UtilsException {
  234.         IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.getDumpMessaggioFieldConverter().getDatabaseType());
  235.         ISQLQueryObject sqlQueryObjectGetDumpMessaggio = buildSQLQueryObjectGetContentInputStream(sqlQueryObject);
  236.         ResultSet rs = null;
  237.         PreparedStatement pstmt = null;
  238.         try {
  239.             String query = sqlQueryObjectGetDumpMessaggio.createSQLQuery();
  240.             pstmt = connection.prepareStatement(query);
  241.             pstmt.setLong(1, id);
  242.             rs = pstmt.executeQuery();
  243.             if(rs.next()) {
  244.                 InputStream is = jdbcAdapter.getBinaryStream(rs, "contentBodyStream");
  245.                 return new JDBCDumpMessaggioStream(is,
  246.                         rs,pstmt,
  247.                         connection,jdbcServiceManager);
  248.             }
  249.             return null;
  250.         }finally {
  251.             /** OP-1635
  252.                 try {
  253.                     if(rs!=null) {
  254.                         rs.close();
  255.                     }
  256.                 }catch(Exception eClose) {
  257.                     // ignore
  258.                 }
  259.                 try {
  260.                     if(pstmt!=null) {
  261.                         pstmt.close();
  262.                     }
  263.                 }catch(Exception eClose)  {
  264.                     // ignore
  265.                 }
  266.             }
  267.             */
  268.         }
  269.     }
  270.     private ISQLQueryObject buildSQLQueryObjectGetContentInputStream(ISQLQueryObject sqlQueryObject) throws SQLQueryObjectException, ExpressionException {
  271.         ISQLQueryObject sqlQueryObjectGetDumpMessaggio = sqlQueryObject.newSQLQueryObject();
  272.          sqlQueryObjectGetDumpMessaggio.setANDLogicOperator(true);
  273.          sqlQueryObjectGetDumpMessaggio.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  274.          sqlQueryObjectGetDumpMessaggio.addSelectAliasField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().BODY,true),"contentBodyStream");
  275.          sqlQueryObjectGetDumpMessaggio.addWhereCondition("id=?");
  276.          return sqlQueryObjectGetDumpMessaggio;
  277.     }
  278.    
  279.     @Override
  280.     public NonNegativeNumber count(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws NotImplementedException, ServiceException,Exception {
  281.        
  282.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareCount(jdbcProperties, log, connection, sqlQueryObject, expression,
  283.                                                 this.getDumpMessaggioFieldConverter(), DumpMessaggio.model());
  284.        
  285.         sqlQueryObject.addSelectCountField(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model())+".id","tot",true);
  286.        
  287.         joinEngine(expression,sqlQueryObject);
  288.        
  289.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.count(jdbcProperties, log, connection, sqlQueryObject, expression,
  290.                                                                             this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),listaQuery);
  291.     }

  292.     @Override
  293.     public InUse inUse(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id) throws NotFoundException, NotImplementedException, ServiceException,Exception {
  294.        
  295.         Long id_dumpMessaggio = this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObject, id, true);
  296.         return this.inUseEngine(jdbcProperties, log, connection, sqlQueryObject, id_dumpMessaggio);
  297.        
  298.     }

  299.     @Override
  300.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  301.                                                     JDBCPaginatedExpression paginatedExpression, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  302.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  303.                                 paginatedExpression, false, field);
  304.     }
  305.    
  306.     @Override
  307.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  308.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  309.         List<Map<String,Object>> map =
  310.             this.select(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, distinct, new IField[]{field});
  311.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectSingleObject(map);
  312.     }
  313.    
  314.     @Override
  315.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  316.                                                     JDBCPaginatedExpression paginatedExpression, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  317.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  318.                                 paginatedExpression, false, field);
  319.     }
  320.    
  321.     @Override
  322.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  323.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  324.        
  325.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,field);
  326.         try{
  327.        
  328.             ISQLQueryObject sqlQueryObjectDistinct =
  329.                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(distinct,sqlQueryObject, paginatedExpression, log,
  330.                                                 this.getDumpMessaggioFieldConverter(), field);

  331.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, sqlQueryObjectDistinct);
  332.            
  333.         }finally{
  334.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,field);
  335.         }
  336.     }

  337.     @Override
  338.     public Object aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  339.                                                     JDBCExpression expression, FunctionField functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  340.         Map<String,Object> map =
  341.             this.aggregate(jdbcProperties, log, connection, sqlQueryObject, expression, new FunctionField[]{functionField});
  342.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectAggregateObject(map,functionField);
  343.     }
  344.    
  345.     @Override
  346.     public Map<String,Object> aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  347.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {                                                  
  348.        
  349.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  350.         try{
  351.             List<Map<String,Object>> list = selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  352.             return list.get(0);
  353.         }finally{
  354.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  355.         }
  356.     }

  357.     @Override
  358.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  359.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  360.        
  361.         if(expression.getGroupByFields().isEmpty()){
  362.             throw new ServiceException("GroupBy conditions not found in expression");
  363.         }
  364.        
  365.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  366.         try{
  367.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  368.         }finally{
  369.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  370.         }
  371.     }
  372.    

  373.     @Override
  374.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  375.                                                     JDBCPaginatedExpression paginatedExpression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  376.        
  377.         if(paginatedExpression.getGroupByFields().isEmpty()){
  378.             throw new ServiceException("GroupBy conditions not found in expression");
  379.         }
  380.        
  381.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,functionField);
  382.         try{
  383.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression);
  384.         }finally{
  385.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,functionField);
  386.         }
  387.     }
  388.    
  389.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  390.                                                 IExpression expression) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  391.         return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression, null);
  392.     }
  393.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  394.                                                 IExpression expression, ISQLQueryObject sqlQueryObjectDistinct) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  395.        
  396.         List<Object> listaQuery = new ArrayList<>();
  397.         List<JDBCObject> listaParams = new ArrayList<>();
  398.         List<Object> returnField = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSelect(jdbcProperties, log, connection, sqlQueryObject,
  399.                                 expression, this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  400.                                 listaQuery,listaParams);
  401.        
  402.         joinEngine(expression,sqlQueryObject);
  403.        
  404.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.select(jdbcProperties, log, connection,
  405.                                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(sqlQueryObject,sqlQueryObjectDistinct),
  406.                                         expression, this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  407.                                         listaQuery,listaParams,returnField);
  408.         if(list!=null && !list.isEmpty()){
  409.             return list;
  410.         }
  411.         else{
  412.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  413.         }
  414.     }
  415.    
  416.     @Override
  417.     public List<Map<String,Object>> union(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  418.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  419.        
  420.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  421.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  422.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnion(jdbcProperties, log, connection, sqlQueryObject,
  423.                                 this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  424.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  425.        
  426.         if(unionExpression!=null){
  427.             for (int i = 0; i < unionExpression.length; i++) {
  428.                 UnionExpression ue = unionExpression[i];
  429.                 IExpression expression = ue.getExpression();
  430.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  431.             }
  432.         }
  433.        
  434.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.union(jdbcProperties, log, connection, sqlQueryObject,
  435.                                         this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  436.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  437.         if(list!=null && !list.isEmpty()){
  438.             return list;
  439.         }
  440.         else{
  441.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  442.         }                              
  443.     }
  444.    
  445.     @Override
  446.     public NonNegativeNumber unionCount(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  447.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  448.        
  449.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  450.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  451.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnionCount(jdbcProperties, log, connection, sqlQueryObject,
  452.                                 this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  453.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  454.        
  455.         if(unionExpression!=null){
  456.             for (int i = 0; i < unionExpression.length; i++) {
  457.                 UnionExpression ue = unionExpression[i];
  458.                 IExpression expression = ue.getExpression();
  459.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  460.             }
  461.         }
  462.        
  463.         NonNegativeNumber number = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.unionCount(jdbcProperties, log, connection, sqlQueryObject,
  464.                                         this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(),
  465.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  466.         if(number!=null && number.longValue()>=0){
  467.             return number;
  468.         }
  469.         else{
  470.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  471.         }
  472.     }



  473.     // -- ConstructorExpression

  474.     @Override
  475.     public JDBCExpression newExpression(Logger log) throws NotImplementedException, ServiceException {
  476.         try{
  477.             return new JDBCExpression(this.getDumpMessaggioFieldConverter());
  478.         }catch(Exception e){
  479.             throw new ServiceException(e);
  480.         }
  481.     }


  482.     @Override
  483.     public JDBCPaginatedExpression newPaginatedExpression(Logger log) throws NotImplementedException, ServiceException {
  484.         try{
  485.             return new JDBCPaginatedExpression(this.getDumpMessaggioFieldConverter());
  486.         }catch(Exception e){
  487.             throw new ServiceException(e);
  488.         }
  489.     }
  490.    
  491.     @Override
  492.     public JDBCExpression toExpression(JDBCPaginatedExpression paginatedExpression, Logger log) throws NotImplementedException, ServiceException {
  493.         try{
  494.             return new JDBCExpression(paginatedExpression);
  495.         }catch(Exception e){
  496.             throw new ServiceException(e);
  497.         }
  498.     }

  499.     @Override
  500.     public JDBCPaginatedExpression toPaginatedExpression(JDBCExpression expression, Logger log) throws NotImplementedException, ServiceException {
  501.         try{
  502.             return new JDBCPaginatedExpression(expression);
  503.         }catch(Exception e){
  504.             throw new ServiceException(e);
  505.         }
  506.     }
  507.    
  508.    
  509.    
  510.     // -- DB

  511.     @Override
  512.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, DumpMessaggio obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  513.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  514.                 this.get(jdbcProperties,log,connection,sqlQueryObject,id,null));
  515.     }
  516.    
  517.     @Override
  518.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, DumpMessaggio obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  519.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  520.                 this.get(jdbcProperties,log,connection,sqlQueryObject,tableId,null));
  521.     }
  522.     private void _mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, DumpMessaggio obj, DumpMessaggio imgSaved) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  523.         if(imgSaved==null){
  524.             return;
  525.         }
  526.         obj.setId(imgSaved.getId());
  527.         if(obj.getMultipartHeaderList()!=null){
  528.             List<org.openspcoop2.core.transazioni.DumpMultipartHeader> listObj_ = obj.getMultipartHeaderList();
  529.             for(org.openspcoop2.core.transazioni.DumpMultipartHeader itemObj_ : listObj_){
  530.                 org.openspcoop2.core.transazioni.DumpMultipartHeader itemAlreadySaved_ = null;
  531.                 if(imgSaved.getMultipartHeaderList()!=null){
  532.                     List<org.openspcoop2.core.transazioni.DumpMultipartHeader> listImgSaved_ = imgSaved.getMultipartHeaderList();
  533.                     for(org.openspcoop2.core.transazioni.DumpMultipartHeader itemImgSaved_ : listImgSaved_){
  534.                         boolean objEqualsToImgSaved_ = false;
  535.                         objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getNome(),itemImgSaved_.getNome());
  536.                         if(objEqualsToImgSaved_){
  537.                             itemAlreadySaved_=itemImgSaved_;
  538.                             break;
  539.                         }
  540.                     }
  541.                 }
  542.                 if(itemAlreadySaved_!=null){
  543.                     itemObj_.setId(itemAlreadySaved_.getId());
  544.                 }
  545.             }
  546.         }
  547.         if(obj.getHeaderTrasportoList()!=null){
  548.             List<org.openspcoop2.core.transazioni.DumpHeaderTrasporto> listObj_ = obj.getHeaderTrasportoList();
  549.             for(org.openspcoop2.core.transazioni.DumpHeaderTrasporto itemObj_ : listObj_){
  550.                 org.openspcoop2.core.transazioni.DumpHeaderTrasporto itemAlreadySaved_ = null;
  551.                 if(imgSaved.getHeaderTrasportoList()!=null){
  552.                     List<org.openspcoop2.core.transazioni.DumpHeaderTrasporto> listImgSaved_ = imgSaved.getHeaderTrasportoList();
  553.                     for(org.openspcoop2.core.transazioni.DumpHeaderTrasporto itemImgSaved_ : listImgSaved_){
  554.                         boolean objEqualsToImgSaved_ = false;
  555.                         objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getNome(),itemImgSaved_.getNome());
  556.                         if(objEqualsToImgSaved_){
  557.                             itemAlreadySaved_=itemImgSaved_;
  558.                             break;
  559.                         }
  560.                     }
  561.                 }
  562.                 if(itemAlreadySaved_!=null){
  563.                     itemObj_.setId(itemAlreadySaved_.getId());
  564.                 }
  565.             }
  566.         }
  567.         if(obj.getAllegatoList()!=null){
  568.             List<org.openspcoop2.core.transazioni.DumpAllegato> listObj_ = obj.getAllegatoList();
  569.             for(org.openspcoop2.core.transazioni.DumpAllegato itemObj_ : listObj_){
  570.                 org.openspcoop2.core.transazioni.DumpAllegato itemAlreadySaved_ = null;
  571.                 if(imgSaved.getAllegatoList()!=null){
  572.                     List<org.openspcoop2.core.transazioni.DumpAllegato> listImgSaved_ = imgSaved.getAllegatoList();
  573.                     for(org.openspcoop2.core.transazioni.DumpAllegato itemImgSaved_ : listImgSaved_){
  574.                         boolean objEqualsToImgSaved_ = false;
  575.                         objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getContentId(),itemImgSaved_.getContentId());
  576.                         if(objEqualsToImgSaved_){
  577.                             itemAlreadySaved_=itemImgSaved_;
  578.                             break;
  579.                         }
  580.                     }
  581.                 }
  582.                 if(itemAlreadySaved_!=null){
  583.                     itemObj_.setId(itemAlreadySaved_.getId());
  584.                     if(itemObj_.getHeaderList()!=null){
  585.                         List<org.openspcoop2.core.transazioni.DumpHeaderAllegato> listObj_allegato = itemObj_.getHeaderList();
  586.                         for(org.openspcoop2.core.transazioni.DumpHeaderAllegato itemObj_allegato : listObj_allegato){
  587.                             org.openspcoop2.core.transazioni.DumpHeaderAllegato itemAlreadySaved_allegato = null;
  588.                             if(itemAlreadySaved_.getHeaderList()!=null){
  589.                                 List<org.openspcoop2.core.transazioni.DumpHeaderAllegato> listImgSaved_allegato = itemAlreadySaved_.getHeaderList();
  590.                                 for(org.openspcoop2.core.transazioni.DumpHeaderAllegato itemImgSaved_allegato : listImgSaved_allegato){
  591.                                     boolean objEqualsToImgSaved_allegato = false;
  592.                                     objEqualsToImgSaved_allegato = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_allegato.getNome(),itemImgSaved_allegato.getNome());
  593.                                     if(objEqualsToImgSaved_allegato){
  594.                                         itemAlreadySaved_allegato=itemImgSaved_allegato;
  595.                                         break;
  596.                                     }
  597.                                 }
  598.                             }
  599.                             if(itemAlreadySaved_allegato!=null){
  600.                                 itemObj_allegato.setId(itemAlreadySaved_allegato.getId());
  601.                             }
  602.                         }
  603.                     }
  604.                 }
  605.             }
  606.         }
  607.         if(obj.getContenutoList()!=null){
  608.             List<org.openspcoop2.core.transazioni.DumpContenuto> listObj_ = obj.getContenutoList();
  609.             for(org.openspcoop2.core.transazioni.DumpContenuto itemObj_ : listObj_){
  610.                 org.openspcoop2.core.transazioni.DumpContenuto itemAlreadySaved_ = null;
  611.                 if(imgSaved.getContenutoList()!=null){
  612.                     List<org.openspcoop2.core.transazioni.DumpContenuto> listImgSaved_ = imgSaved.getContenutoList();
  613.                     for(org.openspcoop2.core.transazioni.DumpContenuto itemImgSaved_ : listImgSaved_){
  614.                         boolean objEqualsToImgSaved_ = false;
  615.                         objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getNome(),itemImgSaved_.getNome());
  616.                         if(objEqualsToImgSaved_){
  617.                             itemAlreadySaved_=itemImgSaved_;
  618.                             break;
  619.                         }
  620.                     }
  621.                 }
  622.                 if(itemAlreadySaved_!=null){
  623.                     itemObj_.setId(itemAlreadySaved_.getId());
  624.                 }
  625.             }
  626.         }

  627.     }
  628.    
  629.     @Override
  630.     public DumpMessaggio get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  631.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId), idMappingResolutionBehaviour);
  632.     }
  633.    
  634.     protected DumpMessaggio getEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  635.    
  636.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  637.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  638.        
  639.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();
  640.                
  641.         DumpMessaggio dumpMessaggio = new DumpMessaggio();
  642.        
  643.         List<JDBCObject> listJDBCObject = new ArrayList<>();
  644.        
  645.         // Object dumpMessaggio
  646.         ISQLQueryObject sqlQueryObjectGet_dumpMessaggio = sqlQueryObjectGet.newSQLQueryObject();
  647.         sqlQueryObjectGet_dumpMessaggio.setANDLogicOperator(true);
  648.         sqlQueryObjectGet_dumpMessaggio.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  649.         sqlQueryObjectGet_dumpMessaggio.addSelectField("id");
  650.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,true));
  651.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().PROTOCOLLO,true));
  652.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,true));
  653.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DATA_CONSEGNA_EROGATORE,true));
  654.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO,true));
  655.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().FORMATO_MESSAGGIO,true));
  656.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_TYPE,true));
  657.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENT_LENGTH,true));
  658.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_TYPE,true));
  659.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_ID,true));
  660.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_CONTENT_LOCATION,true));
  661.         DumpUtils.selectContentByThreshold(sqlQueryObjectGet_dumpMessaggio, this.getDumpMessaggioFieldConverter(), listJDBCObject);
  662.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().DUMP_TIMESTAMP,true));
  663.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_HEADER,true));
  664.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_FILENAME,true));
  665.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONTENT,true));
  666.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_CONFIG_ID,true));
  667.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESS_TIMESTAMP,true));
  668.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().POST_PROCESSED,true));
  669.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER_EXT,true));
  670.         sqlQueryObjectGet_dumpMessaggio.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_EXT,true));
  671.         sqlQueryObjectGet_dumpMessaggio.addWhereCondition("id=?");

  672.         // Get dumpMessaggio
  673.         listJDBCObject.add(new JDBCObject(tableId,Long.class));
  674.         dumpMessaggio = (DumpMessaggio) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_dumpMessaggio.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model(), this.getDumpMessaggioFetch(),
  675.                 listJDBCObject.toArray(new JDBCObject[1]));



  676.         // Object dumpMessaggio_dumpMultipartHeader
  677.         ISQLQueryObject sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader = sqlQueryObjectGet.newSQLQueryObject();
  678.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.setANDLogicOperator(true);
  679.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER));
  680.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addSelectField("id");
  681.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.NOME,true));
  682.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.VALORE,true));
  683.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().MULTIPART_HEADER.DUMP_TIMESTAMP,true));
  684.         sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.addWhereCondition("id_messaggio=?");

  685.         // Get dumpMessaggio_dumpMultipartHeader
  686.         java.util.List<Object> dumpMessaggio_dumpMultipartHeader_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_dumpMessaggio_dumpMultipartHeader.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().MULTIPART_HEADER, this.getDumpMessaggioFetch(),
  687.             new JDBCObject(dumpMessaggio.getId(),Long.class));

  688.         if(dumpMessaggio_dumpMultipartHeader_list != null) {
  689.             for (Object dumpMessaggio_dumpMultipartHeader_object: dumpMessaggio_dumpMultipartHeader_list) {
  690.                 DumpMultipartHeader dumpMessaggio_dumpMultipartHeader = (DumpMultipartHeader) dumpMessaggio_dumpMultipartHeader_object;

  691.                 // Bug fix OPPT-466 per gestione empty string as null on oracle
  692.                 // Rilasciare il vincolo di not null 'fisico' sul database.
  693.                 // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  694.                 // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  695.                 if(dumpMessaggio_dumpMultipartHeader.getValore()==null){
  696.                     dumpMessaggio_dumpMultipartHeader.setValore("");
  697.                 }

  698.                 dumpMessaggio.addMultipartHeader(dumpMessaggio_dumpMultipartHeader);
  699.             }
  700.         }

  701.         // Object dumpMessaggio_dumpHeaderTrasporto
  702.         ISQLQueryObject sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto = sqlQueryObjectGet.newSQLQueryObject();
  703.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.setANDLogicOperator(true);
  704.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO));
  705.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addSelectField("id");
  706.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.NOME,true));
  707.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.VALORE,true));
  708.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().HEADER_TRASPORTO.DUMP_TIMESTAMP,true));
  709.         sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.addWhereCondition("id_messaggio=?");

  710.         // Get dumpMessaggio_dumpHeaderTrasporto
  711.         java.util.List<Object> dumpMessaggio_dumpHeaderTrasporto_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_dumpMessaggio_dumpHeaderTrasporto.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().HEADER_TRASPORTO, this.getDumpMessaggioFetch(),
  712.             new JDBCObject(dumpMessaggio.getId(),Long.class));

  713.         if(dumpMessaggio_dumpHeaderTrasporto_list != null) {
  714.             for (Object dumpMessaggio_dumpHeaderTrasporto_object: dumpMessaggio_dumpHeaderTrasporto_list) {
  715.                 DumpHeaderTrasporto dumpMessaggio_dumpHeaderTrasporto = (DumpHeaderTrasporto) dumpMessaggio_dumpHeaderTrasporto_object;

  716.                 // Bug fix OPPT-466 per gestione empty string as null on oracle
  717.                 // Rilasciare il vincolo di not null 'fisico' sul database.
  718.                 // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  719.                 // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  720.                 if(dumpMessaggio_dumpHeaderTrasporto.getValore()==null){
  721.                     dumpMessaggio_dumpHeaderTrasporto.setValore("");
  722.                 }

  723.                 dumpMessaggio.addHeaderTrasporto(dumpMessaggio_dumpHeaderTrasporto);
  724.             }
  725.         }

  726.         // Object dumpMessaggio_dumpAllegato
  727.         ISQLQueryObject sqlQueryObjectGet_dumpMessaggio_dumpAllegato = sqlQueryObjectGet.newSQLQueryObject();
  728.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.setANDLogicOperator(true);
  729.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  730.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField("id");
  731.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_TYPE,true));
  732.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_ID,true));
  733.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.CONTENT_LOCATION,true));
  734.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.ALLEGATO,true));
  735.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.DUMP_TIMESTAMP,true));
  736.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER_EXT,true));
  737.         sqlQueryObjectGet_dumpMessaggio_dumpAllegato.addWhereCondition("id_messaggio=?");

  738.         // Get dumpMessaggio_dumpAllegato
  739.         java.util.List<Object> dumpMessaggio_dumpAllegato_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_dumpMessaggio_dumpAllegato.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().ALLEGATO, this.getDumpMessaggioFetch(),
  740.             new JDBCObject(dumpMessaggio.getId(),Long.class));

  741.         if(dumpMessaggio_dumpAllegato_list != null) {
  742.             for (Object dumpMessaggio_dumpAllegato_object: dumpMessaggio_dumpAllegato_list) {
  743.                 DumpAllegato dumpMessaggio_dumpAllegato = (DumpAllegato) dumpMessaggio_dumpAllegato_object;



  744.                 // Object dumpMessaggio_dumpAllegato_dumpHeaderAllegato
  745.                 ISQLQueryObject sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato = sqlQueryObjectGet.newSQLQueryObject();
  746.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.setANDLogicOperator(true);
  747.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER));
  748.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addSelectField("id");
  749.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.NOME,true));
  750.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.VALORE,true));
  751.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ALLEGATO.HEADER.DUMP_TIMESTAMP,true));
  752.                 sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.addWhereCondition("id_allegato=?");

  753.                 // Get dumpMessaggio_dumpAllegato_dumpHeaderAllegato
  754.                 java.util.List<Object> dumpMessaggio_dumpAllegato_dumpHeaderAllegato_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_dumpMessaggio_dumpAllegato_dumpHeaderAllegato.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().ALLEGATO.HEADER, this.getDumpMessaggioFetch(),
  755.                     new JDBCObject(dumpMessaggio_dumpAllegato.getId(),Long.class));

  756.                 if(dumpMessaggio_dumpAllegato_dumpHeaderAllegato_list != null) {
  757.                     for (Object dumpMessaggio_dumpAllegato_dumpHeaderAllegato_object: dumpMessaggio_dumpAllegato_dumpHeaderAllegato_list) {
  758.                         DumpHeaderAllegato dumpMessaggio_dumpAllegato_dumpHeaderAllegato = (DumpHeaderAllegato) dumpMessaggio_dumpAllegato_dumpHeaderAllegato_object;

  759.                         // Bug fix OPPT-466 per gestione empty string as null on oracle
  760.                         // Rilasciare il vincolo di not null 'fisico' sul database.
  761.                         // Imporlo logicamente, in modo che non siano permessi insert o update con valori null.
  762.                         // Dopodichè, se nella get viene recuperato un valore null, deve essere trasformato in stringa vuota.
  763.                         if(dumpMessaggio_dumpAllegato_dumpHeaderAllegato.getValore()==null){
  764.                             dumpMessaggio_dumpAllegato_dumpHeaderAllegato.setValore("");
  765.                         }

  766.                         dumpMessaggio_dumpAllegato.addHeader(dumpMessaggio_dumpAllegato_dumpHeaderAllegato);
  767.                     }
  768.                 }
  769.                 dumpMessaggio.addAllegato(dumpMessaggio_dumpAllegato);
  770.             }
  771.         }

  772.         // Object dumpMessaggio_dumpContenuto
  773.         ISQLQueryObject sqlQueryObjectGet_dumpMessaggio_dumpContenuto = sqlQueryObjectGet.newSQLQueryObject();
  774.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.setANDLogicOperator(true);
  775.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO));
  776.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addSelectField("id");
  777.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.NOME,true));
  778.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE,true));
  779.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.VALORE_AS_BYTES,true));
  780.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().CONTENUTO.DUMP_TIMESTAMP,true));
  781.         sqlQueryObjectGet_dumpMessaggio_dumpContenuto.addWhereCondition("id_messaggio=?");

  782.         // Get dumpMessaggio_dumpContenuto
  783.         java.util.List<Object> dumpMessaggio_dumpContenuto_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_dumpMessaggio_dumpContenuto.createSQLQuery(), jdbcProperties.isShowSql(), DumpMessaggio.model().CONTENUTO, this.getDumpMessaggioFetch(),
  784.             new JDBCObject(dumpMessaggio.getId(),Long.class));

  785.         if(dumpMessaggio_dumpContenuto_list != null) {
  786.             for (Object dumpMessaggio_dumpContenuto_object: dumpMessaggio_dumpContenuto_list) {
  787.                 DumpContenuto dumpMessaggio_dumpContenuto = (DumpContenuto) dumpMessaggio_dumpContenuto_object;


  788.                 dumpMessaggio.addContenuto(dumpMessaggio_dumpContenuto);
  789.             }
  790.         }

  791.        
  792.         return dumpMessaggio;  
  793.    
  794.     }
  795.    
  796.     @Override
  797.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  798.         return this._exists(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  799.     }
  800.    
  801.     private boolean _exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  802.    
  803.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  804.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  805.                
  806.         boolean existsDumpMessaggio = false;

  807.         sqlQueryObject = sqlQueryObject.newSQLQueryObject();
  808.         sqlQueryObject.setANDLogicOperator(true);

  809.         sqlQueryObject.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  810.         sqlQueryObject.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,true));
  811.         sqlQueryObject.addWhereCondition("id=?");


  812.         // Exists dumpMessaggio
  813.         existsDumpMessaggio = jdbcUtilities.exists(sqlQueryObject.createSQLQuery(), jdbcProperties.isShowSql(),
  814.             new JDBCObject(tableId,Long.class));

  815.        
  816.         return existsDumpMessaggio;
  817.    
  818.     }
  819.    
  820.     private void joinEngine(IExpression expression, ISQLQueryObject sqlQueryObject) throws NotImplementedException, ServiceException, Exception{
  821.    
  822.         if(expression.inUseModel(DumpMessaggio.model().ALLEGATO,false)){
  823.             String tableName1 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO);
  824.             String tableName2 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model());
  825.             sqlQueryObject.addWhereCondition(tableName1+".id_messaggio="+tableName2+".id");
  826.         }
  827.         if(expression.inUseModel(DumpMessaggio.model().ALLEGATO.HEADER,false)){
  828.             String tableName1 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO.HEADER);
  829.             String tableName2 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO);
  830.             sqlQueryObject.addWhereCondition(tableName1+".id_allegato="+tableName2+".id");
  831.         }
  832.         if(expression.inUseModel(DumpMessaggio.model().CONTENUTO,false)){
  833.             String tableName1 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().CONTENUTO);
  834.             String tableName2 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model());
  835.             sqlQueryObject.addWhereCondition(tableName1+".id_messaggio="+tableName2+".id");
  836.         }
  837.         if(expression.inUseModel(DumpMessaggio.model().HEADER_TRASPORTO,false)){
  838.             String tableName1 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().HEADER_TRASPORTO);
  839.             String tableName2 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model());
  840.             sqlQueryObject.addWhereCondition(tableName1+".id_messaggio="+tableName2+".id");
  841.         }
  842.         if(expression.inUseModel(DumpMessaggio.model().MULTIPART_HEADER,false)){
  843.             String tableName1 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().MULTIPART_HEADER);
  844.             String tableName2 = this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model());
  845.             sqlQueryObject.addWhereCondition(tableName1+".id_messaggio="+tableName2+".id");
  846.         }
  847.        
  848.         if(expression.inUseModel(DumpMessaggio.model().ALLEGATO.HEADER,false)){
  849.             if(expression.inUseModel(DumpMessaggio.model().ALLEGATO,false)==false){
  850.                 sqlQueryObject.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model().ALLEGATO));
  851.             }
  852.         }
  853.        
  854.     }
  855.    
  856.     protected java.util.List<Object> getRootTablePrimaryKeyValuesEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id) throws NotFoundException, ServiceException, NotImplementedException, Exception{
  857.         // Identificativi
  858.         java.util.List<Object> rootTableIdValues = new java.util.ArrayList<>();
  859.         Long longId = this.findIdDumpMessaggio(jdbcProperties, log, connection, sqlQueryObject.newSQLQueryObject(), id, true);
  860.         rootTableIdValues.add(longId);
  861.         return rootTableIdValues;
  862.     }
  863.    
  864.     protected Map<String, List<IField>> getMapTableToPKColumnEngine() throws NotImplementedException, Exception{
  865.    
  866.         DumpMessaggioFieldConverter converter = this.getDumpMessaggioFieldConverter();
  867.         Map<String, List<IField>> mapTableToPKColumn = new java.util.HashMap<>();
  868.         UtilsTemplate<IField> utilities = new UtilsTemplate<>();

  869.         // DumpMessaggio.model()
  870.         mapTableToPKColumn.put(converter.toTable(DumpMessaggio.model()),
  871.             utilities.newList(
  872.                 new CustomField("id", Long.class, "id", converter.toTable(DumpMessaggio.model()))
  873.             ));

  874.         // DumpMessaggio.model().ALLEGATO
  875.         mapTableToPKColumn.put(converter.toTable(DumpMessaggio.model().ALLEGATO),
  876.             utilities.newList(
  877.                 new CustomField("id", Long.class, "id", converter.toTable(DumpMessaggio.model().ALLEGATO))
  878.             ));

  879.         // DumpMessaggio.model().CONTENUTO
  880.         mapTableToPKColumn.put(converter.toTable(DumpMessaggio.model().CONTENUTO),
  881.             utilities.newList(
  882.                 new CustomField("id", Long.class, "id", converter.toTable(DumpMessaggio.model().CONTENUTO))
  883.             ));

  884.         // DumpMessaggio.model().HEADER_TRASPORTO
  885.         mapTableToPKColumn.put(converter.toTable(DumpMessaggio.model().HEADER_TRASPORTO),
  886.             utilities.newList(
  887.                 new CustomField("id", Long.class, "id", converter.toTable(DumpMessaggio.model().HEADER_TRASPORTO))
  888.             ));

  889.        
  890.         return mapTableToPKColumn;      
  891.     }
  892.    
  893.     @Override
  894.     public List<Long> findAllTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression paginatedExpression) throws ServiceException, NotImplementedException, Exception {
  895.        
  896.         List<Long> list = new ArrayList<Long>();

  897.         sqlQueryObject.setSelectDistinct(true);
  898.         sqlQueryObject.setANDLogicOperator(true);
  899.         sqlQueryObject.addSelectField(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model())+".id");
  900.         Class<?> objectIdClass = Long.class;
  901.        
  902.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFindAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  903.                                                 this.getDumpMessaggioFieldConverter(), DumpMessaggio.model());
  904.        
  905.         joinEngine(paginatedExpression,sqlQueryObject);
  906.        
  907.         List<Object> listObjects = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.findAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  908.                                                                             this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(), objectIdClass, listaQuery);
  909.         for(Object object: listObjects) {
  910.             list.add((Long)object);
  911.         }

  912.         return list;
  913.        
  914.     }
  915.    
  916.     @Override
  917.     public long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws ServiceException, NotFoundException, MultipleResultException, NotImplementedException, Exception {
  918.    
  919.         sqlQueryObject.setSelectDistinct(true);
  920.         sqlQueryObject.setANDLogicOperator(true);
  921.         sqlQueryObject.addSelectField(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model())+".id");
  922.         Class<?> objectIdClass = Long.class;
  923.        
  924.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFind(jdbcProperties, log, connection, sqlQueryObject, expression,
  925.                                                 this.getDumpMessaggioFieldConverter(), DumpMessaggio.model());
  926.        
  927.         joinEngine(expression,sqlQueryObject);

  928.         Object res = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.find(jdbcProperties, log, connection, sqlQueryObject, expression,
  929.                                                         this.getDumpMessaggioFieldConverter(), DumpMessaggio.model(), objectIdClass, listaQuery);
  930.         if(res!=null && (((Long) res).longValue()>0) ){
  931.             return ((Long) res).longValue();
  932.         }
  933.         else{
  934.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  935.         }
  936.        
  937.     }

  938.     @Override
  939.     public InUse inUse(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws ServiceException, NotFoundException, NotImplementedException, Exception {
  940.         return this.inUseEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  941.     }

  942.     private InUse inUseEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId) throws ServiceException, NotFoundException, NotImplementedException, Exception {

  943.         InUse inUse = new InUse();
  944.         inUse.setInUse(false);
  945.        
  946.         /*
  947.          * TODO: implement code that checks whether the object identified by the id parameter is used by other objects
  948.         */
  949.        
  950.         // Delete this line when you have implemented the method
  951.         int throwNotImplemented = 1;
  952.         if(throwNotImplemented==1){
  953.                 throw new NotImplementedException("NotImplemented");
  954.         }
  955.         // Delete this line when you have implemented the method

  956.         return inUse;

  957.     }
  958.    
  959.     @Override
  960.     public IdDumpMessaggio findId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, boolean throwNotFound)
  961.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  962.        
  963.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  964.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  965.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();            

  966.         // Object _dumpMessaggio
  967.         sqlQueryObjectGet.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  968.         sqlQueryObjectGet.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,true));
  969.         sqlQueryObjectGet.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO,true));
  970.         sqlQueryObjectGet.addSelectField(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,true));
  971.         sqlQueryObjectGet.setANDLogicOperator(true);
  972.         sqlQueryObjectGet.addWhereCondition("id=?");

  973.         // Recupero _dumpMessaggio
  974.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_dumpMessaggio = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  975.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(tableId,Long.class)
  976.         };
  977.         List<Class<?>> listaFieldIdReturnType_dumpMessaggio = new ArrayList<Class<?>>();
  978.         listaFieldIdReturnType_dumpMessaggio.add(String.class);
  979.         listaFieldIdReturnType_dumpMessaggio.add(String.class);
  980.         listaFieldIdReturnType_dumpMessaggio.add(String.class);
  981.         IdDumpMessaggio id_dumpMessaggio = null;
  982.         List<Object> listaFieldId_dumpMessaggio = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  983.                 listaFieldIdReturnType_dumpMessaggio, searchParams_dumpMessaggio);
  984.         if(listaFieldId_dumpMessaggio==null || listaFieldId_dumpMessaggio.size()<=0){
  985.             if(throwNotFound){
  986.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  987.             }
  988.         }
  989.         else{
  990.             // set _dumpMessaggio
  991.             id_dumpMessaggio = new IdDumpMessaggio();
  992.             id_dumpMessaggio.setIdTransazione((String)listaFieldId_dumpMessaggio.get(0));
  993.             id_dumpMessaggio.setTipoMessaggio(TipoMessaggio.toEnumConstant((String)listaFieldId_dumpMessaggio.get(1)));
  994.             Object sa = listaFieldId_dumpMessaggio.get(2);
  995.             if(sa!=null && sa instanceof String) {
  996.                 id_dumpMessaggio.setServizioApplicativoErogatore((String)sa);
  997.             }
  998.         }
  999.        
  1000.         return id_dumpMessaggio;
  1001.        
  1002.     }

  1003.     @Override
  1004.     public Long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, boolean throwNotFound)
  1005.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  1006.    
  1007.         return this.findIdDumpMessaggio(jdbcProperties,log,connection,sqlQueryObject,id,throwNotFound);
  1008.            
  1009.     }
  1010.    
  1011.     @Override
  1012.     public List<List<Object>> nativeQuery(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  1013.                                             String sql,List<Class<?>> returnClassTypes,Object ... param) throws ServiceException,NotFoundException,NotImplementedException,Exception{
  1014.        
  1015.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.nativeQuery(jdbcProperties, log, connection, sqlQueryObject,
  1016.                                                                                             sql,returnClassTypes,param);
  1017.                                                        
  1018.     }
  1019.    
  1020.     protected Long findIdDumpMessaggio(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdDumpMessaggio id, boolean throwNotFound) throws NotFoundException, ServiceException, NotImplementedException, Exception {

  1021.         if(jdbcProperties==null) {
  1022.             throw new ServiceException("jdbcProperties parameter is null");
  1023.         }
  1024.         if(sqlQueryObject==null) {
  1025.             throw new ServiceException("sqlQueryObject parameter is null");
  1026.         }
  1027.         if(id==null) {
  1028.             throw new ServiceException("id parameter is null");
  1029.         }
  1030.        
  1031.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  1032.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  1033.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();

  1034.         // Object _dumpMessaggio
  1035.         sqlQueryObjectGet.addFromTable(this.getDumpMessaggioFieldConverter().toTable(DumpMessaggio.model()));
  1036.         sqlQueryObjectGet.addSelectField("id");
  1037.         sqlQueryObjectGet.setANDLogicOperator(true);
  1038.         sqlQueryObjectGet.setSelectDistinct(true);
  1039.         sqlQueryObjectGet.addWhereCondition(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().ID_TRANSAZIONE,true)+"=?");
  1040.         sqlQueryObjectGet.addWhereCondition(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().TIPO_MESSAGGIO,true)+"=?");
  1041.         if(id.getServizioApplicativoErogatore() == null) {
  1042.             sqlQueryObjectGet.addWhereIsNotNullCondition(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,true));
  1043.         }
  1044.         else {
  1045.             sqlQueryObjectGet.addWhereCondition(this.getDumpMessaggioFieldConverter().toColumn(DumpMessaggio.model().SERVIZIO_APPLICATIVO_EROGATORE,true)+"=?");
  1046.         }
  1047.        
  1048.         // Recupero _dumpMessaggio
  1049.         List<org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject> searchParamsDumpMessaggioList = new ArrayList<>();
  1050.         searchParamsDumpMessaggioList.add(new JDBCObject(id.getIdTransazione(), String.class));
  1051.         searchParamsDumpMessaggioList.add(new JDBCObject(id.getTipoMessaggioRawEnumValue(), String.class));
  1052.         if(id.getServizioApplicativoErogatore() != null) {
  1053.             searchParamsDumpMessaggioList.add(new JDBCObject(id.getServizioApplicativoErogatore(), String.class));
  1054.         }
  1055.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParamsDumpMessaggio = searchParamsDumpMessaggioList.toArray(new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [1]);

  1056.         Long idDumpMessaggio = null;
  1057.         try{
  1058.             idDumpMessaggio = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  1059.                         Long.class, searchParamsDumpMessaggio);
  1060.         }catch(NotFoundException notFound){
  1061.             if(throwNotFound){
  1062.                 throw new NotFoundException(notFound);
  1063.             }
  1064.         }
  1065.         if(idDumpMessaggio==null || idDumpMessaggio<=0){
  1066.             if(throwNotFound){
  1067.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  1068.             }
  1069.         }
  1070.        
  1071.         return idDumpMessaggio;
  1072.     }
  1073. }