JDBCAccordoServizioParteComuneGruppoServiceSearchImpl.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.commons.search.dao.jdbc;

  21. import java.util.List;
  22. import java.util.ArrayList;
  23. import java.util.Map;

  24. import java.sql.Connection;

  25. import org.slf4j.Logger;

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

  27. import org.openspcoop2.generic_project.expression.impl.sql.ISQLFieldConverter;
  28. import org.openspcoop2.generic_project.dao.jdbc.utils.IJDBCFetch;
  29. import org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject;
  30. import org.openspcoop2.generic_project.dao.jdbc.IJDBCServiceSearchWithId;
  31. import org.openspcoop2.core.commons.search.IdAccordoServizioParteComuneGruppo;
  32. import org.openspcoop2.core.commons.search.IdGruppo;
  33. import org.openspcoop2.generic_project.utils.UtilsTemplate;
  34. import org.openspcoop2.generic_project.beans.CustomField;
  35. import org.openspcoop2.generic_project.beans.InUse;
  36. import org.openspcoop2.generic_project.beans.IField;
  37. import org.openspcoop2.generic_project.beans.NonNegativeNumber;
  38. import org.openspcoop2.generic_project.beans.UnionExpression;
  39. import org.openspcoop2.generic_project.beans.Union;
  40. import org.openspcoop2.generic_project.beans.FunctionField;
  41. import org.openspcoop2.generic_project.exception.MultipleResultException;
  42. import org.openspcoop2.generic_project.exception.NotFoundException;
  43. import org.openspcoop2.generic_project.exception.NotImplementedException;
  44. import org.openspcoop2.generic_project.exception.ServiceException;
  45. import org.openspcoop2.generic_project.expression.IExpression;
  46. import org.openspcoop2.generic_project.dao.jdbc.JDBCExpression;
  47. import org.openspcoop2.generic_project.dao.jdbc.JDBCPaginatedExpression;

  48. import org.openspcoop2.generic_project.dao.jdbc.JDBCServiceManagerProperties;
  49. import org.openspcoop2.core.commons.search.dao.jdbc.converter.AccordoServizioParteComuneGruppoFieldConverter;
  50. import org.openspcoop2.core.commons.search.dao.jdbc.fetch.AccordoServizioParteComuneGruppoFetch;
  51. import org.openspcoop2.core.commons.search.dao.IDBAccordoServizioParteComuneServiceSearch;
  52. import org.openspcoop2.core.commons.search.dao.IDBGruppoServiceSearch;
  53. import org.openspcoop2.core.commons.search.AccordoServizioParteComune;
  54. import org.openspcoop2.core.commons.search.AccordoServizioParteComuneGruppo;
  55. import org.openspcoop2.core.commons.search.Gruppo;
  56. import org.openspcoop2.core.commons.search.IdAccordoServizioParteComune;

  57. /**    
  58.  * JDBCAccordoServizioParteComuneGruppoServiceSearchImpl
  59.  *
  60.  * @author Poli Andrea (poli@link.it)
  61.  * @author $Author$
  62.  * @version $Rev$, $Date$
  63.  */
  64. public class JDBCAccordoServizioParteComuneGruppoServiceSearchImpl implements IJDBCServiceSearchWithId<AccordoServizioParteComuneGruppo, IdAccordoServizioParteComuneGruppo, JDBCServiceManager> {

  65.     private AccordoServizioParteComuneGruppoFieldConverter _accordoServizioParteComuneGruppoFieldConverter = null;
  66.     public AccordoServizioParteComuneGruppoFieldConverter getAccordoServizioParteComuneGruppoFieldConverter() {
  67.         if(this._accordoServizioParteComuneGruppoFieldConverter==null){
  68.             this._accordoServizioParteComuneGruppoFieldConverter = new AccordoServizioParteComuneGruppoFieldConverter(this.jdbcServiceManager.getJdbcProperties().getDatabaseType());
  69.         }      
  70.         return this._accordoServizioParteComuneGruppoFieldConverter;
  71.     }
  72.     @Override
  73.     public ISQLFieldConverter getFieldConverter() {
  74.         return this.getAccordoServizioParteComuneGruppoFieldConverter();
  75.     }
  76.    
  77.     private AccordoServizioParteComuneGruppoFetch accordoServizioParteComuneGruppoFetch = new AccordoServizioParteComuneGruppoFetch();
  78.     public AccordoServizioParteComuneGruppoFetch getAccordoServizioParteComuneGruppoFetch() {
  79.         return this.accordoServizioParteComuneGruppoFetch;
  80.     }
  81.     @Override
  82.     public IJDBCFetch getFetch() {
  83.         return getAccordoServizioParteComuneGruppoFetch();
  84.     }
  85.    
  86.    
  87.     private JDBCServiceManager jdbcServiceManager = null;

  88.     @Override
  89.     public void setServiceManager(JDBCServiceManager serviceManager) throws ServiceException{
  90.         this.jdbcServiceManager = serviceManager;
  91.     }
  92.    
  93.     @Override
  94.     public JDBCServiceManager getServiceManager() throws ServiceException{
  95.         return this.jdbcServiceManager;
  96.     }
  97.     public JDBCServiceManager getServiceManager(Connection connection, JDBCServiceManagerProperties jdbcProperties, Logger log) throws ServiceException{
  98.         return new JDBCServiceManager(connection, jdbcProperties, log);
  99.     }
  100.    

  101.     @Override
  102.     public IdAccordoServizioParteComuneGruppo convertToId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, AccordoServizioParteComuneGruppo accordoServizioParteComuneGruppo) throws NotImplementedException, ServiceException, Exception{
  103.    
  104.         IdAccordoServizioParteComuneGruppo idAccordoServizioParteComuneGruppo = new IdAccordoServizioParteComuneGruppo();
  105.         idAccordoServizioParteComuneGruppo.setIdGruppo(accordoServizioParteComuneGruppo.getIdGruppo());
  106.         idAccordoServizioParteComuneGruppo.setIdAccordoServizioParteComune(accordoServizioParteComuneGruppo.getIdAccordoServizioParteComune());
  107.        
  108.         return idAccordoServizioParteComuneGruppo;
  109.     }
  110.    
  111.     @Override
  112.     public AccordoServizioParteComuneGruppo get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {
  113.         Long id_accordoServizioParteComuneGruppo = ( (id!=null && id.getId()!=null && id.getId()>0) ? id.getId() : this.findIdAccordoServizioParteComuneGruppo(jdbcProperties, log, connection, sqlQueryObject, id, true));
  114.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, id_accordoServizioParteComuneGruppo,idMappingResolutionBehaviour);
  115.        
  116.        
  117.     }
  118.    
  119.     @Override
  120.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id) throws MultipleResultException, NotImplementedException, ServiceException,Exception {

  121.         Long id_accordoServizioParteComuneGruppo = this.findIdAccordoServizioParteComuneGruppo(jdbcProperties, log, connection, sqlQueryObject, id, false);
  122.         return id_accordoServizioParteComuneGruppo != null && id_accordoServizioParteComuneGruppo > 0;
  123.        
  124.     }
  125.    
  126.     @Override
  127.     public List<IdAccordoServizioParteComuneGruppo> findAllIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException, ServiceException,Exception {

  128.         List<IdAccordoServizioParteComuneGruppo> list = new ArrayList<IdAccordoServizioParteComuneGruppo>();

  129.         // TODO: implementazione non efficiente.
  130.         // Per ottenere una implementazione efficiente:
  131.         // 1. Usare metodo select di questa classe indirizzando esattamente i field necessari a create l'ID logico
  132.         // 2. Usare metodo getAccordoServizioParteComuneGruppoFetch() sul risultato della select per ottenere un oggetto AccordoServizioParteComuneGruppo
  133.         //    La fetch con la map inserirĂ  nell'oggetto solo i valori estratti
  134.         // 3. Usare metodo convertToId per ottenere l'id

  135.         List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  136.        
  137.         for(Long id: ids) {
  138.             AccordoServizioParteComuneGruppo accordoServizioParteComuneGruppo = this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour);
  139.             IdAccordoServizioParteComuneGruppo idAccordoServizioParteComuneGruppo = this.convertToId(jdbcProperties,log,connection,sqlQueryObject,accordoServizioParteComuneGruppo);
  140.             list.add(idAccordoServizioParteComuneGruppo);
  141.         }

  142.         return list;
  143.        
  144.     }
  145.    
  146.     @Override
  147.     public List<AccordoServizioParteComuneGruppo> findAll(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException, ServiceException,Exception {

  148.         List<AccordoServizioParteComuneGruppo> list = new ArrayList<AccordoServizioParteComuneGruppo>();
  149.        
  150.         // TODO: implementazione non efficiente.
  151.         // Per ottenere una implementazione efficiente:
  152.         // 1. Usare metodo select di questa classe indirizzando esattamente i field necessari
  153.         // 2. Usare metodo getAccordoServizioParteComuneGruppoFetch() sul risultato della select per ottenere un oggetto AccordoServizioParteComuneGruppo
  154.         //    La fetch con la map inserirĂ  nell'oggetto solo i valori estratti

  155.         List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  156.        
  157.         for(Long id: ids) {
  158.             list.add(this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour));
  159.         }

  160.         return list;      
  161.        
  162.     }
  163.    
  164.     @Override
  165.     public AccordoServizioParteComuneGruppo find(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour)
  166.         throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {

  167.         long id = this.findTableId(jdbcProperties, log, connection, sqlQueryObject, expression);
  168.         if(id>0){
  169.             return this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour);
  170.         }else{
  171.             throw new NotFoundException("Entry with id["+id+"] not found");
  172.         }
  173.        
  174.     }
  175.    
  176.     @Override
  177.     public NonNegativeNumber count(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws NotImplementedException, ServiceException,Exception {
  178.        
  179.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareCount(jdbcProperties, log, connection, sqlQueryObject, expression,
  180.                                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model());
  181.        
  182.         sqlQueryObject.addSelectCountField(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model())+".id","tot",true);
  183.        
  184.         joinEngine(expression,sqlQueryObject);
  185.        
  186.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.count(jdbcProperties, log, connection, sqlQueryObject, expression,
  187.                                                                             this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),listaQuery);
  188.     }

  189.     @Override
  190.     public InUse inUse(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id) throws NotFoundException, NotImplementedException, ServiceException,Exception {
  191.        
  192.         Long id_accordoServizioParteComuneGruppo = this.findIdAccordoServizioParteComuneGruppo(jdbcProperties, log, connection, sqlQueryObject, id, true);
  193.         return this.inUseEngine(jdbcProperties, log, connection, sqlQueryObject, id_accordoServizioParteComuneGruppo);
  194.        
  195.     }

  196.     @Override
  197.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  198.                                                     JDBCPaginatedExpression paginatedExpression, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  199.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  200.                                 paginatedExpression, false, field);
  201.     }
  202.    
  203.     @Override
  204.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  205.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  206.         List<Map<String,Object>> map =
  207.             this.select(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, distinct, new IField[]{field});
  208.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectSingleObject(map);
  209.     }
  210.    
  211.     @Override
  212.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  213.                                                     JDBCPaginatedExpression paginatedExpression, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  214.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  215.                                 paginatedExpression, false, field);
  216.     }
  217.    
  218.     @Override
  219.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  220.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  221.        
  222.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,field);
  223.         try{
  224.        
  225.             ISQLQueryObject sqlQueryObjectDistinct =
  226.                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(distinct,sqlQueryObject, paginatedExpression, log,
  227.                                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), field);

  228.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, sqlQueryObjectDistinct);
  229.            
  230.         }finally{
  231.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,field);
  232.         }
  233.     }

  234.     @Override
  235.     public Object aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  236.                                                     JDBCExpression expression, FunctionField functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  237.         Map<String,Object> map =
  238.             this.aggregate(jdbcProperties, log, connection, sqlQueryObject, expression, new FunctionField[]{functionField});
  239.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectAggregateObject(map,functionField);
  240.     }
  241.    
  242.     @Override
  243.     public Map<String,Object> aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  244.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {                                                  
  245.        
  246.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  247.         try{
  248.             List<Map<String,Object>> list = selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  249.             return list.get(0);
  250.         }finally{
  251.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  252.         }
  253.     }

  254.     @Override
  255.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  256.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  257.        
  258.         if(expression.getGroupByFields().isEmpty()){
  259.             throw new ServiceException("GroupBy conditions not found in expression");
  260.         }
  261.        
  262.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  263.         try{
  264.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  265.         }finally{
  266.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  267.         }
  268.     }
  269.    

  270.     @Override
  271.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  272.                                                     JDBCPaginatedExpression paginatedExpression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  273.        
  274.         if(paginatedExpression.getGroupByFields().isEmpty()){
  275.             throw new ServiceException("GroupBy conditions not found in expression");
  276.         }
  277.        
  278.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,functionField);
  279.         try{
  280.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression);
  281.         }finally{
  282.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,functionField);
  283.         }
  284.     }
  285.    
  286.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  287.                                                 IExpression expression) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  288.         return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression, null);
  289.     }
  290.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  291.                                                 IExpression expression, ISQLQueryObject sqlQueryObjectDistinct) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  292.        
  293.         List<Object> listaQuery = new ArrayList<>();
  294.         List<JDBCObject> listaParams = new ArrayList<>();
  295.         List<Object> returnField = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSelect(jdbcProperties, log, connection, sqlQueryObject,
  296.                                 expression, this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  297.                                 listaQuery,listaParams);
  298.        
  299.         joinEngine(expression,sqlQueryObject);
  300.        
  301.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.select(jdbcProperties, log, connection,
  302.                                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(sqlQueryObject,sqlQueryObjectDistinct),
  303.                                         expression, this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  304.                                         listaQuery,listaParams,returnField);
  305.         if(list!=null && !list.isEmpty()){
  306.             return list;
  307.         }
  308.         else{
  309.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  310.         }
  311.     }
  312.    
  313.     @Override
  314.     public List<Map<String,Object>> union(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  315.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  316.        
  317.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  318.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  319.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnion(jdbcProperties, log, connection, sqlQueryObject,
  320.                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  321.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  322.        
  323.         if(unionExpression!=null){
  324.             for (int i = 0; i < unionExpression.length; i++) {
  325.                 UnionExpression ue = unionExpression[i];
  326.                 IExpression expression = ue.getExpression();
  327.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  328.             }
  329.         }
  330.        
  331.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.union(jdbcProperties, log, connection, sqlQueryObject,
  332.                                         this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  333.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  334.         if(list!=null && !list.isEmpty()){
  335.             return list;
  336.         }
  337.         else{
  338.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  339.         }                              
  340.     }
  341.    
  342.     @Override
  343.     public NonNegativeNumber unionCount(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  344.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  345.        
  346.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  347.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  348.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnionCount(jdbcProperties, log, connection, sqlQueryObject,
  349.                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  350.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  351.        
  352.         if(unionExpression!=null){
  353.             for (int i = 0; i < unionExpression.length; i++) {
  354.                 UnionExpression ue = unionExpression[i];
  355.                 IExpression expression = ue.getExpression();
  356.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  357.             }
  358.         }
  359.        
  360.         NonNegativeNumber number = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.unionCount(jdbcProperties, log, connection, sqlQueryObject,
  361.                                         this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(),
  362.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  363.         if(number!=null && number.longValue()>=0){
  364.             return number;
  365.         }
  366.         else{
  367.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  368.         }
  369.     }



  370.     // -- ConstructorExpression

  371.     @Override
  372.     public JDBCExpression newExpression(Logger log) throws NotImplementedException, ServiceException {
  373.         try{
  374.             return new JDBCExpression(this.getAccordoServizioParteComuneGruppoFieldConverter());
  375.         }catch(Exception e){
  376.             throw new ServiceException(e);
  377.         }
  378.     }


  379.     @Override
  380.     public JDBCPaginatedExpression newPaginatedExpression(Logger log) throws NotImplementedException, ServiceException {
  381.         try{
  382.             return new JDBCPaginatedExpression(this.getAccordoServizioParteComuneGruppoFieldConverter());
  383.         }catch(Exception e){
  384.             throw new ServiceException(e);
  385.         }
  386.     }
  387.    
  388.     @Override
  389.     public JDBCExpression toExpression(JDBCPaginatedExpression paginatedExpression, Logger log) throws NotImplementedException, ServiceException {
  390.         try{
  391.             return new JDBCExpression(paginatedExpression);
  392.         }catch(Exception e){
  393.             throw new ServiceException(e);
  394.         }
  395.     }

  396.     @Override
  397.     public JDBCPaginatedExpression toPaginatedExpression(JDBCExpression expression, Logger log) throws NotImplementedException, ServiceException {
  398.         try{
  399.             return new JDBCPaginatedExpression(expression);
  400.         }catch(Exception e){
  401.             throw new ServiceException(e);
  402.         }
  403.     }
  404.    
  405.    
  406.    
  407.     // -- DB

  408.     @Override
  409.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id, AccordoServizioParteComuneGruppo obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  410.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  411.                 this.get(jdbcProperties,log,connection,sqlQueryObject,id,null));
  412.     }
  413.    
  414.     @Override
  415.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, AccordoServizioParteComuneGruppo obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  416.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  417.                 this.get(jdbcProperties,log,connection,sqlQueryObject,tableId,null));
  418.     }
  419.     private void _mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, AccordoServizioParteComuneGruppo obj, AccordoServizioParteComuneGruppo imgSaved) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  420.         if(imgSaved==null){
  421.             return;
  422.         }
  423.         obj.setId(imgSaved.getId());
  424.         if(obj.getIdGruppo()!=null &&
  425.                 imgSaved.getIdGruppo()!=null){
  426.             obj.getIdGruppo().setId(imgSaved.getIdGruppo().getId());
  427.         }
  428.         if(obj.getIdAccordoServizioParteComune()!=null &&
  429.                 imgSaved.getIdAccordoServizioParteComune()!=null){
  430.             obj.getIdAccordoServizioParteComune().setId(imgSaved.getIdAccordoServizioParteComune().getId());
  431.             if(obj.getIdAccordoServizioParteComune().getIdSoggetto()!=null &&
  432.                     imgSaved.getIdAccordoServizioParteComune().getIdSoggetto()!=null){
  433.                 obj.getIdAccordoServizioParteComune().getIdSoggetto().setId(imgSaved.getIdAccordoServizioParteComune().getIdSoggetto().getId());
  434.             }
  435.         }

  436.     }
  437.    
  438.     @Override
  439.     public AccordoServizioParteComuneGruppo get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  440.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId), idMappingResolutionBehaviour);
  441.     }
  442.    
  443.     private AccordoServizioParteComuneGruppo getEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  444.    
  445.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  446.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  447.        
  448.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();
  449.                
  450.         AccordoServizioParteComuneGruppo accordoServizioParteComuneGruppo = new AccordoServizioParteComuneGruppo();
  451.        

  452.         // Object accordoServizioParteComuneGruppo
  453.         ISQLQueryObject sqlQueryObjectGet_accordoServizioParteComuneGruppo = sqlQueryObjectGet.newSQLQueryObject();
  454.         sqlQueryObjectGet_accordoServizioParteComuneGruppo.setANDLogicOperator(true);
  455.         sqlQueryObjectGet_accordoServizioParteComuneGruppo.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model()));
  456.         sqlQueryObjectGet_accordoServizioParteComuneGruppo.addSelectField("id");
  457.         sqlQueryObjectGet_accordoServizioParteComuneGruppo.addWhereCondition("id=?");

  458.         // Get accordoServizioParteComuneGruppo
  459.         accordoServizioParteComuneGruppo = (AccordoServizioParteComuneGruppo) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_accordoServizioParteComuneGruppo.createSQLQuery(), jdbcProperties.isShowSql(), AccordoServizioParteComuneGruppo.model(), this.getAccordoServizioParteComuneGruppoFetch(),
  460.             new JDBCObject(tableId,Long.class));


  461.         if(idMappingResolutionBehaviour==null ||
  462.             (org.openspcoop2.generic_project.beans.IDMappingBehaviour.ENABLED.equals(idMappingResolutionBehaviour) || org.openspcoop2.generic_project.beans.IDMappingBehaviour.USE_TABLE_ID.equals(idMappingResolutionBehaviour))
  463.         ){
  464.             // Object _accordoServizioParteComuneGruppo_gruppo (recupero id)
  465.             ISQLQueryObject sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId = sqlQueryObjectGet.newSQLQueryObject();
  466.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(org.openspcoop2.core.commons.search.AccordoServizioParteComuneGruppo.model()));
  467.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId.addSelectField("id_gruppo");
  468.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId.addWhereCondition("id=?");
  469.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId.setANDLogicOperator(true);
  470.             Long idFK_accordoServizioParteComuneGruppo_gruppo = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_accordoServizioParteComuneGruppo_gruppo_readFkId.createSQLQuery(), jdbcProperties.isShowSql(),Long.class,
  471.                     new JDBCObject(accordoServizioParteComuneGruppo.getId(),Long.class));
  472.            
  473.             org.openspcoop2.core.commons.search.IdGruppo id_accordoServizioParteComuneGruppo_gruppo = null;
  474.             if(idMappingResolutionBehaviour==null || org.openspcoop2.generic_project.beans.IDMappingBehaviour.ENABLED.equals(idMappingResolutionBehaviour)){
  475.                 id_accordoServizioParteComuneGruppo_gruppo = ((JDBCGruppoServiceSearch)(this.getServiceManager(connection, jdbcProperties, log).getGruppoServiceSearch())).findId(idFK_accordoServizioParteComuneGruppo_gruppo, false);
  476.             }else{
  477.                 id_accordoServizioParteComuneGruppo_gruppo = new org.openspcoop2.core.commons.search.IdGruppo();
  478.             }
  479.             id_accordoServizioParteComuneGruppo_gruppo.setId(idFK_accordoServizioParteComuneGruppo_gruppo);
  480.            
  481.             Gruppo gruppo = ((IDBGruppoServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getGruppoServiceSearch()).get(id_accordoServizioParteComuneGruppo_gruppo.getId());
  482.             id_accordoServizioParteComuneGruppo_gruppo.setNome(gruppo.getNome());
  483.            
  484.             accordoServizioParteComuneGruppo.setIdGruppo(id_accordoServizioParteComuneGruppo_gruppo);
  485.         }

  486.         if(idMappingResolutionBehaviour==null ||
  487.             (org.openspcoop2.generic_project.beans.IDMappingBehaviour.ENABLED.equals(idMappingResolutionBehaviour) || org.openspcoop2.generic_project.beans.IDMappingBehaviour.USE_TABLE_ID.equals(idMappingResolutionBehaviour))
  488.         ){
  489.             // Object _accordoServizioParteComuneGruppo_accordoServizioParteComune (recupero id)
  490.             ISQLQueryObject sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId = sqlQueryObjectGet.newSQLQueryObject();
  491.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(org.openspcoop2.core.commons.search.AccordoServizioParteComuneGruppo.model()));
  492.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId.addSelectField("id_accordo");
  493.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId.addWhereCondition("id=?");
  494.             sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId.setANDLogicOperator(true);
  495.             Long idFK_accordoServizioParteComuneGruppo_accordoServizioParteComune = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_accordoServizioParteComuneGruppo_accordoServizioParteComune_readFkId.createSQLQuery(), jdbcProperties.isShowSql(),Long.class,
  496.                     new JDBCObject(accordoServizioParteComuneGruppo.getId(),Long.class));
  497.            
  498.             org.openspcoop2.core.commons.search.IdAccordoServizioParteComune id_accordoServizioParteComuneGruppo_accordoServizioParteComune = null;
  499.             if(idMappingResolutionBehaviour==null || org.openspcoop2.generic_project.beans.IDMappingBehaviour.ENABLED.equals(idMappingResolutionBehaviour)){
  500.                 id_accordoServizioParteComuneGruppo_accordoServizioParteComune = ((JDBCAccordoServizioParteComuneServiceSearch)(this.getServiceManager(connection, jdbcProperties, log).getAccordoServizioParteComuneServiceSearch())).findId(idFK_accordoServizioParteComuneGruppo_accordoServizioParteComune, false);
  501.             }else{
  502.                 id_accordoServizioParteComuneGruppo_accordoServizioParteComune = new org.openspcoop2.core.commons.search.IdAccordoServizioParteComune();
  503.             }
  504.             id_accordoServizioParteComuneGruppo_accordoServizioParteComune.setId(idFK_accordoServizioParteComuneGruppo_accordoServizioParteComune);
  505.            
  506.             AccordoServizioParteComune aspc = ((IDBAccordoServizioParteComuneServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getAccordoServizioParteComuneServiceSearch()).get(id_accordoServizioParteComuneGruppo_accordoServizioParteComune.getId());
  507.             id_accordoServizioParteComuneGruppo_accordoServizioParteComune.setIdSoggetto(aspc.getIdReferente());
  508.             id_accordoServizioParteComuneGruppo_accordoServizioParteComune.setNome(aspc.getNome());
  509.             id_accordoServizioParteComuneGruppo_accordoServizioParteComune.setServiceBinding(aspc.getServiceBinding());
  510.             id_accordoServizioParteComuneGruppo_accordoServizioParteComune.setVersione(aspc.getVersione());
  511.            
  512.             accordoServizioParteComuneGruppo.setIdAccordoServizioParteComune(id_accordoServizioParteComuneGruppo_accordoServizioParteComune);
  513.         }


  514.         return accordoServizioParteComuneGruppo;  
  515.    
  516.     }
  517.    
  518.     @Override
  519.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  520.         return this._exists(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  521.     }
  522.    
  523.     private boolean _exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  524.    
  525.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  526.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  527.                
  528.         boolean existsAccordoServizioParteComuneGruppo = false;

  529.         sqlQueryObject = sqlQueryObject.newSQLQueryObject();
  530.         sqlQueryObject.setANDLogicOperator(true);

  531.         sqlQueryObject.addWhereCondition("id=?");


  532.         // Exists accordoServizioParteComuneGruppo
  533.         existsAccordoServizioParteComuneGruppo = jdbcUtilities.exists(sqlQueryObject.createSQLQuery(), jdbcProperties.isShowSql(),
  534.             new JDBCObject(tableId,Long.class));

  535.        
  536.         return existsAccordoServizioParteComuneGruppo;
  537.    
  538.     }
  539.    
  540.     private void joinEngine(IExpression expression, ISQLQueryObject sqlQueryObject) throws NotImplementedException, ServiceException, Exception{
  541.    
  542.         if(expression.inUseModel(AccordoServizioParteComuneGruppo.model().ID_GRUPPO,false)){
  543.             String tableName1 = this.getAccordoServizioParteComuneGruppoFieldConverter().toAliasTable(AccordoServizioParteComuneGruppo.model());
  544.             String tableName2 = this.getAccordoServizioParteComuneGruppoFieldConverter().toAliasTable(AccordoServizioParteComuneGruppo.model().ID_GRUPPO);
  545.             sqlQueryObject.addWhereCondition(tableName1+".id_gruppo="+tableName2+".id");
  546.         }
  547.         if(expression.inUseModel(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE,false)){
  548.             String tableName1 = this.getAccordoServizioParteComuneGruppoFieldConverter().toAliasTable(AccordoServizioParteComuneGruppo.model());
  549.             String tableName2 = this.getAccordoServizioParteComuneGruppoFieldConverter().toAliasTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE);
  550.             sqlQueryObject.addWhereCondition(tableName1+".id_accordo="+tableName2+".id");
  551.         }
  552.        
  553.        
  554.         if(expression.inUseModel(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE.ID_SOGGETTO,false)){
  555.             if(expression.inUseModel(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE,false)==false){
  556.                 sqlQueryObject.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE));
  557.             }
  558.         }
  559.        
  560.     }
  561.    
  562.     protected java.util.List<Object> getRootTablePrimaryKeyValuesEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id) throws NotFoundException, ServiceException, NotImplementedException, Exception{
  563.         // Identificativi
  564.         java.util.List<Object> rootTableIdValues = new java.util.ArrayList<>();
  565.         // TODO: Define the column values used to identify the primary key
  566.         Long longId = this.findIdAccordoServizioParteComuneGruppo(jdbcProperties, log, connection, sqlQueryObject.newSQLQueryObject(), id, true);
  567.         rootTableIdValues.add(longId);
  568.        
  569.         // Delete this line when you have verified the method
  570.         int throwNotImplemented = 1;
  571.         if(throwNotImplemented==1){
  572.                 throw new NotImplementedException("NotImplemented");
  573.         }
  574.         // Delete this line when you have verified the method
  575.        
  576.         return rootTableIdValues;
  577.     }
  578.    
  579.     protected Map<String, List<IField>> getMapTableToPKColumnEngine() throws NotImplementedException, Exception{
  580.    
  581.         AccordoServizioParteComuneGruppoFieldConverter converter = this.getAccordoServizioParteComuneGruppoFieldConverter();
  582.         Map<String, List<IField>> mapTableToPKColumn = new java.util.HashMap<>();
  583.         UtilsTemplate<IField> utilities = new UtilsTemplate<>();

  584.         // TODO: Define the columns used to identify the primary key
  585.         //        If a table doesn't have a primary key, don't add it to this map

  586.         // AccordoServizioParteComuneGruppo.model()
  587.         mapTableToPKColumn.put(converter.toTable(AccordoServizioParteComuneGruppo.model()),
  588.             utilities.newList(
  589.                 new CustomField("id", Long.class, "id", converter.toTable(AccordoServizioParteComuneGruppo.model()))
  590.             ));

  591.         // AccordoServizioParteComuneGruppo.model().ID_GRUPPO
  592.         mapTableToPKColumn.put(converter.toTable(AccordoServizioParteComuneGruppo.model().ID_GRUPPO),
  593.             utilities.newList(
  594.                 new CustomField("id", Long.class, "id", converter.toTable(AccordoServizioParteComuneGruppo.model().ID_GRUPPO))
  595.             ));

  596.         // AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE
  597.         mapTableToPKColumn.put(converter.toTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE),
  598.             utilities.newList(
  599.                 new CustomField("id", Long.class, "id", converter.toTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE))
  600.             ));

  601.         // AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE.ID_SOGGETTO
  602.         mapTableToPKColumn.put(converter.toTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE.ID_SOGGETTO),
  603.             utilities.newList(
  604.                 new CustomField("id", Long.class, "id", converter.toTable(AccordoServizioParteComuneGruppo.model().ID_ACCORDO_SERVIZIO_PARTE_COMUNE.ID_SOGGETTO))
  605.             ));


  606.         // Delete this line when you have verified the method
  607.         int throwNotImplemented = 1;
  608.         if(throwNotImplemented==1){
  609.                 throw new NotImplementedException("NotImplemented");
  610.         }
  611.         // Delete this line when you have verified the method
  612.        
  613.         return mapTableToPKColumn;      
  614.     }
  615.    
  616.     @Override
  617.     public List<Long> findAllTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression paginatedExpression) throws ServiceException, NotImplementedException, Exception {
  618.        
  619.         List<Long> list = new ArrayList<Long>();

  620.         sqlQueryObject.setSelectDistinct(true);
  621.         sqlQueryObject.setANDLogicOperator(true);
  622.         sqlQueryObject.addSelectField(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model())+".id");
  623.         Class<?> objectIdClass = Long.class;
  624.        
  625.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFindAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  626.                                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model());
  627.        
  628.         joinEngine(paginatedExpression,sqlQueryObject);
  629.        
  630.         List<Object> listObjects = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.findAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  631.                                                                             this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(), objectIdClass, listaQuery);
  632.         for(Object object: listObjects) {
  633.             list.add((Long)object);
  634.         }

  635.         return list;
  636.        
  637.     }
  638.    
  639.     @Override
  640.     public long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws ServiceException, NotFoundException, MultipleResultException, NotImplementedException, Exception {
  641.    
  642.         sqlQueryObject.setSelectDistinct(true);
  643.         sqlQueryObject.setANDLogicOperator(true);
  644.         sqlQueryObject.addSelectField(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model())+".id");
  645.         Class<?> objectIdClass = Long.class;
  646.        
  647.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFind(jdbcProperties, log, connection, sqlQueryObject, expression,
  648.                                                 this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model());
  649.        
  650.         joinEngine(expression,sqlQueryObject);

  651.         Object res = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.find(jdbcProperties, log, connection, sqlQueryObject, expression,
  652.                                                         this.getAccordoServizioParteComuneGruppoFieldConverter(), AccordoServizioParteComuneGruppo.model(), objectIdClass, listaQuery);
  653.         if(res!=null && (((Long) res).longValue()>0) ){
  654.             return ((Long) res).longValue();
  655.         }
  656.         else{
  657.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  658.         }
  659.        
  660.     }

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

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

  666.         InUse inUse = new InUse();
  667.         inUse.setInUse(false);
  668.        
  669.         /*
  670.          * TODO: implement code that checks whether the object identified by the id parameter is used by other objects
  671.         */
  672.        
  673.         // Delete this line when you have implemented the method
  674.         int throwNotImplemented = 1;
  675.         if(throwNotImplemented==1){
  676.                 throw new NotImplementedException("NotImplemented");
  677.         }
  678.         // Delete this line when you have implemented the method

  679.         return inUse;

  680.     }
  681.    
  682.     @Override
  683.     public IdAccordoServizioParteComuneGruppo findId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, boolean throwNotFound)
  684.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  685.        
  686.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  687.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  688.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();

  689.         // Object _accordoServizioParteComuneGruppo
  690.         sqlQueryObjectGet.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model()));
  691.         sqlQueryObjectGet.addSelectField("id_accordo");
  692.         sqlQueryObjectGet.addSelectField("id_gruppo");
  693.         sqlQueryObjectGet.setANDLogicOperator(true);
  694.         sqlQueryObjectGet.addWhereCondition("id=?");

  695.         // Recupero _accordoServizioParteComuneGruppo
  696.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_accordoServizioParteComuneGruppo = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  697.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(tableId,Long.class)
  698.         };
  699.         List<Class<?>> listaFieldIdReturnType_accordoServizioParteComuneGruppo = new ArrayList<Class<?>>();
  700.         listaFieldIdReturnType_accordoServizioParteComuneGruppo.add(Long.class);
  701.         listaFieldIdReturnType_accordoServizioParteComuneGruppo.add(Long.class);
  702.         org.openspcoop2.core.commons.search.IdAccordoServizioParteComuneGruppo id_accordoServizioParteComuneGruppo = null;
  703.         List<Object> listaFieldId_accordoServizioParteComuneGruppo = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  704.                 listaFieldIdReturnType_accordoServizioParteComuneGruppo, searchParams_accordoServizioParteComuneGruppo);
  705.         if(listaFieldId_accordoServizioParteComuneGruppo==null || listaFieldId_accordoServizioParteComuneGruppo.size()<=0){
  706.             if(throwNotFound){
  707.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  708.             }
  709.         }
  710.         else{
  711.             // set _accordoServizioParteComuneGruppo
  712.             id_accordoServizioParteComuneGruppo = new org.openspcoop2.core.commons.search.IdAccordoServizioParteComuneGruppo();
  713.            
  714.             IdAccordoServizioParteComune idApsc = new IdAccordoServizioParteComune();
  715.             idApsc.setId((Long) listaFieldId_accordoServizioParteComuneGruppo.get(0));
  716.             AccordoServizioParteComune aspc = ((IDBAccordoServizioParteComuneServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getAccordoServizioParteComuneServiceSearch()).get(idApsc.getId());
  717.             idApsc.setIdSoggetto(aspc.getIdReferente());
  718.             idApsc.setNome(aspc.getNome());
  719.             idApsc.setServiceBinding(aspc.getServiceBinding());
  720.             idApsc.setVersione(aspc.getVersione());
  721.             id_accordoServizioParteComuneGruppo.setIdAccordoServizioParteComune(idApsc);
  722.            
  723.             IdGruppo idGruppo = new IdGruppo();
  724.             idGruppo.setId((Long) listaFieldId_accordoServizioParteComuneGruppo.get(1));
  725.             Gruppo gruppo = ((IDBGruppoServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getGruppoServiceSearch()).get(idGruppo.getId());
  726.             idGruppo.setNome(gruppo.getNome());
  727.             id_accordoServizioParteComuneGruppo.setIdGruppo(idGruppo);

  728.         }
  729.        
  730.         return id_accordoServizioParteComuneGruppo;
  731.        
  732.     }

  733.     @Override
  734.     public Long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id, boolean throwNotFound)
  735.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  736.    
  737.         return this.findIdAccordoServizioParteComuneGruppo(jdbcProperties,log,connection,sqlQueryObject,id,throwNotFound);
  738.            
  739.     }
  740.    
  741.     @Override
  742.     public List<List<Object>> nativeQuery(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  743.                                             String sql,List<Class<?>> returnClassTypes,Object ... param) throws ServiceException,NotFoundException,NotImplementedException,Exception{
  744.        
  745.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.nativeQuery(jdbcProperties, log, connection, sqlQueryObject,
  746.                                                                                             sql,returnClassTypes,param);
  747.                                                        
  748.     }
  749.    
  750.     protected Long findIdAccordoServizioParteComuneGruppo(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdAccordoServizioParteComuneGruppo id, boolean throwNotFound) throws NotFoundException, ServiceException, NotImplementedException, Exception {

  751.         if(jdbcProperties==null) {
  752.             throw new ServiceException("Param jdbcProperties is null");
  753.         }
  754.         if(sqlQueryObject==null) {
  755.             throw new ServiceException("Param sqlQueryObject is null");
  756.         }
  757.         if(id==null) {
  758.             throw new ServiceException("Param id is null");
  759.         }
  760.        
  761.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  762.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  763.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();

  764.         // Object _accordoServizioParteComuneGruppo
  765.         sqlQueryObjectGet.addFromTable(this.getAccordoServizioParteComuneGruppoFieldConverter().toTable(AccordoServizioParteComuneGruppo.model()));
  766.         sqlQueryObjectGet.addSelectField("id");
  767.         // Devono essere mappati nella where condition i metodi dell'oggetto id.getXXX
  768.         sqlQueryObjectGet.setANDLogicOperator(true);
  769.         sqlQueryObjectGet.setSelectDistinct(true);
  770.         sqlQueryObjectGet.addWhereCondition("id_accordo=?");
  771.         sqlQueryObjectGet.addWhereCondition("id_gruppo=?");

  772.         long idAccordo = ((IDBAccordoServizioParteComuneServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getAccordoServizioParteComuneServiceSearch()).findTableId(id.getIdAccordoServizioParteComune(), true);
  773.         long idGruppo = ((IDBGruppoServiceSearch)this.getServiceManager(connection, jdbcProperties, log).getGruppoServiceSearch()).findTableId(id.getIdGruppo(), true);
  774.        
  775.         // Recupero _accordoServizioParteComuneGruppo
  776.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_accordoServizioParteComuneGruppo = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  777.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(idAccordo,long.class),
  778.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(idGruppo,long.class)
  779.         };
  780.         Long id_accordoServizioParteComuneGruppo = null;
  781.         try{
  782.             id_accordoServizioParteComuneGruppo = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  783.                         Long.class, searchParams_accordoServizioParteComuneGruppo);
  784.         }catch(NotFoundException notFound){
  785.             if(throwNotFound){
  786.                 throw new NotFoundException(notFound);
  787.             }
  788.         }
  789.         if(id_accordoServizioParteComuneGruppo==null || id_accordoServizioParteComuneGruppo<=0){
  790.             if(throwNotFound){
  791.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  792.             }
  793.         }
  794.        
  795.         return id_accordoServizioParteComuneGruppo;
  796.     }
  797. }