TransactionServiceLibraryReader.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.monitor.engine.config;

  21. import org.openspcoop2.core.commons.dao.DAOFactory;
  22. import org.openspcoop2.core.commons.dao.DAOFactoryException;
  23. import org.openspcoop2.core.plugins.ConfigurazioneServizioAzione;
  24. import org.openspcoop2.monitor.engine.config.transazioni.ConfigurazioneTransazione;
  25. import org.openspcoop2.monitor.engine.config.transazioni.IdConfigurazioneTransazione;
  26. import org.openspcoop2.monitor.engine.config.transazioni.dao.IConfigurazioneTransazioneServiceSearch;

  27. import java.sql.Connection;

  28. import org.slf4j.Logger;
  29. import org.openspcoop2.core.id.IDAccordo;
  30. import org.openspcoop2.generic_project.exception.MultipleResultException;
  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.utils.ServiceManagerProperties;

  35. /**
  36.  * TransactionServiceLibraryReader
  37.  *
  38.  * @author Poli Andrea (apoli@link.it)
  39.  * @author $Author$
  40.  * @version $Rev$, $Date$
  41.  */
  42. public class TransactionServiceLibraryReader {

  43.     private Connection connection;
  44.     private DAOFactory daoFactory = null;
  45.     private ServiceManagerProperties daoFactoryServiceManagerPropertiesPluginsTransazioni = null;
  46.     private Logger daoFactoryLogger = null;
  47.        
  48.     private org.openspcoop2.monitor.engine.config.transazioni.dao.IServiceManager serviceManagerPluginsTransazioni;
  49.        
  50.     private boolean debug;
  51.    
  52.     public TransactionServiceLibraryReader(Connection connection,
  53.             DAOFactory daoFactory, ServiceManagerProperties daoFactoryServiceManagerPropertiesPluginsTransazioni,
  54.             Logger daoFactoryLogger, boolean debug){
  55.         this.connection = connection;
  56.         this.daoFactory = daoFactory;
  57.         this.daoFactoryServiceManagerPropertiesPluginsTransazioni = daoFactoryServiceManagerPropertiesPluginsTransazioni;
  58.         this.daoFactoryLogger = daoFactoryLogger;
  59.         this.debug = debug;
  60.     }
  61.     public TransactionServiceLibraryReader(org.openspcoop2.monitor.engine.config.transazioni.dao.IServiceManager serviceManagerPluginsTransazioni, boolean debug){
  62.         this.serviceManagerPluginsTransazioni = serviceManagerPluginsTransazioni;
  63.         this.debug = debug;
  64.     }
  65.    
  66.     public TransactionServiceLibrary readConfigurazioneTransazione(BasicServiceLibrary basicServiceLibrary, Logger log) throws Exception{
  67.        
  68.         TransactionServiceLibrary transactionServiceLibrary = new TransactionServiceLibrary();
  69.         transactionServiceLibrary.setBasicServiceLibrary(basicServiceLibrary);
  70.            
  71.         String azione = basicServiceLibrary.getAzione();
  72.         String portType = basicServiceLibrary.getPortType();
  73.         IDAccordo idAccordo = basicServiceLibrary.getIdAccordoServizioParteComune();
  74.        
  75.         // ** Verifico se esiste una azione conforme a quella arrivata.**
  76.         ConfigurazioneTransazione transactionActionLibrary = null;
  77.         if(basicServiceLibrary.getServiceActionLibrary()!=null){
  78.             // Accedo alla sezione di transazione per l'azione
  79.             try{
  80.                 transactionActionLibrary = this.getServiceActionTransactionLibrary(basicServiceLibrary.getServiceActionLibrary());
  81.             }catch(NotFoundException notFound){
  82.                 // non e' stata configurata una libreria di servizio per l'azione specifica
  83.                 if(this.debug){
  84.                     log.debug("Non risulta configurata una transazione personalizzata per l'azione specifica ["+azione+"] per la libreria di servizio ["+portType+"] dell'accordo ["+idAccordo.toString()+"]",notFound);
  85.                 }
  86.             }
  87.         }
  88.         if(transactionActionLibrary!=null){
  89.             if(transactionActionLibrary.isEnabled()){
  90.                 transactionServiceLibrary.setTransactionActionLibrary(transactionActionLibrary);
  91.             }
  92.             else{
  93.                 if(this.debug){
  94.                     log.debug("Risulta configurata, ma non abilitata, una transazione personalizzata per l'azione specifica ["+azione+"] per la libreria di servizio ["+portType+"] dell'accordo ["+idAccordo.toString()+"]");
  95.                 }
  96.             }
  97.         }
  98.        
  99.         // ** Recupero informazioni per azione '*'
  100.         ConfigurazioneTransazione transactionActionAllLibrary = null;
  101.         try{
  102.             transactionActionAllLibrary = this.getServiceActionTransactionLibrary(basicServiceLibrary.getServiceActionAllLibrary());
  103.         }catch(NotFoundException notFound){
  104.             // non e' stata configurata una libreria di servizio per l'azione specifica
  105.             if(this.debug){
  106.                 log.debug("Non risulta configurata una transazione personalizzata per l'azione specifica ["+"*"+"] per la libreria di servizio ["+portType+"] dell'accordo ["+idAccordo.toString()+"]",notFound);
  107.             }
  108.         }
  109.         if(transactionActionAllLibrary!=null){
  110.             if(transactionActionAllLibrary.isEnabled()){
  111.                 transactionServiceLibrary.setTransactionActionAllLibrary(transactionActionAllLibrary);
  112.             }
  113.             else{
  114.                 if(this.debug){
  115.                     log.debug("Risulta configurata, ma non abilitata, una transazione personalizzata per l'azione specifica ["+"*"+"] per la libreria di servizio ["+portType+"] dell'accordo ["+idAccordo.toString()+"]");
  116.                 }
  117.             }
  118.         }
  119.        
  120.         return transactionServiceLibrary;
  121.     }
  122.    
  123.     private ConfigurazioneTransazione getServiceActionTransactionLibrary(ConfigurazioneServizioAzione serviceActionLibrary) throws DAOFactoryException, ServiceException, NotImplementedException, NotFoundException, MultipleResultException {
  124.        
  125.         boolean autoCommit = true;
  126.        
  127.         org.openspcoop2.monitor.engine.config.transazioni.dao.IServiceManager serviceManager = this.serviceManagerPluginsTransazioni;
  128.         if(serviceManager==null){
  129.             serviceManager = (org.openspcoop2.monitor.engine.config.transazioni.dao.IServiceManager) this.daoFactory.getServiceManager(
  130.                     org.openspcoop2.monitor.engine.config.transazioni.utils.ProjectInfo.getInstance(),
  131.                     this.connection, autoCommit,
  132.                         this.daoFactoryServiceManagerPropertiesPluginsTransazioni, this.daoFactoryLogger);
  133.             if(serviceManager instanceof org.openspcoop2.monitor.engine.config.transazioni.dao.jdbc.JDBCServiceManager)
  134.                 ((org.openspcoop2.monitor.engine.config.transazioni.dao.jdbc.JDBCServiceManager)serviceManager).getJdbcProperties().setShowSql(this.debug);
  135.         }
  136.        
  137.         IConfigurazioneTransazioneServiceSearch serviceSearch = serviceManager.getConfigurazioneTransazioneServiceSearch();
  138.        
  139.         IdConfigurazioneTransazione idConfigurazioneTransazione = new IdConfigurazioneTransazione();
  140.         org.openspcoop2.monitor.engine.config.transazioni.IdConfigurazioneServizioAzione idConfigurazioneServizioAzione = new org.openspcoop2.monitor.engine.config.transazioni.IdConfigurazioneServizioAzione();
  141.         org.openspcoop2.monitor.engine.config.transazioni.IdConfigurazioneServizio idConfigurazioneServizio = new org.openspcoop2.monitor.engine.config.transazioni.IdConfigurazioneServizio();
  142.         idConfigurazioneServizio.setAccordo(serviceActionLibrary.getIdConfigurazioneServizio().getAccordo());
  143.         idConfigurazioneServizio.setTipoSoggettoReferente(serviceActionLibrary.getIdConfigurazioneServizio().getTipoSoggettoReferente());
  144.         idConfigurazioneServizio.setNomeSoggettoReferente(serviceActionLibrary.getIdConfigurazioneServizio().getNomeSoggettoReferente());
  145.         idConfigurazioneServizio.setVersione(serviceActionLibrary.getIdConfigurazioneServizio().getVersione());
  146.         idConfigurazioneServizio.setServizio(serviceActionLibrary.getIdConfigurazioneServizio().getServizio());
  147.         idConfigurazioneServizioAzione.setIdConfigurazioneServizio(idConfigurazioneServizio);
  148.         idConfigurazioneServizioAzione.setAzione(serviceActionLibrary.getAzione());
  149.         idConfigurazioneTransazione.setIdConfigurazioneServizioAzione(idConfigurazioneServizioAzione);
  150.        
  151.         return serviceSearch.get(idConfigurazioneTransazione);
  152.        
  153.     }
  154.    
  155. }