JDBCPluginServiceImpl.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.plugins.dao.jdbc;

  21. import java.sql.Connection;

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

  23. import org.slf4j.Logger;

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

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

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

  38. import org.openspcoop2.core.plugins.PluginProprietaCompatibilita;
  39. import org.openspcoop2.core.plugins.Plugin;
  40. import org.openspcoop2.core.plugins.PluginServizioAzioneCompatibilita;
  41. import org.openspcoop2.core.plugins.PluginServizioCompatibilita;

  42. /**    
  43.  * JDBCPluginServiceImpl
  44.  *
  45.  * @author Poli Andrea (poli@link.it)
  46.  * @author $Author$
  47.  * @version $Rev$, $Date$
  48.  */
  49. public class JDBCPluginServiceImpl extends JDBCPluginServiceSearchImpl
  50.     implements IJDBCServiceCRUDWithId<Plugin, IdPlugin, JDBCServiceManager> {

  51.     @Override
  52.     public void create(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Plugin plugin, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {

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


  58.         // Object plugin
  59.         sqlQueryObjectInsert.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model()));
  60.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().TIPO_PLUGIN,false),"?");
  61.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().CLASS_NAME,false),"?");
  62.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().TIPO,false),"?");
  63.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().DESCRIZIONE,false),"?");
  64.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().LABEL,false),"?");
  65.         sqlQueryObjectInsert.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().STATO,false),"?");

  66.         // Insert plugin
  67.         org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator = this.getPluginFetch().getKeyGeneratorObject(Plugin.model());
  68.         long id = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert, keyGenerator, jdbcProperties.isShowSql(),
  69.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getTipoPlugin(),Plugin.model().TIPO_PLUGIN.getFieldType()),
  70.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getClassName(),Plugin.model().CLASS_NAME.getFieldType()),
  71.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getTipo(),Plugin.model().TIPO.getFieldType()),
  72.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getDescrizione(),Plugin.model().DESCRIZIONE.getFieldType()),
  73.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getLabel(),Plugin.model().LABEL.getFieldType()),
  74.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getStato(),Plugin.model().STATO.getFieldType())
  75.         );
  76.         plugin.setId(id);

  77.         // for plugin
  78.         for (int i = 0; i < plugin.getPluginProprietaCompatibilitaList().size(); i++) {


  79.             // Object plugin.getPluginProprietaCompatibilitaList().get(i)
  80.             ISQLQueryObject sqlQueryObjectInsert_pluginProprietaCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  81.             sqlQueryObjectInsert_pluginProprietaCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  82.             sqlQueryObjectInsert_pluginProprietaCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME,false),"?");
  83.             sqlQueryObjectInsert_pluginProprietaCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE,false),"?");
  84.             sqlQueryObjectInsert_pluginProprietaCompatibilita.addInsertField("id_plugin","?");

  85.             // Insert plugin.getPluginProprietaCompatibilitaList().get(i)
  86.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_pluginProprietaCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA);
  87.             long id_pluginProprietaCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_pluginProprietaCompatibilita, keyGenerator_pluginProprietaCompatibilita, jdbcProperties.isShowSql(),
  88.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getPluginProprietaCompatibilitaList().get(i).getNome(),Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME.getFieldType()),
  89.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getPluginProprietaCompatibilitaList().get(i).getValore(),Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE.getFieldType()),
  90.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  91.             );
  92.             plugin.getPluginProprietaCompatibilitaList().get(i).setId(id_pluginProprietaCompatibilita);
  93.         } // fine for

  94.         // for plugin
  95.         for (int i = 0; i < plugin.getPluginServizioCompatibilitaList().size(); i++) {


  96.             // Object plugin.getPluginServizioCompatibilitaList().get(i)
  97.             ISQLQueryObject sqlQueryObjectInsert_pluginServizioCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  98.             sqlQueryObjectInsert_pluginServizioCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  99.             sqlQueryObjectInsert_pluginServizioCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO,false),"?");
  100.             sqlQueryObjectInsert_pluginServizioCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO,false),"?");
  101.             sqlQueryObjectInsert_pluginServizioCompatibilita.addInsertField("id_plugin","?");

  102.             // Insert plugin.getPluginServizioCompatibilitaList().get(i)
  103.             org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_pluginServizioCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA);
  104.             long id_pluginServizioCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_pluginServizioCompatibilita, keyGenerator_pluginServizioCompatibilita, jdbcProperties.isShowSql(),
  105.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getPluginServizioCompatibilitaList().get(i).getUriAccordo(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO.getFieldType()),
  106.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getPluginServizioCompatibilitaList().get(i).getServizio(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO.getFieldType()),
  107.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  108.             );
  109.             plugin.getPluginServizioCompatibilitaList().get(i).setId(id_pluginServizioCompatibilita);

  110.             // for plugin.getPluginServizioCompatibilitaList().get(i)
  111.             for (int i_pluginServizioCompatibilita = 0; i_pluginServizioCompatibilita < plugin.getPluginServizioCompatibilitaList().get(i).getPluginServizioAzioneCompatibilitaList().size(); i_pluginServizioCompatibilita++) {


  112.                 // Object plugin.getPluginServizioCompatibilitaList().get(i).getPluginServizioAzioneCompatibilitaList().get(i_pluginServizioCompatibilita)
  113.                 ISQLQueryObject sqlQueryObjectInsert_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  114.                 sqlQueryObjectInsert_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  115.                 sqlQueryObjectInsert_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE,false),"?");
  116.                 sqlQueryObjectInsert_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField("id_plugin_servizio_comp","?");

  117.                 // Insert plugin.getPluginServizioCompatibilitaList().get(i).getPluginServizioAzioneCompatibilitaList().get(i_pluginServizioCompatibilita)
  118.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA);
  119.                 long id_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, keyGenerator_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, jdbcProperties.isShowSql(),
  120.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin.getPluginServizioCompatibilitaList().get(i).getPluginServizioAzioneCompatibilitaList().get(i_pluginServizioCompatibilita).getAzione(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE.getFieldType()),
  121.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_pluginServizioCompatibilita),Long.class)
  122.                 );
  123.                 plugin.getPluginServizioCompatibilitaList().get(i).getPluginServizioAzioneCompatibilitaList().get(i_pluginServizioCompatibilita).setId(id_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita);
  124.             } // fine for _pluginServizioCompatibilita
  125.         } // fine for

  126.        
  127.     }

  128.     @Override
  129.     public void update(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin oldId, Plugin plugin, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  130.         ISQLQueryObject sqlQueryObjectUpdate = sqlQueryObject.newSQLQueryObject();
  131.         Long longIdByLogicId = this.findIdPlugin(jdbcProperties, log, connection, sqlQueryObjectUpdate.newSQLQueryObject(), oldId, true);
  132.         Long tableId = plugin.getId();
  133.         if(tableId != null && tableId.longValue() > 0) {
  134.             if(tableId.longValue() != longIdByLogicId.longValue()) {
  135.                 throw new Exception("Ambiguous parameter: plugin.id ["+tableId+"] does not match logic id ["+longIdByLogicId+"]");
  136.             }
  137.         } else {
  138.             tableId = longIdByLogicId;
  139.             plugin.setId(tableId);
  140.         }
  141.         if(tableId==null || tableId<=0){
  142.             throw new Exception("Retrieve tableId failed");
  143.         }

  144.         this.update(jdbcProperties, log, connection, sqlQueryObject, tableId, plugin, idMappingResolutionBehaviour);
  145.     }
  146.     @Override
  147.     public void update(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, Plugin plugin, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  148.    
  149.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  150.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  151.        
  152.         ISQLQueryObject sqlQueryObjectInsert = sqlQueryObject.newSQLQueryObject();
  153.         ISQLQueryObject sqlQueryObjectDelete = sqlQueryObjectInsert.newSQLQueryObject();
  154.         ISQLQueryObject sqlQueryObjectGet = sqlQueryObjectDelete.newSQLQueryObject();
  155.         ISQLQueryObject sqlQueryObjectUpdate = sqlQueryObjectGet.newSQLQueryObject();
  156.        


  157.         // Object plugin
  158.         sqlQueryObjectUpdate.setANDLogicOperator(true);
  159.         sqlQueryObjectUpdate.addUpdateTable(this.getPluginFieldConverter().toTable(Plugin.model()));
  160.         boolean isUpdate_plugin = true;
  161.         java.util.List<JDBCObject> lstObjects_plugin = new java.util.ArrayList<>();
  162.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().TIPO_PLUGIN,false), "?");
  163.         lstObjects_plugin.add(new JDBCObject(plugin.getTipoPlugin(), Plugin.model().TIPO_PLUGIN.getFieldType()));
  164.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().CLASS_NAME,false), "?");
  165.         lstObjects_plugin.add(new JDBCObject(plugin.getClassName(), Plugin.model().CLASS_NAME.getFieldType()));
  166.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().TIPO,false), "?");
  167.         lstObjects_plugin.add(new JDBCObject(plugin.getTipo(), Plugin.model().TIPO.getFieldType()));
  168.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().DESCRIZIONE,false), "?");
  169.         lstObjects_plugin.add(new JDBCObject(plugin.getDescrizione(), Plugin.model().DESCRIZIONE.getFieldType()));
  170.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().LABEL,false), "?");
  171.         lstObjects_plugin.add(new JDBCObject(plugin.getLabel(), Plugin.model().LABEL.getFieldType()));
  172.         sqlQueryObjectUpdate.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().STATO,false), "?");
  173.         lstObjects_plugin.add(new JDBCObject(plugin.getStato(), Plugin.model().STATO.getFieldType()));
  174.         sqlQueryObjectUpdate.addWhereCondition("id=?");
  175.         lstObjects_plugin.add(new JDBCObject(tableId, Long.class));

  176.         if(isUpdate_plugin) {
  177.             // Update plugin
  178.             jdbcUtilities.executeUpdate(sqlQueryObjectUpdate.createSQLUpdate(), jdbcProperties.isShowSql(),
  179.                 lstObjects_plugin.toArray(new JDBCObject[]{}));
  180.         }
  181.         // for plugin_pluginServizioCompatibilita

  182.         java.util.List<Long> ids_plugin_pluginServizioCompatibilita_da_non_eliminare = new java.util.ArrayList<Long>();
  183.         for (Object plugin_pluginServizioCompatibilita_object : plugin.getPluginServizioCompatibilitaList()) {
  184.             PluginServizioCompatibilita plugin_pluginServizioCompatibilita = (PluginServizioCompatibilita) plugin_pluginServizioCompatibilita_object;
  185.             if(plugin_pluginServizioCompatibilita.getId() == null || plugin_pluginServizioCompatibilita.getId().longValue() <= 0) {

  186.                 long id = plugin.getId();          

  187.                 // Object plugin_pluginServizioCompatibilita
  188.                 ISQLQueryObject sqlQueryObjectInsert_plugin_pluginServizioCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  189.                 sqlQueryObjectInsert_plugin_pluginServizioCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  190.                 sqlQueryObjectInsert_plugin_pluginServizioCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO,false),"?");
  191.                 sqlQueryObjectInsert_plugin_pluginServizioCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO,false),"?");
  192.                 sqlQueryObjectInsert_plugin_pluginServizioCompatibilita.addInsertField("id_plugin","?");

  193.                 // Insert plugin_pluginServizioCompatibilita
  194.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_plugin_pluginServizioCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA);
  195.                 long id_plugin_pluginServizioCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_plugin_pluginServizioCompatibilita, keyGenerator_plugin_pluginServizioCompatibilita, jdbcProperties.isShowSql(),
  196.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita.getUriAccordo(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO.getFieldType()),
  197.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita.getServizio(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO.getFieldType()),
  198.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  199.                 );
  200.                 plugin_pluginServizioCompatibilita.setId(id_plugin_pluginServizioCompatibilita);

  201.                 // for plugin_pluginServizioCompatibilita
  202.                 for (int i_plugin_pluginServizioCompatibilita = 0; i_plugin_pluginServizioCompatibilita < plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList().size(); i_plugin_pluginServizioCompatibilita++) {


  203.                     // Object plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList().get(i_plugin_pluginServizioCompatibilita)
  204.                     ISQLQueryObject sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  205.                     sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  206.                     sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE,false),"?");
  207.                     sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField("id_plugin_servizio_comp","?");

  208.                     // Insert plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList().get(i_plugin_pluginServizioCompatibilita)
  209.                     org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA);
  210.                     long id_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, keyGenerator_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, jdbcProperties.isShowSql(),
  211.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList().get(i_plugin_pluginServizioCompatibilita).getAzione(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE.getFieldType()),
  212.                         new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_plugin_pluginServizioCompatibilita),Long.class)
  213.                     );
  214.                     plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList().get(i_plugin_pluginServizioCompatibilita).setId(id_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita);
  215.                 } // fine for _plugin_pluginServizioCompatibilita

  216.                 ids_plugin_pluginServizioCompatibilita_da_non_eliminare.add(plugin_pluginServizioCompatibilita.getId());
  217.             } else {


  218.                 // Object plugin_pluginServizioCompatibilita
  219.                 ISQLQueryObject sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita = sqlQueryObjectUpdate.newSQLQueryObject();
  220.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.setANDLogicOperator(true);
  221.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.addUpdateTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  222.                 boolean isUpdate_plugin_pluginServizioCompatibilita = true;
  223.                 java.util.List<JDBCObject> lstObjects_plugin_pluginServizioCompatibilita = new java.util.ArrayList<>();
  224.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO,false), "?");
  225.                 lstObjects_plugin_pluginServizioCompatibilita.add(new JDBCObject(plugin_pluginServizioCompatibilita.getUriAccordo(), Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.URI_ACCORDO.getFieldType()));
  226.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO,false), "?");
  227.                 lstObjects_plugin_pluginServizioCompatibilita.add(new JDBCObject(plugin_pluginServizioCompatibilita.getServizio(), Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.SERVIZIO.getFieldType()));
  228.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.addWhereCondition("id=?");
  229.                 ids_plugin_pluginServizioCompatibilita_da_non_eliminare.add(plugin_pluginServizioCompatibilita.getId());
  230.                 lstObjects_plugin_pluginServizioCompatibilita.add(new JDBCObject(plugin_pluginServizioCompatibilita.getId(),Long.class));

  231.                 if(isUpdate_plugin_pluginServizioCompatibilita) {
  232.                     // Update plugin_pluginServizioCompatibilita
  233.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita.createSQLUpdate(), jdbcProperties.isShowSql(),
  234.                         lstObjects_plugin_pluginServizioCompatibilita.toArray(new JDBCObject[]{}));
  235.                 }
  236.                 // for plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita

  237.                 java.util.List<Long> ids_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_da_non_eliminare = new java.util.ArrayList<Long>();
  238.                 for (Object plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_object : plugin_pluginServizioCompatibilita.getPluginServizioAzioneCompatibilitaList()) {
  239.                     PluginServizioAzioneCompatibilita plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = (PluginServizioAzioneCompatibilita) plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_object;
  240.                     if(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId() == null || plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId().longValue() <= 0) {

  241.                         long id_plugin_pluginServizioCompatibilita = plugin_pluginServizioCompatibilita.getId();                    

  242.                         // Object plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  243.                         ISQLQueryObject sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  244.                         sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  245.                         sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE,false),"?");
  246.                         sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addInsertField("id_plugin_servizio_comp","?");

  247.                         // Insert plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  248.                         org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA);
  249.                         long id_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, keyGenerator_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita, jdbcProperties.isShowSql(),
  250.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getAzione(),Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE.getFieldType()),
  251.                             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id_plugin_pluginServizioCompatibilita),Long.class)
  252.                         );
  253.                         plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.setId(id_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita);

  254.                         ids_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_da_non_eliminare.add(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId());
  255.                     } else {


  256.                         // Object plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  257.                         ISQLQueryObject sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = sqlQueryObjectUpdate.newSQLQueryObject();
  258.                         sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.setANDLogicOperator(true);
  259.                         sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addUpdateTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  260.                         boolean isUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = true;
  261.                         java.util.List<JDBCObject> lstObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = new java.util.ArrayList<>();
  262.                         sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE,false), "?");
  263.                         lstObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.add(new JDBCObject(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getAzione(), Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA.AZIONE.getFieldType()));
  264.                         sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addWhereCondition("id=?");
  265.                         ids_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_da_non_eliminare.add(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId());
  266.                         lstObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.add(new JDBCObject(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId(),Long.class));

  267.                         if(isUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita) {
  268.                             // Update plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  269.                             jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.createSQLUpdate(), jdbcProperties.isShowSql(),
  270.                                 lstObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.toArray(new JDBCObject[]{}));
  271.                         }
  272.                     }
  273.                 } // fine for plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita

  274.                 // elimino tutte le occorrenze di plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita non presenti nell'update

  275.                 ISQLQueryObject sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  276.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList.setANDLogicOperator(true);
  277.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  278.                 java.util.List<JDBCObject> jdbcObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngine = new java.util.ArrayList<>();

  279.                 sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList.addWhereCondition("id_plugin_servizio_comp=?");
  280.                 jdbcObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngine.add(new JDBCObject(plugin_pluginServizioCompatibilita.getId(), Long.class));

  281.                 StringBuilder marks_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = new StringBuilder();
  282.                 if(ids_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_da_non_eliminare.size() > 0) {
  283.                     for(Long ids : ids_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_da_non_eliminare) {
  284.                         if(marks_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.length() > 0) {
  285.                             marks_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.append(",");
  286.                         }
  287.                         marks_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.append("?");
  288.                         jdbcObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngine.add(new JDBCObject(ids, Long.class));

  289.                     }
  290.                     sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList.addWhereCondition("id NOT IN ("+marks_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.toString()+")");
  291.                 }

  292.                 jdbcUtilities.execute(sqlQueryObjectUpdate_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitadeleteEngine.toArray(new JDBCObject[]{}));

  293.             }
  294.         } // fine for plugin_pluginServizioCompatibilita

  295.         // elimino tutte le occorrenze di plugin_pluginServizioCompatibilita non presenti nell'update

  296.         ISQLQueryObject sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  297.         sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList.setANDLogicOperator(true);
  298.         sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  299.         java.util.List<JDBCObject> jdbcObjects_plugin_pluginServizioCompatibilitadeleteEngine = new java.util.ArrayList<>();

  300.         sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList.addWhereCondition("id_plugin=?");
  301.         jdbcObjects_plugin_pluginServizioCompatibilitadeleteEngine.add(new JDBCObject(plugin.getId(), Long.class));

  302.         StringBuilder marks_plugin_pluginServizioCompatibilita = new StringBuilder();
  303.         if(ids_plugin_pluginServizioCompatibilita_da_non_eliminare.size() > 0) {
  304.             for(Long ids : ids_plugin_pluginServizioCompatibilita_da_non_eliminare) {
  305.                 if(marks_plugin_pluginServizioCompatibilita.length() > 0) {
  306.                     marks_plugin_pluginServizioCompatibilita.append(",");
  307.                 }
  308.                 marks_plugin_pluginServizioCompatibilita.append("?");
  309.                 jdbcObjects_plugin_pluginServizioCompatibilitadeleteEngine.add(new JDBCObject(ids, Long.class));

  310.             }
  311.             sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList.addWhereCondition("id NOT IN ("+marks_plugin_pluginServizioCompatibilita.toString()+")");
  312.         }

  313.         jdbcUtilities.execute(sqlQueryObjectUpdate_pluginServizioCompatibilitadeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_plugin_pluginServizioCompatibilitadeleteEngine.toArray(new JDBCObject[]{}));

  314.         // for plugin_pluginProprietaCompatibilita

  315.         java.util.List<Long> ids_plugin_pluginProprietaCompatibilita_da_non_eliminare = new java.util.ArrayList<Long>();
  316.         for (Object plugin_pluginProprietaCompatibilita_object : plugin.getPluginProprietaCompatibilitaList()) {
  317.             PluginProprietaCompatibilita plugin_pluginProprietaCompatibilita = (PluginProprietaCompatibilita) plugin_pluginProprietaCompatibilita_object;
  318.             if(plugin_pluginProprietaCompatibilita.getId() == null || plugin_pluginProprietaCompatibilita.getId().longValue() <= 0) {

  319.                 long id = plugin.getId();          

  320.                 // Object plugin_pluginProprietaCompatibilita
  321.                 ISQLQueryObject sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita = sqlQueryObjectInsert.newSQLQueryObject();
  322.                 sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita.addInsertTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  323.                 sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME,false),"?");
  324.                 sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita.addInsertField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE,false),"?");
  325.                 sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita.addInsertField("id_plugin","?");

  326.                 // Insert plugin_pluginProprietaCompatibilita
  327.                 org.openspcoop2.utils.jdbc.IKeyGeneratorObject keyGenerator_plugin_pluginProprietaCompatibilita = this.getPluginFetch().getKeyGeneratorObject(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA);
  328.                 long id_plugin_pluginProprietaCompatibilita = jdbcUtilities.insertAndReturnGeneratedKey(sqlQueryObjectInsert_plugin_pluginProprietaCompatibilita, keyGenerator_plugin_pluginProprietaCompatibilita, jdbcProperties.isShowSql(),
  329.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginProprietaCompatibilita.getNome(),Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME.getFieldType()),
  330.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginProprietaCompatibilita.getValore(),Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE.getFieldType()),
  331.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(Long.valueOf(id),Long.class)
  332.                 );
  333.                 plugin_pluginProprietaCompatibilita.setId(id_plugin_pluginProprietaCompatibilita);

  334.                 ids_plugin_pluginProprietaCompatibilita_da_non_eliminare.add(plugin_pluginProprietaCompatibilita.getId());
  335.             } else {


  336.                 // Object plugin_pluginProprietaCompatibilita
  337.                 ISQLQueryObject sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita = sqlQueryObjectUpdate.newSQLQueryObject();
  338.                 sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.setANDLogicOperator(true);
  339.                 sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.addUpdateTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  340.                 boolean isUpdate_plugin_pluginProprietaCompatibilita = true;
  341.                 java.util.List<JDBCObject> lstObjects_plugin_pluginProprietaCompatibilita = new java.util.ArrayList<>();
  342.                 sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME,false), "?");
  343.                 lstObjects_plugin_pluginProprietaCompatibilita.add(new JDBCObject(plugin_pluginProprietaCompatibilita.getNome(), Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.NOME.getFieldType()));
  344.                 sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.addUpdateField(this.getPluginFieldConverter().toColumn(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE,false), "?");
  345.                 lstObjects_plugin_pluginProprietaCompatibilita.add(new JDBCObject(plugin_pluginProprietaCompatibilita.getValore(), Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA.VALORE.getFieldType()));
  346.                 sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.addWhereCondition("id=?");
  347.                 ids_plugin_pluginProprietaCompatibilita_da_non_eliminare.add(plugin_pluginProprietaCompatibilita.getId());
  348.                 lstObjects_plugin_pluginProprietaCompatibilita.add(new JDBCObject(plugin_pluginProprietaCompatibilita.getId(),Long.class));

  349.                 if(isUpdate_plugin_pluginProprietaCompatibilita) {
  350.                     // Update plugin_pluginProprietaCompatibilita
  351.                     jdbcUtilities.executeUpdate(sqlQueryObjectUpdate_plugin_pluginProprietaCompatibilita.createSQLUpdate(), jdbcProperties.isShowSql(),
  352.                         lstObjects_plugin_pluginProprietaCompatibilita.toArray(new JDBCObject[]{}));
  353.                 }
  354.             }
  355.         } // fine for plugin_pluginProprietaCompatibilita

  356.         // elimino tutte le occorrenze di plugin_pluginProprietaCompatibilita non presenti nell'update

  357.         ISQLQueryObject sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList = sqlQueryObjectUpdate.newSQLQueryObject();
  358.         sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList.setANDLogicOperator(true);
  359.         sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  360.         java.util.List<JDBCObject> jdbcObjects_plugin_pluginProprietaCompatibilitadeleteEngine = new java.util.ArrayList<>();

  361.         sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList.addWhereCondition("id_plugin=?");
  362.         jdbcObjects_plugin_pluginProprietaCompatibilitadeleteEngine.add(new JDBCObject(plugin.getId(), Long.class));

  363.         StringBuilder marks_plugin_pluginProprietaCompatibilita = new StringBuilder();
  364.         if(ids_plugin_pluginProprietaCompatibilita_da_non_eliminare.size() > 0) {
  365.             for(Long ids : ids_plugin_pluginProprietaCompatibilita_da_non_eliminare) {
  366.                 if(marks_plugin_pluginProprietaCompatibilita.length() > 0) {
  367.                     marks_plugin_pluginProprietaCompatibilita.append(",");
  368.                 }
  369.                 marks_plugin_pluginProprietaCompatibilita.append("?");
  370.                 jdbcObjects_plugin_pluginProprietaCompatibilitadeleteEngine.add(new JDBCObject(ids, Long.class));

  371.             }
  372.             sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList.addWhereCondition("id NOT IN ("+marks_plugin_pluginProprietaCompatibilita.toString()+")");
  373.         }

  374.         jdbcUtilities.execute(sqlQueryObjectUpdate_pluginProprietaCompatibilitadeleteEngineList.createSQLDelete(), jdbcProperties.isShowSql(), jdbcObjects_plugin_pluginProprietaCompatibilitadeleteEngine.toArray(new JDBCObject[]{}));



  375.     }
  376.    
  377.     @Override
  378.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin id, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  379.        
  380.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  381.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  382.                 this.getMapTableToPKColumnEngine(),
  383.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  384.                 this.getPluginFieldConverter(), this, null, updateFields);
  385.     }
  386.    
  387.     @Override
  388.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin id, IExpression condition, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  389.        
  390.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  391.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  392.                 this.getMapTableToPKColumnEngine(),
  393.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  394.                 this.getPluginFieldConverter(), this, condition, updateFields);
  395.     }
  396.    
  397.     @Override
  398.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin id, UpdateModel ... updateModels) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  399.        
  400.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  401.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  402.                 this.getMapTableToPKColumnEngine(),
  403.                 this.getRootTablePrimaryKeyValuesEngine(jdbcProperties, log, connection, sqlQueryObject, id),
  404.                 this.getPluginFieldConverter(), this, updateModels);
  405.     }  
  406.    
  407.     @Override
  408.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  409.         java.util.List<Object> ids = new java.util.ArrayList<>();
  410.         ids.add(tableId);
  411.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  412.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  413.                 this.getMapTableToPKColumnEngine(),
  414.                 ids,
  415.                 this.getPluginFieldConverter(), this, null, updateFields);
  416.     }
  417.    
  418.     @Override
  419.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, IExpression condition, UpdateField ... updateFields) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  420.         java.util.List<Object> ids = new java.util.ArrayList<>();
  421.         ids.add(tableId);
  422.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  423.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  424.                 this.getMapTableToPKColumnEngine(),
  425.                 ids,
  426.                 this.getPluginFieldConverter(), this, condition, updateFields);
  427.     }
  428.    
  429.     @Override
  430.     public void updateFields(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, UpdateModel ... updateModels) throws NotFoundException, NotImplementedException, ServiceException, Exception {
  431.         java.util.List<Object> ids = new java.util.ArrayList<>();
  432.         ids.add(tableId);
  433.         GenericJDBCUtilities.updateFields(jdbcProperties, log, connection, sqlQueryObject,
  434.                 this.getPluginFieldConverter().toTable(Plugin.model()),
  435.                 this.getMapTableToPKColumnEngine(),
  436.                 ids,
  437.                 this.getPluginFieldConverter(), this, updateModels);
  438.     }
  439.    
  440.     @Override
  441.     public void updateOrCreate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin oldId, Plugin plugin, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {
  442.    
  443.         if(this.exists(jdbcProperties, log, connection, sqlQueryObject, oldId)) {
  444.             this.update(jdbcProperties, log, connection, sqlQueryObject, oldId, plugin,idMappingResolutionBehaviour);
  445.         } else {
  446.             this.create(jdbcProperties, log, connection, sqlQueryObject, plugin,idMappingResolutionBehaviour);
  447.         }
  448.        
  449.     }
  450.    
  451.     @Override
  452.     public void updateOrCreate(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId, Plugin plugin, org.openspcoop2.generic_project.beans.IDMappingBehaviour idMappingResolutionBehaviour) throws NotImplementedException,ServiceException,Exception {
  453.         if(this.exists(jdbcProperties, log, connection, sqlQueryObject, tableId)) {
  454.             this.update(jdbcProperties, log, connection, sqlQueryObject, tableId, plugin,idMappingResolutionBehaviour);
  455.         } else {
  456.             this.create(jdbcProperties, log, connection, sqlQueryObject, plugin,idMappingResolutionBehaviour);
  457.         }
  458.     }
  459.    
  460.     @Override
  461.     public void delete(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Plugin plugin) throws NotImplementedException,ServiceException,Exception {
  462.        
  463.        
  464.         Long longId = null;
  465.         if( (plugin.getId()!=null) && (plugin.getId()>0) ){
  466.             longId = plugin.getId();
  467.         }
  468.         else{
  469.             IdPlugin idPlugin = this.convertToId(jdbcProperties,log,connection,sqlQueryObject,plugin);
  470.             longId = this.findIdPlugin(jdbcProperties,log,connection,sqlQueryObject,idPlugin,false);
  471.             if(longId == null){
  472.                 return; // entry not exists
  473.             }
  474.         }      
  475.        
  476.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, longId);
  477.        
  478.     }

  479.     private void deleteEngine(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, Long id) throws NotImplementedException,ServiceException,Exception {
  480.    
  481.         if(id==null){
  482.             throw new ServiceException("Id is null");
  483.         }
  484.         if(id!=null && id.longValue()<=0){
  485.             throw new ServiceException("Id is less equals 0");
  486.         }
  487.        
  488.         org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities jdbcUtilities =
  489.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCPreparedStatementUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2(), log, connection);
  490.        
  491.         ISQLQueryObject sqlQueryObjectDelete = sqlQueryObject.newSQLQueryObject();
  492.        

  493.         //Recupero oggetto _plugin_pluginServizioCompatibilita
  494.         ISQLQueryObject sqlQueryObjectDelete_plugin_pluginServizioCompatibilitagetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  495.         sqlQueryObjectDelete_plugin_pluginServizioCompatibilitagetEngineToDelete.setANDLogicOperator(true);
  496.         sqlQueryObjectDelete_plugin_pluginServizioCompatibilitagetEngineToDelete.addFromTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  497.         sqlQueryObjectDelete_plugin_pluginServizioCompatibilitagetEngineToDelete.addWhereCondition("id_plugin=?");
  498.         java.util.List<Object> plugin_pluginServizioCompatibilita_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_plugin_pluginServizioCompatibilitagetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA, this.getPluginFetch(),
  499.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  500.         // for plugin_pluginServizioCompatibilita
  501.         for (Object plugin_pluginServizioCompatibilita_object : plugin_pluginServizioCompatibilita_toDelete_list) {
  502.             PluginServizioCompatibilita plugin_pluginServizioCompatibilita = (PluginServizioCompatibilita) plugin_pluginServizioCompatibilita_object;
  503.             if(plugin_pluginServizioCompatibilita==null) {
  504.                 continue;
  505.             }

  506.             //Recupero oggetto _plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  507.             ISQLQueryObject sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitagetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  508.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitagetEngineToDelete.setANDLogicOperator(true);
  509.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitagetEngineToDelete.addFromTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  510.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitagetEngineToDelete.addWhereCondition("id_plugin_servizio_comp=?");
  511.             java.util.List<Object> plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_toDelete_list = jdbcUtilities.executeQuery(sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilitagetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA, this.getPluginFetch(),
  512.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita.getId(),Long.class));

  513.             // for plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  514.             for (Object plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_object : plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_toDelete_list) {
  515.                 PluginServizioAzioneCompatibilita plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = (PluginServizioAzioneCompatibilita) plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita_object;

  516.                 // Object plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  517.                 ISQLQueryObject sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita = sqlQueryObjectDelete.newSQLQueryObject();
  518.                 sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.setANDLogicOperator(true);
  519.                 sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA.PLUGIN_SERVIZIO_AZIONE_COMPATIBILITA));
  520.                 sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.addWhereCondition("id=?");

  521.                 // Delete plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita
  522.                 if(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita != null){
  523.                     jdbcUtilities.execute(sqlQueryObjectDelete_plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.createSQLDelete(), jdbcProperties.isShowSql(),
  524.                     new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita.getId(),Long.class));
  525.                 }
  526.             } // fine for plugin_pluginServizioCompatibilita_pluginServizioAzioneCompatibilita

  527.             // Object plugin_pluginServizioCompatibilita
  528.             ISQLQueryObject sqlQueryObjectDelete_plugin_pluginServizioCompatibilita = sqlQueryObjectDelete.newSQLQueryObject();
  529.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita.setANDLogicOperator(true);
  530.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_SERVIZIO_COMPATIBILITA));
  531.             sqlQueryObjectDelete_plugin_pluginServizioCompatibilita.addWhereCondition("id=?");

  532.             // Delete plugin_pluginServizioCompatibilita
  533.             jdbcUtilities.execute(sqlQueryObjectDelete_plugin_pluginServizioCompatibilita.createSQLDelete(), jdbcProperties.isShowSql(),
  534.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginServizioCompatibilita.getId(),Long.class));
  535.         } // fine for plugin_pluginServizioCompatibilita

  536.         //Recupero oggetto _plugin_pluginProprietaCompatibilita
  537.         ISQLQueryObject sqlQueryObjectDelete_plugin_pluginProprietaCompatibilitagetEngineToDelete = sqlQueryObjectDelete.newSQLQueryObject();
  538.         sqlQueryObjectDelete_plugin_pluginProprietaCompatibilitagetEngineToDelete.setANDLogicOperator(true);
  539.         sqlQueryObjectDelete_plugin_pluginProprietaCompatibilitagetEngineToDelete.addFromTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  540.         sqlQueryObjectDelete_plugin_pluginProprietaCompatibilitagetEngineToDelete.addWhereCondition("id_plugin=?");
  541.         java.util.List<Object> plugin_pluginProprietaCompatibilita_toDelete_list = (java.util.List<Object>) jdbcUtilities.executeQuery(sqlQueryObjectDelete_plugin_pluginProprietaCompatibilitagetEngineToDelete.createSQLQuery(), jdbcProperties.isShowSql(), Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA, this.getPluginFetch(),
  542.             new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(id,Long.class));

  543.         // for plugin_pluginProprietaCompatibilita
  544.         for (Object plugin_pluginProprietaCompatibilita_object : plugin_pluginProprietaCompatibilita_toDelete_list) {
  545.             PluginProprietaCompatibilita plugin_pluginProprietaCompatibilita = (PluginProprietaCompatibilita) plugin_pluginProprietaCompatibilita_object;

  546.             // Object plugin_pluginProprietaCompatibilita
  547.             ISQLQueryObject sqlQueryObjectDelete_plugin_pluginProprietaCompatibilita = sqlQueryObjectDelete.newSQLQueryObject();
  548.             sqlQueryObjectDelete_plugin_pluginProprietaCompatibilita.setANDLogicOperator(true);
  549.             sqlQueryObjectDelete_plugin_pluginProprietaCompatibilita.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model().PLUGIN_PROPRIETA_COMPATIBILITA));
  550.             sqlQueryObjectDelete_plugin_pluginProprietaCompatibilita.addWhereCondition("id=?");

  551.             // Delete plugin_pluginProprietaCompatibilita
  552.             if(plugin_pluginProprietaCompatibilita != null){
  553.                 jdbcUtilities.execute(sqlQueryObjectDelete_plugin_pluginProprietaCompatibilita.createSQLDelete(), jdbcProperties.isShowSql(),
  554.                 new org.openspcoop2.generic_project.dao.jdbc.utils.JDBCObject(plugin_pluginProprietaCompatibilita.getId(),Long.class));
  555.             }
  556.         } // fine for plugin_pluginProprietaCompatibilita

  557.         // Object plugin
  558.         sqlQueryObjectDelete.setANDLogicOperator(true);
  559.         sqlQueryObjectDelete.addDeleteTable(this.getPluginFieldConverter().toTable(Plugin.model()));
  560.         if(id != null)
  561.             sqlQueryObjectDelete.addWhereCondition("id=?");

  562.         // Delete plugin
  563.         jdbcUtilities.execute(sqlQueryObjectDelete.createSQLDelete(), jdbcProperties.isShowSql(),
  564.             new JDBCObject(id,Long.class));

  565.     }

  566.     @Override
  567.     public void deleteById(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, IdPlugin idPlugin) throws NotImplementedException,ServiceException,Exception {

  568.         Long id = null;
  569.         try{
  570.             id = this.findIdPlugin(jdbcProperties, log, connection, sqlQueryObject, idPlugin, true);
  571.         }catch(NotFoundException notFound){
  572.             return;
  573.         }
  574.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, id);
  575.        
  576.     }
  577.    
  578.     @Override
  579.     public NonNegativeNumber deleteAll(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject) throws NotImplementedException,ServiceException,Exception {
  580.        
  581.         return this.deleteAll(jdbcProperties, log, connection, sqlQueryObject, new JDBCExpression(this.getPluginFieldConverter()));

  582.     }

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

  585.         java.util.List<Long> lst = this.findAllTableIds(jdbcProperties, log, connection, sqlQueryObject, new JDBCPaginatedExpression(expression));
  586.        
  587.         for(Long id : lst) {
  588.             this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, id);
  589.         }
  590.        
  591.         return new NonNegativeNumber(lst.size());
  592.    
  593.     }



  594.     // -- DB
  595.    
  596.     @Override
  597.     public void deleteById(JDBCServiceManagerProperties jdbcProperties, Logger log, Connection connection, ISQLQueryObject sqlQueryObject, long tableId) throws ServiceException, NotImplementedException, Exception {
  598.         this.deleteEngine(jdbcProperties, log, connection, sqlQueryObject, Long.valueOf(tableId));
  599.     }
  600.    
  601.     @Override
  602.     public int nativeUpdate(JDBCServiceManagerProperties jdbcProperties, Logger log,Connection connection,ISQLQueryObject sqlObject, String sql,Object ... param) throws ServiceException,NotImplementedException, Exception {
  603.    
  604.         return org.openspcoop2.generic_project.dao.jdbc.utils.GenericJDBCUtilities.nativeUpdate(jdbcProperties, log, connection, sqlObject,
  605.                                                                                             sql,param);
  606.    
  607.     }
  608. }