JDBCPortaApplicativaServiceSearchImpl.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.sql.Connection;
  22. import java.util.ArrayList;
  23. import java.util.List;
  24. import java.util.Map;

  25. import org.openspcoop2.core.commons.search.IdPortaApplicativa;
  26. import org.openspcoop2.core.commons.search.IdServizioApplicativo;
  27. import org.openspcoop2.core.commons.search.IdSoggetto;
  28. import org.openspcoop2.core.commons.search.PortaApplicativa;
  29. import org.openspcoop2.core.commons.search.PortaApplicativaAzione;
  30. import org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo;
  31. import org.openspcoop2.core.commons.search.dao.IDBSoggettoServiceSearch;
  32. import org.openspcoop2.core.commons.search.dao.jdbc.converter.PortaApplicativaFieldConverter;
  33. import org.openspcoop2.core.commons.search.dao.jdbc.fetch.PortaApplicativaFetch;
  34. import org.openspcoop2.core.commons.search.utils.ExpressionProperties;
  35. import org.openspcoop2.generic_project.beans.AliasField;
  36. import org.openspcoop2.generic_project.beans.CustomField;
  37. import org.openspcoop2.generic_project.beans.FunctionField;
  38. import org.openspcoop2.generic_project.beans.IField;
  39. import org.openspcoop2.generic_project.beans.InUse;
  40. import org.openspcoop2.generic_project.beans.NonNegativeNumber;
  41. import org.openspcoop2.generic_project.beans.Union;
  42. import org.openspcoop2.generic_project.beans.UnionExpression;
  43. import org.openspcoop2.generic_project.dao.jdbc.IJDBCServiceSearchWithId;
  44. import org.openspcoop2.generic_project.dao.jdbc.JDBCExpression;
  45. import org.openspcoop2.generic_project.dao.jdbc.JDBCPaginatedExpression;
  46. import org.openspcoop2.generic_project.dao.jdbc.JDBCServiceManagerProperties;
  47. import org.openspcoop2.generic_project.dao.jdbc.utils.IJDBCFetch;
  48. import org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject;
  49. import org.openspcoop2.generic_project.exception.MultipleResultException;
  50. import org.openspcoop2.generic_project.exception.NotFoundException;
  51. import org.openspcoop2.generic_project.exception.NotImplementedException;
  52. import org.openspcoop2.generic_project.exception.ServiceException;
  53. import org.openspcoop2.generic_project.expression.IExpression;
  54. import org.openspcoop2.generic_project.expression.impl.sql.ISQLFieldConverter;
  55. import org.openspcoop2.generic_project.utils.UtilsTemplate;
  56. import org.openspcoop2.utils.sql.ISQLQueryObject;
  57. import org.slf4j.Logger;

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

  66.     private PortaApplicativaFieldConverter _portaApplicativaFieldConverter = null;
  67.     public PortaApplicativaFieldConverter getPortaApplicativaFieldConverter() {
  68.         if(this._portaApplicativaFieldConverter==null){
  69.             this._portaApplicativaFieldConverter = new PortaApplicativaFieldConverter(this.jdbcServiceManager.getJdbcProperties().getDatabaseType());
  70.         }      
  71.         return this._portaApplicativaFieldConverter;
  72.     }
  73.     @Override
  74.     public ISQLFieldConverter getFieldConverter() {
  75.         return this.getPortaApplicativaFieldConverter();
  76.     }
  77.    
  78.     private PortaApplicativaFetch portaApplicativaFetch = new PortaApplicativaFetch();
  79.     public PortaApplicativaFetch getPortaApplicativaFetch() {
  80.         return this.portaApplicativaFetch;
  81.     }
  82.     @Override
  83.     public IJDBCFetch getFetch() {
  84.         return getPortaApplicativaFetch();
  85.     }
  86.    
  87.    
  88.     private JDBCServiceManager jdbcServiceManager = null;

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

  102.     @Override
  103.     public IdPortaApplicativa convertToId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, PortaApplicativa portaApplicativa) throws NotImplementedException, ServiceException, Exception{
  104.    
  105.         IdPortaApplicativa idPortaApplicativa = new IdPortaApplicativa();
  106.         idPortaApplicativa.setNome(portaApplicativa.getNome());
  107.         return idPortaApplicativa;
  108.     }
  109.    
  110.     @Override
  111.     public PortaApplicativa get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {
  112.         Long id_portaApplicativa = ( (id!=null && id.getId()!=null && id.getId()>0) ? id.getId() : this.findIdPortaApplicativa(jdbcProperties, log, connection, sqlQueryObject, id, true));
  113.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, id_portaApplicativa,idMappingResolutionBehaviour);
  114.        
  115.        
  116.     }
  117.    
  118.     @Override
  119.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id) throws MultipleResultException, NotImplementedException, ServiceException,Exception {

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

  127.         List<IdPortaApplicativa> list = new ArrayList<IdPortaApplicativa>();

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

  134.         List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  135.        
  136.         for(Long id: ids) {
  137.             PortaApplicativa portaApplicativa = this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour);
  138.             IdPortaApplicativa idPortaApplicativa = this.convertToId(jdbcProperties,log,connection,sqlQueryObject,portaApplicativa);
  139.             list.add(idPortaApplicativa);
  140.         }

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

  147.         List<PortaApplicativa> list = new ArrayList<PortaApplicativa>();
  148.        
  149.         boolean soloDatiIdentificativiServizio = ExpressionProperties.isEnabledSoloDatiIdentificativiServizio(expression);
  150.        
  151.         if(soloDatiIdentificativiServizio){
  152.            
  153.             List<IField> fields = new ArrayList<IField>();
  154.             fields.add(PortaApplicativa.model().NOME);
  155.             fields.add(PortaApplicativa.model().STATO);
  156.             fields.add(PortaApplicativa.model().TIPO_SERVIZIO);
  157.             fields.add(PortaApplicativa.model().NOME_SERVIZIO);
  158.             fields.add(PortaApplicativa.model().VERSIONE_SERVIZIO);
  159.             fields.add(PortaApplicativa.model().MODE_AZIONE);
  160.             fields.add(PortaApplicativa.model().NOME_AZIONE);
  161.             fields.add(PortaApplicativa.model().NOME_PORTA_DELEGANTE_AZIONE);
  162.                        
  163.             String aliasSoggettoTipo = "proprietarioSoggettoTipo";
  164.             fields.add(new AliasField(PortaApplicativa.model().ID_SOGGETTO.TIPO, aliasSoggettoTipo));
  165.             String aliasSoggettoNome = "proprietarioSoggettoNome";
  166.             fields.add(new AliasField(PortaApplicativa.model().ID_SOGGETTO.NOME, aliasSoggettoNome));
  167.            
  168.             List<Map<String, Object>> returnMap = null;
  169.             try{
  170.                 // non usare true altrimenti non funzionano alcuni meccanismi di ricerca, ad es. la valorizzazione dei select field nel servizio della govwayMonitor.
  171.                 // Tanto le join non comportano righe multiple uguali
  172.                 boolean distinct = false;
  173.                 returnMap = this.select(jdbcProperties, log, connection, sqlQueryObject, expression, distinct, fields.toArray(new IField[1]));
  174.                
  175.                 for(Map<String, Object> map: returnMap) {
  176.                    
  177.                     PortaApplicativa pa = (PortaApplicativa) this.getPortaApplicativaFetch().fetch(jdbcProperties.getDatabase(), PortaApplicativa.model(), map);
  178.                    
  179.                     Object proprietarioSoggettoTipo = this.getObjectFromMap(map, aliasSoggettoTipo);
  180.                     Object proprietarioSoggettoNome = this.getObjectFromMap(map, aliasSoggettoNome);
  181.                     if(proprietarioSoggettoTipo!=null && proprietarioSoggettoNome!=null) {
  182.                         IdSoggetto idSoggetto = new IdSoggetto();
  183.                         if(proprietarioSoggettoTipo!=null && proprietarioSoggettoTipo instanceof String) {
  184.                             idSoggetto.setTipo((String) proprietarioSoggettoTipo);
  185.                         }
  186.                         if(proprietarioSoggettoNome!=null && proprietarioSoggettoNome instanceof String) {
  187.                             idSoggetto.setNome((String) proprietarioSoggettoNome);
  188.                         }
  189.                         pa.setIdSoggetto(idSoggetto);
  190.                     }          
  191.                    
  192.                     list.add(pa);
  193.                 }
  194.             }catch(NotFoundException notFound){}
  195.         }
  196.         else {
  197.        
  198.             // TODO: implementazione non efficiente.
  199.             // Per ottenere una implementazione efficiente:
  200.             // 1. Usare metodo select di questa classe indirizzando esattamente i field necessari
  201.             // 2. Usare metodo getPortaApplicativaFetch() sul risultato della select per ottenere un oggetto PortaApplicativa
  202.             //    La fetch con la map inserirĂ  nell'oggetto solo i valori estratti
  203.    
  204.             List<Long> ids = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, expression);
  205.            
  206.             for(Long id: ids) {
  207.                 list.add(this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour));
  208.             }
  209.            
  210.         }

  211.         return list;      
  212.        
  213.     }
  214.    
  215.     private Object getObjectFromMap(Map<String,Object> map,String name){
  216.         if(map==null){
  217.             return null;
  218.         }
  219.         else if(map.containsKey(name)){
  220.             Object o = map.get(name);
  221.             if(o instanceof org.apache.commons.lang.ObjectUtils.Null){
  222.                 return null;
  223.             }
  224.             else{
  225.                 return o;
  226.             }
  227.         }
  228.         else{
  229.             return null;
  230.         }
  231.     }
  232.    
  233.     @Override
  234.     public PortaApplicativa find(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour)
  235.         throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException,Exception {

  236.         long id = this.findTableId(jdbcProperties, log, connection, sqlQueryObject, expression);
  237.         if(id>0){
  238.             return this.get(jdbcProperties, log, connection, sqlQueryObject, id, idMappingResolutionBehaviour);
  239.         }else{
  240.             throw new NotFoundException("Entry with id["+id+"] not found");
  241.         }
  242.        
  243.     }
  244.    
  245.     @Override
  246.     public NonNegativeNumber count(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws NotImplementedException, ServiceException,Exception {
  247.        
  248.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareCount(jdbcProperties, log, connection, sqlQueryObject, expression,
  249.                                                 this.getPortaApplicativaFieldConverter(), PortaApplicativa.model());
  250.        
  251.         sqlQueryObject.addSelectCountField(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model())+".id","tot",true);
  252.        
  253.         joinEngine(expression,sqlQueryObject);
  254.        
  255.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.count(jdbcProperties, log, connection, sqlQueryObject, expression,
  256.                                                                             this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),listaQuery);
  257.     }

  258.     @Override
  259.     public InUse inUse(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id) throws NotFoundException, NotImplementedException, ServiceException,Exception {
  260.        
  261.         Long id_portaApplicativa = this.findIdPortaApplicativa(jdbcProperties, log, connection, sqlQueryObject, id, true);
  262.         return this.inUseEngine(jdbcProperties, log, connection, sqlQueryObject, id_portaApplicativa);
  263.        
  264.     }

  265.     @Override
  266.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  267.                                                     JDBCPaginatedExpression paginatedExpression, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  268.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  269.                                 paginatedExpression, false, field);
  270.     }
  271.    
  272.     @Override
  273.     public List<Object> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  274.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  275.         List<Map<String,Object>> map =
  276.             this.select(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, distinct, new IField[]{field});
  277.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectSingleObject(map);
  278.     }
  279.    
  280.     @Override
  281.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  282.                                                     JDBCPaginatedExpression paginatedExpression, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  283.         return this.select(jdbcProperties, log, connection, sqlQueryObject,
  284.                                 paginatedExpression, false, field);
  285.     }
  286.    
  287.     @Override
  288.     public List<Map<String,Object>> select(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  289.                                                     JDBCPaginatedExpression paginatedExpression, boolean distinct, IField ... field) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  290.        
  291.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,field);
  292.         try{
  293.        
  294.             ISQLQueryObject sqlQueryObjectDistinct =
  295.                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(distinct,sqlQueryObject, paginatedExpression, log,
  296.                                                 this.getPortaApplicativaFieldConverter(), field);

  297.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression, sqlQueryObjectDistinct);
  298.            
  299.         }finally{
  300.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,field);
  301.         }
  302.     }

  303.     @Override
  304.     public Object aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  305.                                                     JDBCExpression expression, FunctionField functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  306.         Map<String,Object> map =
  307.             this.aggregate(jdbcProperties, log, connection, sqlQueryObject, expression, new FunctionField[]{functionField});
  308.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.selectAggregateObject(map,functionField);
  309.     }
  310.    
  311.     @Override
  312.     public Map<String,Object> aggregate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  313.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {                                                  
  314.        
  315.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  316.         try{
  317.             List<Map<String,Object>> list = selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  318.             return list.get(0);
  319.         }finally{
  320.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  321.         }
  322.     }

  323.     @Override
  324.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  325.                                                     JDBCExpression expression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  326.        
  327.         if(expression.getGroupByFields().isEmpty()){
  328.             throw new ServiceException("GroupBy conditions not found in expression");
  329.         }
  330.        
  331.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,expression,functionField);
  332.         try{
  333.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression);
  334.         }finally{
  335.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,expression,functionField);
  336.         }
  337.     }
  338.    

  339.     @Override
  340.     public List<Map<String,Object>> groupBy(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  341.                                                     JDBCPaginatedExpression paginatedExpression, FunctionField ... functionField) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  342.        
  343.         if(paginatedExpression.getGroupByFields().isEmpty()){
  344.             throw new ServiceException("GroupBy conditions not found in expression");
  345.         }
  346.        
  347.         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.setFields(sqlQueryObject,paginatedExpression,functionField);
  348.         try{
  349.             return selectEngine(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression);
  350.         }finally{
  351.             org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.removeFields(sqlQueryObject,paginatedExpression,functionField);
  352.         }
  353.     }
  354.    
  355.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  356.                                                 IExpression expression) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  357.         return selectEngine(jdbcProperties, log, connection, sqlQueryObject, expression, null);
  358.     }
  359.     protected List<Map<String,Object>> selectEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  360.                                                 IExpression expression, ISQLQueryObject sqlQueryObjectDistinct) throws ServiceException,NotFoundException,NotImplementedException,Exception {
  361.        
  362.         List<Object> listaQuery = new ArrayList<>();
  363.         List<JDBCObject> listaParams = new ArrayList<>();
  364.         List<Object> returnField = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSelect(jdbcProperties, log, connection, sqlQueryObject,
  365.                                 expression, this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  366.                                 listaQuery,listaParams);
  367.        
  368.         joinEngine(expression,sqlQueryObject);
  369.        
  370.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.select(jdbcProperties, log, connection,
  371.                                         org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareSqlQueryObjectForSelectDistinct(sqlQueryObject,sqlQueryObjectDistinct),
  372.                                         expression, this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  373.                                         listaQuery,listaParams,returnField);
  374.         if(list!=null && !list.isEmpty()){
  375.             return list;
  376.         }
  377.         else{
  378.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  379.         }
  380.     }
  381.    
  382.     @Override
  383.     public List<Map<String,Object>> union(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  384.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  385.        
  386.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  387.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  388.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnion(jdbcProperties, log, connection, sqlQueryObject,
  389.                                 this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  390.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  391.        
  392.         if(unionExpression!=null){
  393.             for (int i = 0; i < unionExpression.length; i++) {
  394.                 UnionExpression ue = unionExpression[i];
  395.                 IExpression expression = ue.getExpression();
  396.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  397.             }
  398.         }
  399.        
  400.         List<Map<String,Object>> list = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.union(jdbcProperties, log, connection, sqlQueryObject,
  401.                                         this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  402.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  403.         if(list!=null && !list.isEmpty()){
  404.             return list;
  405.         }
  406.         else{
  407.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  408.         }                              
  409.     }
  410.    
  411.     @Override
  412.     public NonNegativeNumber unionCount(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  413.                                                 Union union, UnionExpression ... unionExpression) throws ServiceException,NotFoundException,NotImplementedException,Exception {    
  414.        
  415.         List<ISQLQueryObject> sqlQueryObjectInnerList = new ArrayList<>();
  416.         List<JDBCObject> jdbcObjects = new ArrayList<>();
  417.         List<Class<?>> returnClassTypes = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareUnionCount(jdbcProperties, log, connection, sqlQueryObject,
  418.                                 this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  419.                                 sqlQueryObjectInnerList, jdbcObjects, union, unionExpression);
  420.        
  421.         if(unionExpression!=null){
  422.             for (int i = 0; i < unionExpression.length; i++) {
  423.                 UnionExpression ue = unionExpression[i];
  424.                 IExpression expression = ue.getExpression();
  425.                 joinEngine(expression,sqlQueryObjectInnerList.get(i));
  426.             }
  427.         }
  428.        
  429.         NonNegativeNumber number = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.unionCount(jdbcProperties, log, connection, sqlQueryObject,
  430.                                         this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(),
  431.                                         sqlQueryObjectInnerList, jdbcObjects, returnClassTypes, union, unionExpression);
  432.         if(number!=null && number.longValue()>=0){
  433.             return number;
  434.         }
  435.         else{
  436.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  437.         }
  438.     }



  439.     // -- ConstructorExpression

  440.     @Override
  441.     public JDBCExpression newExpression(Logger log) throws NotImplementedException, ServiceException {
  442.         try{
  443.             return new JDBCExpression(this.getPortaApplicativaFieldConverter());
  444.         }catch(Exception e){
  445.             throw new ServiceException(e);
  446.         }
  447.     }


  448.     @Override
  449.     public JDBCPaginatedExpression newPaginatedExpression(Logger log) throws NotImplementedException, ServiceException {
  450.         try{
  451.             return new JDBCPaginatedExpression(this.getPortaApplicativaFieldConverter());
  452.         }catch(Exception e){
  453.             throw new ServiceException(e);
  454.         }
  455.     }
  456.    
  457.     @Override
  458.     public JDBCExpression toExpression(JDBCPaginatedExpression paginatedExpression, Logger log) throws NotImplementedException, ServiceException {
  459.         try{
  460.             return new JDBCExpression(paginatedExpression);
  461.         }catch(Exception e){
  462.             throw new ServiceException(e);
  463.         }
  464.     }

  465.     @Override
  466.     public JDBCPaginatedExpression toPaginatedExpression(JDBCExpression expression, Logger log) throws NotImplementedException, ServiceException {
  467.         try{
  468.             return new JDBCPaginatedExpression(expression);
  469.         }catch(Exception e){
  470.             throw new ServiceException(e);
  471.         }
  472.     }
  473.    
  474.    
  475.    
  476.     // -- DB

  477.     @Override
  478.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id, PortaApplicativa obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  479.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  480.                 this.get(jdbcProperties,log,connection,sqlQueryObject,id,null));
  481.     }
  482.    
  483.     @Override
  484.     public void mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, PortaApplicativa obj) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  485.         _mappingTableIds(jdbcProperties,log,connection,sqlQueryObject,obj,
  486.                 this.get(jdbcProperties,log,connection,sqlQueryObject,tableId,null));
  487.     }
  488.     private void _mappingTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, PortaApplicativa obj, PortaApplicativa imgSaved) throws NotFoundException,NotImplementedException,ServiceException,Exception{
  489.         if(imgSaved==null){
  490.             return;
  491.         }
  492.         obj.setId(imgSaved.getId());
  493.         if(obj.getIdSoggetto()!=null &&
  494.                 imgSaved.getIdSoggetto()!=null){
  495.             obj.getIdSoggetto().setId(imgSaved.getIdSoggetto().getId());
  496.         }
  497.         if(obj.getPortaApplicativaServizioApplicativoList()!=null){
  498.             List<org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo> listObj_ = obj.getPortaApplicativaServizioApplicativoList();
  499.             for(org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo itemObj_ : listObj_){
  500.                 org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo itemAlreadySaved_ = null;
  501.                 if(imgSaved.getPortaApplicativaServizioApplicativoList()!=null){
  502.                     List<org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo> listImgSaved_ = imgSaved.getPortaApplicativaServizioApplicativoList();
  503.                     for(org.openspcoop2.core.commons.search.PortaApplicativaServizioApplicativo itemImgSaved_ : listImgSaved_){
  504.                         boolean objEqualsToImgSaved_ = false;
  505.                         if(itemObj_.getIdServizioApplicativo()!=null && itemObj_.getIdServizioApplicativo().getIdSoggetto()!=null &&
  506.                                 itemImgSaved_.getIdServizioApplicativo()!=null && itemImgSaved_.getIdServizioApplicativo().getIdSoggetto()!=null){
  507.                             objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getIdServizioApplicativo().getNome(),itemImgSaved_.getIdServizioApplicativo().getNome()) &&
  508.                                                                 org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getIdServizioApplicativo().getIdSoggetto().getTipo(),itemImgSaved_.getIdServizioApplicativo().getIdSoggetto().getTipo()) &&
  509.                                                                 org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getIdServizioApplicativo().getIdSoggetto().getNome(),itemImgSaved_.getIdServizioApplicativo().getIdSoggetto().getNome());
  510.                         }
  511.                         if(objEqualsToImgSaved_){
  512.                             itemAlreadySaved_=itemImgSaved_;
  513.                             break;
  514.                         }
  515.                     }
  516.                 }
  517.                 if(itemAlreadySaved_!=null){
  518.                     itemObj_.setId(itemAlreadySaved_.getId());
  519.                     if(itemObj_.getIdServizioApplicativo()!=null &&
  520.                             itemAlreadySaved_.getIdServizioApplicativo()!=null){
  521.                         itemObj_.getIdServizioApplicativo().setId(itemAlreadySaved_.getIdServizioApplicativo().getId());
  522.                         if(itemObj_.getIdServizioApplicativo().getIdSoggetto()!=null &&
  523.                                 itemAlreadySaved_.getIdServizioApplicativo().getIdSoggetto()!=null){
  524.                             itemObj_.getIdServizioApplicativo().getIdSoggetto().setId(itemAlreadySaved_.getIdServizioApplicativo().getIdSoggetto().getId());
  525.                         }
  526.                     }
  527.                 }
  528.             }
  529.         }
  530.         if(obj.getPortaApplicativaAzioneList()!=null){
  531.             List<org.openspcoop2.core.commons.search.PortaApplicativaAzione> listObj_ = obj.getPortaApplicativaAzioneList();
  532.             for(org.openspcoop2.core.commons.search.PortaApplicativaAzione itemObj_ : listObj_){
  533.                 org.openspcoop2.core.commons.search.PortaApplicativaAzione itemAlreadySaved_ = null;
  534.                 if(imgSaved.getPortaApplicativaAzioneList()!=null){
  535.                     List<org.openspcoop2.core.commons.search.PortaApplicativaAzione> listImgSaved_ = imgSaved.getPortaApplicativaAzioneList();
  536.                     for(org.openspcoop2.core.commons.search.PortaApplicativaAzione itemImgSaved_ : listImgSaved_){
  537.                         boolean objEqualsToImgSaved_ = false;
  538.                         objEqualsToImgSaved_ = org.openspcoop2.generic_project.utils.Utilities.equals(itemObj_.getNome(),itemImgSaved_.getNome());
  539.                         if(objEqualsToImgSaved_){
  540.                             itemAlreadySaved_=itemImgSaved_;
  541.                             break;
  542.                         }
  543.                     }
  544.                 }
  545.                 if(itemAlreadySaved_!=null){
  546.                     itemObj_.setId(itemAlreadySaved_.getId());
  547.                 }
  548.             }
  549.         }
  550.              
  551.     }
  552.    
  553.     @Override
  554.     public PortaApplicativa get(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  555.         return this.getEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId), idMappingResolutionBehaviour);
  556.     }
  557.    
  558.     private PortaApplicativa getEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, MultipleResultException, NotImplementedException, ServiceException, Exception {
  559.    
  560.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  561.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  562.        
  563.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();
  564.                
  565.         PortaApplicativa portaApplicativa = new PortaApplicativa();
  566.        

  567.         // Object portaApplicativa
  568.         ISQLQueryObject sqlQueryObjectGet_portaApplicativa = sqlQueryObjectGet.newSQLQueryObject();
  569.         sqlQueryObjectGet_portaApplicativa.setANDLogicOperator(true);
  570.         sqlQueryObjectGet_portaApplicativa.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model()));
  571.         sqlQueryObjectGet_portaApplicativa.addSelectField("id");
  572.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME,true));
  573.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().STATO,true));
  574.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().TIPO_SERVIZIO,true));
  575.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME_SERVIZIO,true));
  576.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().VERSIONE_SERVIZIO,true));
  577.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().MODE_AZIONE,true));
  578.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME_AZIONE,true));
  579.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME_PORTA_DELEGANTE_AZIONE,true));
  580.         sqlQueryObjectGet_portaApplicativa.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().CANALE,true));
  581.         sqlQueryObjectGet_portaApplicativa.addWhereCondition("id=?");

  582.         // Get portaApplicativa
  583.         portaApplicativa = (PortaApplicativa) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_portaApplicativa.createSQLQuery(), jdbcProperties.isShowSql(), PortaApplicativa.model(), this.getPortaApplicativaFetch(),
  584.             new JDBCObject(tableId,Long.class));


  585.         // Object _portaApplicativa_soggetto (recupero id)
  586.         ISQLQueryObject sqlQueryObjectGet_portaApplicativa_soggetto_readFkId = sqlQueryObjectGet.newSQLQueryObject();
  587.         sqlQueryObjectGet_portaApplicativa_soggetto_readFkId.addFromTable(this.getPortaApplicativaFieldConverter().toTable(org.openspcoop2.core.commons.search.PortaApplicativa.model()));
  588.         sqlQueryObjectGet_portaApplicativa_soggetto_readFkId.addSelectField("id_soggetto");
  589.         sqlQueryObjectGet_portaApplicativa_soggetto_readFkId.addWhereCondition("id=?");
  590.         sqlQueryObjectGet_portaApplicativa_soggetto_readFkId.setANDLogicOperator(true);
  591.         Long idFK_portaApplicativa_soggetto = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_portaApplicativa_soggetto_readFkId.createSQLQuery(), jdbcProperties.isShowSql(),Long.class,
  592.                 new JDBCObject(portaApplicativa.getId(),Long.class));
  593.        
  594.         // Object _portaApplicativa_soggetto
  595.         ISQLQueryObject sqlQueryObjectGet_portaApplicativa_soggetto = sqlQueryObjectGet.newSQLQueryObject();
  596.         sqlQueryObjectGet_portaApplicativa_soggetto.addFromTable("soggetti");
  597.         sqlQueryObjectGet_portaApplicativa_soggetto.addSelectField("tipo_soggetto");
  598.         sqlQueryObjectGet_portaApplicativa_soggetto.addSelectField("nome_soggetto");
  599.         sqlQueryObjectGet_portaApplicativa_soggetto.setANDLogicOperator(true);
  600.         sqlQueryObjectGet_portaApplicativa_soggetto.addWhereCondition("id=?");

  601.         // Recupero _portaApplicativa_soggetto
  602.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_portaApplicativa_soggetto = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  603.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(idFK_portaApplicativa_soggetto,Long.class)
  604.         };
  605.         List<Class<?>> listaFieldIdReturnType_portaApplicativa_soggetto = new ArrayList<Class<?>>();
  606.         listaFieldIdReturnType_portaApplicativa_soggetto.add(String.class);
  607.         listaFieldIdReturnType_portaApplicativa_soggetto.add(String.class);
  608.         List<Object> listaFieldId_portaApplicativa_soggetto = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_portaApplicativa_soggetto.createSQLQuery(), jdbcProperties.isShowSql(),
  609.                 listaFieldIdReturnType_portaApplicativa_soggetto, searchParams_portaApplicativa_soggetto);
  610.         IdSoggetto idSoggetto = new IdSoggetto();
  611.         idSoggetto.setTipo((String)listaFieldId_portaApplicativa_soggetto.get(0));
  612.         idSoggetto.setNome((String)listaFieldId_portaApplicativa_soggetto.get(1));
  613.         portaApplicativa.setIdSoggetto(idSoggetto);


  614.         // Object portaApplicativa_portaApplicativaServizioApplicativo
  615.         ISQLQueryObject sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo = sqlQueryObjectGet.newSQLQueryObject();
  616.         sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo.setANDLogicOperator(true);
  617.         sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO));
  618.         sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo.addSelectField("id");
  619.         sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo.addWhereCondition("id_porta=?");

  620.         // Get portaApplicativa_portaApplicativaServizioApplicativo
  621.         java.util.List<Object> portaApplicativa_portaApplicativaServizioApplicativo_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo.createSQLQuery(), jdbcProperties.isShowSql(), PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO, this.getPortaApplicativaFetch(),
  622.             new JDBCObject(portaApplicativa.getId(),Long.class));

  623.         if(portaApplicativa_portaApplicativaServizioApplicativo_list != null) {
  624.             for (Object portaApplicativa_portaApplicativaServizioApplicativo_object: portaApplicativa_portaApplicativaServizioApplicativo_list) {
  625.                 PortaApplicativaServizioApplicativo portaApplicativa_portaApplicativaServizioApplicativo = (PortaApplicativaServizioApplicativo) portaApplicativa_portaApplicativaServizioApplicativo_object;


  626.                 // Object _portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo (recupero id)
  627.                 ISQLQueryObject sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId = sqlQueryObjectGet.newSQLQueryObject();
  628.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId.addFromTable(this.getPortaApplicativaFieldConverter().toTable(org.openspcoop2.core.commons.search.PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO));
  629.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId.addSelectField("id_servizio_applicativo");
  630.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId.addWhereCondition("id=?");
  631.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId.setANDLogicOperator(true);
  632.                 Long idFK_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo_readFkId.createSQLQuery(), jdbcProperties.isShowSql(),Long.class,
  633.                         new JDBCObject(portaApplicativa_portaApplicativaServizioApplicativo.getId(),Long.class));
  634.                
  635.                 // Object _portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo
  636.                 ISQLQueryObject sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo = sqlQueryObjectGet.newSQLQueryObject();
  637.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.addFromTable("servizi_applicativi");
  638.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.addSelectField("nome");
  639.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.addSelectField("id_soggetto");
  640.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.setANDLogicOperator(true);
  641.                 sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.addWhereCondition("id=?");

  642.                 // Recupero _portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo
  643.                 org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  644.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(idFK_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo,Long.class)
  645.                 };
  646.                 List<Class<?>> listaFieldIdReturnType_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo = new ArrayList<Class<?>>();
  647.                 listaFieldIdReturnType_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.add(String.class);
  648.                 listaFieldIdReturnType_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.add(Long.class);
  649.                 List<Object> listaFieldId_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.createSQLQuery(), jdbcProperties.isShowSql(),
  650.                         listaFieldIdReturnType_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo, searchParams_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo);
  651.                 IdServizioApplicativo idServizioApplicativo = new IdServizioApplicativo();
  652.                 idServizioApplicativo.setNome((String)listaFieldId_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.get(0));
  653.                 Long idSoggettoLong = (Long) listaFieldId_portaApplicativa_portaApplicativaServizioApplicativo_servizioApplicativo.get(1);
  654.                 IdSoggetto idSoggettoSA = this.jdbcServiceManager.getSoggettoServiceSearch().convertToId(
  655.                         ((IDBSoggettoServiceSearch)this.jdbcServiceManager.getSoggettoServiceSearch()).get(idSoggettoLong)
  656.                         );
  657.                 idServizioApplicativo.setIdSoggetto(idSoggettoSA);
  658.                 portaApplicativa_portaApplicativaServizioApplicativo.setIdServizioApplicativo(idServizioApplicativo);
  659.                
  660.                 portaApplicativa.addPortaApplicativaServizioApplicativo(portaApplicativa_portaApplicativaServizioApplicativo);
  661.             }
  662.         }

  663.         // Object portaApplicativa_portaApplicativaAzione
  664.         ISQLQueryObject sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione = sqlQueryObjectGet.newSQLQueryObject();
  665.         sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.setANDLogicOperator(true);
  666.         sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE));
  667.         sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.addSelectField("id");
  668.         sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE.NOME,true));
  669.         sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.addWhereCondition("id_porta=?");

  670.         // Get portaApplicativa_portaApplicativaAzione
  671.         java.util.List<Object> portaApplicativa_portaApplicativaAzione_list = jdbcUtilities.executeQuery(sqlQueryObjectGet_portaApplicativa_portaApplicativaAzione.createSQLQuery(), jdbcProperties.isShowSql(), PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE, this.getPortaApplicativaFetch(),
  672.             new JDBCObject(portaApplicativa.getId(),Long.class));

  673.         if(portaApplicativa_portaApplicativaAzione_list != null) {
  674.             for (Object portaApplicativa_portaApplicativaAzione_object: portaApplicativa_portaApplicativaAzione_list) {
  675.                 PortaApplicativaAzione portaApplicativa_portaApplicativaAzione = (PortaApplicativaAzione) portaApplicativa_portaApplicativaAzione_object;


  676.                 portaApplicativa.addPortaApplicativaAzione(portaApplicativa_portaApplicativaAzione);
  677.             }
  678.         }            
  679.        
  680.         return portaApplicativa;  
  681.    
  682.     }
  683.    
  684.     @Override
  685.     public boolean exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  686.         return this._exists(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  687.     }
  688.    
  689.     private boolean _exists(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long tableId) throws MultipleResultException, NotImplementedException, ServiceException, Exception {
  690.    
  691.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  692.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  693.                
  694.         boolean existsPortaApplicativa = false;

  695.         sqlQueryObject = sqlQueryObject.newSQLQueryObject();
  696.         sqlQueryObject.setANDLogicOperator(true);

  697.         sqlQueryObject.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model()));
  698.         sqlQueryObject.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME,true));
  699.         sqlQueryObject.addWhereCondition("id=?");


  700.         // Exists portaApplicativa
  701.         existsPortaApplicativa = jdbcUtilities.exists(sqlQueryObject.createSQLQuery(), jdbcProperties.isShowSql(),
  702.             new JDBCObject(tableId,Long.class));

  703.        
  704.         return existsPortaApplicativa;
  705.    
  706.     }
  707.    
  708.     private void joinEngine(IExpression expression, ISQLQueryObject sqlQueryObject) throws NotImplementedException, ServiceException, Exception{
  709.    
  710.         if(expression.inUseModel(PortaApplicativa.model().ID_SOGGETTO,false)){
  711.             String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model());
  712.             String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().ID_SOGGETTO);
  713.             sqlQueryObject.addWhereCondition(tableName1+".id_soggetto="+tableName2+".id");
  714.         }
  715.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO,false)){
  716.             String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model());
  717.             String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO);
  718.             sqlQueryObject.addWhereCondition(tableName1+".id="+tableName2+".id_porta");
  719.         }
  720.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO,false)){
  721.             String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO);
  722.             String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO);
  723.             sqlQueryObject.addWhereCondition(tableName1+".id_servizio_applicativo="+tableName2+".id");
  724.         }
  725.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO,false)){
  726.             String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO);
  727.             String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO);
  728.             sqlQueryObject.addWhereCondition(tableName1+".id_soggetto="+tableName2+".id");
  729.         }
  730.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE,false)){
  731.             String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model());
  732.             String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE);
  733.             sqlQueryObject.addWhereCondition(tableName1+".id="+tableName2+".id_porta");
  734.         }
  735.        
  736.        
  737.         boolean addFromPDSA = false;
  738.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO,false)){
  739.             if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO,false)==false){
  740.                
  741.                 sqlQueryObject.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO));
  742.                
  743.                 String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model());
  744.                 String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO);
  745.                 try{
  746.                     sqlQueryObject.addWhereCondition(tableName1+".id="+tableName2+".id_porta");
  747.                 }catch(Exception e){
  748.                     // exception se gia' esiste
  749.                 }
  750.                
  751.                 addFromPDSA = true;
  752.             }
  753.         }
  754.         if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO,false)){
  755.             if(expression.inUseModel(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO,false)==false){
  756.                
  757.                 sqlQueryObject.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO));
  758.                
  759.                 String tableName1 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO);
  760.                 String tableName2 = this.getPortaApplicativaFieldConverter().toAliasTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO);
  761.                 try{
  762.                     sqlQueryObject.addWhereCondition(tableName1+".id_servizio_applicativo="+tableName2+".id");
  763.                 }catch(Exception e){
  764.                     // exception se gia' esiste
  765.                 }
  766.                
  767.             }
  768.             if(addFromPDSA==false){
  769.                 sqlQueryObject.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO));
  770.             }
  771.         }
  772.        
  773.     }
  774.    
  775.     protected java.util.List<Object> getRootTablePrimaryKeyValuesEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id) throws NotFoundException, ServiceException, NotImplementedException, Exception{
  776.         // Identificativi
  777.         java.util.List<Object> rootTableIdValues = new java.util.ArrayList<>();
  778.         Long longId = this.findIdPortaApplicativa(jdbcProperties, log, connection, sqlQueryObject.newSQLQueryObject(), id, true);
  779.         rootTableIdValues.add(longId);
  780.        
  781.         return rootTableIdValues;
  782.     }
  783.    
  784.     protected Map<String, List<IField>> getMapTableToPKColumnEngine() throws NotImplementedException, Exception{
  785.    
  786.         PortaApplicativaFieldConverter converter = this.getPortaApplicativaFieldConverter();
  787.         Map<String, List<IField>> mapTableToPKColumn = new java.util.HashMap<>();
  788.         UtilsTemplate<IField> utilities = new UtilsTemplate<>();

  789.         // PortaApplicativa.model()
  790.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model()),
  791.             utilities.newList(
  792.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model()))
  793.             ));

  794.         // PortaApplicativa.model().ID_SOGGETTO
  795.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model().ID_SOGGETTO),
  796.             utilities.newList(
  797.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model().ID_SOGGETTO))
  798.             ));

  799.         // PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO
  800.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO),
  801.             utilities.newList(
  802.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO))
  803.             ));

  804.         // PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO
  805.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO),
  806.             utilities.newList(
  807.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO))
  808.             ));

  809.         // PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO
  810.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO),
  811.             utilities.newList(
  812.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_SERVIZIO_APPLICATIVO.ID_SERVIZIO_APPLICATIVO.ID_SOGGETTO))
  813.             ));

  814.         // PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE
  815.         mapTableToPKColumn.put(converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE),
  816.             utilities.newList(
  817.                 new CustomField("id", Long.class, "id", converter.toTable(PortaApplicativa.model().PORTA_APPLICATIVA_AZIONE))
  818.             ));
  819.        
  820.         return mapTableToPKColumn;      
  821.     }
  822.    
  823.     @Override
  824.     public List<Long> findAllTableIds(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCPaginatedExpression paginatedExpression) throws ServiceException, NotImplementedException, Exception {
  825.        
  826.         List<Long> list = new ArrayList<Long>();

  827.         sqlQueryObject.setSelectDistinct(true);
  828.         sqlQueryObject.setANDLogicOperator(true);
  829.         sqlQueryObject.addSelectField(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model())+".id");
  830.         Class<?> objectIdClass = Long.class;
  831.        
  832.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFindAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  833.                                                 this.getPortaApplicativaFieldConverter(), PortaApplicativa.model());
  834.        
  835.         joinEngine(paginatedExpression,sqlQueryObject);
  836.        
  837.         List<Object> listObjects = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.findAll(jdbcProperties, log, connection, sqlQueryObject, paginatedExpression,
  838.                                                                             this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(), objectIdClass, listaQuery);
  839.         for(Object object: listObjects) {
  840.             list.add((Long)object);
  841.         }

  842.         return list;
  843.        
  844.     }
  845.    
  846.     @Override
  847.     public long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, JDBCExpression expression) throws ServiceException, NotFoundException, MultipleResultException, NotImplementedException, Exception {
  848.    
  849.         sqlQueryObject.setSelectDistinct(true);
  850.         sqlQueryObject.setANDLogicOperator(true);
  851.         sqlQueryObject.addSelectField(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model())+".id");
  852.         Class<?> objectIdClass = Long.class;
  853.        
  854.         List<Object> listaQuery = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.prepareFind(jdbcProperties, log, connection, sqlQueryObject, expression,
  855.                                                 this.getPortaApplicativaFieldConverter(), PortaApplicativa.model());
  856.        
  857.         joinEngine(expression,sqlQueryObject);

  858.         Object res = org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.find(jdbcProperties, log, connection, sqlQueryObject, expression,
  859.                                                         this.getPortaApplicativaFieldConverter(), PortaApplicativa.model(), objectIdClass, listaQuery);
  860.         if(res!=null && (((Long) res).longValue()>0) ){
  861.             return ((Long) res).longValue();
  862.         }
  863.         else{
  864.             throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  865.         }
  866.        
  867.     }

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

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

  873.         InUse inUse = new InUse();
  874.         inUse.setInUse(false);
  875.        
  876.         /*
  877.          * TODO: implement code that checks whether the object identified by the id parameter is used by other objects
  878.         */
  879.        
  880.         // Delete this line when you have implemented the method
  881.         int throwNotImplemented = 1;
  882.         if(throwNotImplemented==1){
  883.                 throw new NotImplementedException("NotImplemented");
  884.         }
  885.         // Delete this line when you have implemented the method

  886.         return inUse;

  887.     }
  888.    
  889.     @Override
  890.     public IdPortaApplicativa findId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, boolean throwNotFound)
  891.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  892.        
  893.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  894.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  895.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();
  896.                
  897.         // Object _portaApplicativa
  898.         sqlQueryObjectGet.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model()));
  899.         sqlQueryObjectGet.addSelectField(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME,true));
  900.         sqlQueryObjectGet.setANDLogicOperator(true);
  901.         sqlQueryObjectGet.addWhereCondition("id=?");

  902.         // Recupero _portaApplicativa
  903.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_portaApplicativa = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  904.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(tableId,Long.class)
  905.         };
  906.         List<Class<?>> listaFieldIdReturnType_portaApplicativa = new ArrayList<Class<?>>();
  907.         listaFieldIdReturnType_portaApplicativa.add(String.class);
  908.         org.openspcoop2.core.commons.search.IdPortaApplicativa id_portaApplicativa = null;
  909.         List<Object> listaFieldId_portaApplicativa = jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  910.                 listaFieldIdReturnType_portaApplicativa, searchParams_portaApplicativa);
  911.         if(listaFieldId_portaApplicativa==null || listaFieldId_portaApplicativa.size()<=0){
  912.             if(throwNotFound){
  913.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  914.             }
  915.         }
  916.         else{
  917.             // set _portaApplicativa
  918.             id_portaApplicativa = new org.openspcoop2.core.commons.search.IdPortaApplicativa();
  919.             id_portaApplicativa.setNome((String)listaFieldId_portaApplicativa.get(0));

  920.         }
  921.        
  922.         return id_portaApplicativa;
  923.        
  924.     }

  925.     @Override
  926.     public Long findTableId(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id, boolean throwNotFound)
  927.             throws NotFoundException, ServiceException, NotImplementedException, Exception {
  928.    
  929.         return this.findIdPortaApplicativa(jdbcProperties,log,connection,sqlQueryObject,id,throwNotFound);
  930.            
  931.     }
  932.    
  933.     @Override
  934.     public List<List<Object>> nativeQuery(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject,
  935.                                             String sql,List<Class<?>> returnClassTypes,Object ... param) throws ServiceException,NotFoundException,NotImplementedException,Exception{
  936.        
  937.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.nativeQuery(jdbcProperties, log, connection, sqlQueryObject,
  938.                                                                                             sql,returnClassTypes,param);
  939.                                                        
  940.     }
  941.    
  942.     protected Long findIdPortaApplicativa(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPortaApplicativa id, boolean throwNotFound) throws NotFoundException, ServiceException, NotImplementedException, Exception {

  943.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  944.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);

  945.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObject.newSQLQueryObject();


  946.         if(id==null){
  947.             throw new ServiceException("Id not defined");
  948.         }
  949.         if(id.getNome()==null){
  950.             throw new ServiceException("Id.nome not defined");
  951.         }

  952.         // Object _portaApplicativa
  953.         sqlQueryObjectGet.addFromTable(this.getPortaApplicativaFieldConverter().toTable(PortaApplicativa.model()));
  954.         sqlQueryObjectGet.addSelectField("id");
  955.         // Devono essere mappati nella where condition i metodi dell'oggetto id.getXXX
  956.         sqlQueryObjectGet.setANDLogicOperator(true);
  957.         sqlQueryObjectGet.setSelectDistinct(true);
  958.         sqlQueryObjectGet.addWhereCondition(this.getPortaApplicativaFieldConverter().toColumn(PortaApplicativa.model().NOME,true)+"=?");

  959.         // Recupero _portaApplicativa
  960.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] searchParams_portaApplicativa = new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject [] {
  961.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id.getNome(),String.class)
  962.         };
  963.         Long id_portaApplicativa = null;
  964.         try{
  965.             id_portaApplicativa = (Long) jdbcUtilities.executeQuerySingleResult(sqlQueryObjectGet.createSQLQuery(), jdbcProperties.isShowSql(),
  966.                         Long.class, searchParams_portaApplicativa);
  967.         }catch(NotFoundException notFound){
  968.             if(throwNotFound){
  969.                 throw new NotFoundException(notFound);
  970.             }
  971.         }
  972.         if(id_portaApplicativa==null || id_portaApplicativa<=0){
  973.             if(throwNotFound){
  974.                 throw org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.newNotFoundException();
  975.             }
  976.         }
  977.        
  978.         return id_portaApplicativa;
  979.     }
  980. }