ValidazioneSemanticaMainProcessor.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.core.config.driver.utils;
- import java.io.File;
- import java.io.FileInputStream;
- import java.net.URL;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import org.apache.logging.log4j.Level;
- import org.openspcoop2.core.config.driver.ValidazioneSemantica;
- import org.openspcoop2.core.config.driver.db.DriverConfigurazioneDB;
- import org.openspcoop2.core.config.driver.xml.DriverConfigurazioneXML;
- import org.openspcoop2.utils.LoggerWrapperFactory;
- import org.openspcoop2.utils.Utilities;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.openspcoop2.utils.resources.FileSystemUtilities;
- import org.openspcoop2.utils.resources.Loader;
- import org.slf4j.Logger;
- /**
- * Validazione Semantica
- *
- * @author Sandra Giangrandi (sandra@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class ValidazioneSemanticaMainProcessor {
- /**
- * @param args
- */
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
-
- if (args.length < 4) {
- String errorMsg = "ERROR, Usage: java ValidazioneSemanticaMainProcessor commonProperties tipoConfigurazione proprietaConfigurazione validazioneConfigurazione";
- System.err.println(errorMsg);
- throw new Exception(errorMsg);
- }
- // Inizializzo logger
- // System.out.println("LUNGHEZZA: "+args.length);
- // for (int i = 0; i < args.length; i++) {
- // System.out.println("ARG["+i+"]=["+args[i]+"]");
- // }
- try{
- if(args.length==5){
- LoggerWrapperFactory.setLogConfiguration(args[4]);
- }else{
- URL url = ValidazioneSemanticaMainProcessor.class.getResource("/validator.log4j2.properties");
- if(url!=null){
- LoggerWrapperFactory.setLogConfiguration(url);
- }
- else{
- File logFile = FileSystemUtilities.createTempFile("testValidazioneSemanticaConfigurazione_", ".log");
- System.out.println("LogMessages write in "+logFile.getAbsolutePath());
- LoggerWrapperFactory.setDefaultLogConfiguration(Level.ALL, false, null, logFile, "%p <%d{dd-MM-yyyy HH:mm:ss}> %C.%M(%L): %m %n %n");
- }
- }
- }catch(Exception e) {
- String errorMsg = "Errore durante il caricamento del file di log: "+e.getMessage();
- System.err.println(errorMsg);
- System.out.println("Args.length: "+args.length);
- for (int i = 0; i < args.length; i++) {
- System.out.println("Arg["+i+"]=["+args[i]+"]");
- }
- throw new Exception(errorMsg,e);
- }
- Logger log = LoggerWrapperFactory.getLogger("validatoreDatiConfigurazione");
-
-
- java.util.Properties commonProperties = new java.util.Properties();
- try{
- try(FileInputStream fin = new FileInputStream(args[0])){
- commonProperties.load(fin);
- }
- }catch(java.io.IOException e) {
- String errorMsg = "Errore durante il caricamento del file di properties ["+args[0]+"] : "+e.getMessage();
- log.error(errorMsg,e);
- throw new Exception(errorMsg,e);
- }
-
- java.util.Properties reader = new java.util.Properties();
- try{
- try(FileInputStream fin = new FileInputStream(args[2])){
- reader.load(fin);
- }
- }catch(java.io.IOException e) {
- String errorMsg = "Errore durante il caricamento del file di properties ["+args[2]+"] : "+e.getMessage();
- log.error(errorMsg,e);
- throw new Exception(errorMsg,e);
- }
-
-
- // Lettura configurazione
- org.openspcoop2.core.config.Openspcoop2 configurazione = null;
- Connection connectionDB = null;
- String tipoConfigurazione = args[1];
- boolean validaSezioneConfigurazione = Boolean.parseBoolean(args[2]);
-
- if("xml".equals(tipoConfigurazione)){
-
- // Configurazione XML
- String path = reader.getProperty("openspcoop2.configurazione.xml");
- if(path==null){
- throw new Exception("Non e' stato definito il path dove localizzare la configurazione xml");
- }else{
- path = path.trim();
- }
-
- DriverConfigurazioneXML driver = new DriverConfigurazioneXML(path,log);
- if(driver.create)
- log.info("Inizializzata Configurazione PdD XML");
- else
- throw new Exception("ConfigurazionePdD XML non inizializzata");
-
- configurazione = driver.getImmagineCompletaConfigurazionePdD();
- }
- else if("db".equals(tipoConfigurazione)){
-
- // Configurazione DB
-
- // Database
- String tipoDatabase = reader.getProperty("openspcoop2.configurazione.db.tipo");
- if(tipoDatabase==null){
- throw new Exception("Non e' stato definito il tipo di database");
- }else{
- tipoDatabase = tipoDatabase.trim();
- }
-
- String dataSource = reader.getProperty("openspcoop2.configurazione.db.dataSource");
- if(dataSource!=null){
- dataSource = dataSource.trim();
- java.util.Properties context = Utilities.readProperties("openspcoop2.configurazione.db.context.",reader);
-
- DriverConfigurazioneDB driver = new DriverConfigurazioneDB(dataSource,context,log,tipoDatabase);
- if(driver.create)
- log.info("Inizializzata Configurazione DB");
- else
- throw new Exception("Configurazione DB non inizializzata");
-
- configurazione = driver.getImmagineCompletaConfigurazionePdD();
-
- }else{
- String connection = reader.getProperty("openspcoop2.configurazione.db.url");
- if(connection==null){
- throw new Exception("Non e' stata definita una destinazione ne attraverso un datasource, ne attraverso una connessione diretta");
- }
- connection = connection.trim();
- String driverJDBC = reader.getProperty("openspcoop2.configurazione.db.driver");
- if(driverJDBC==null){
- throw new Exception("Connessione diretta: non e' stato definito il Driver");
- }
- driverJDBC =driverJDBC.trim();
- String username = reader.getProperty("openspcoop2.configurazione.db.user");
- String password = reader.getProperty("openspcoop2.configurazione.db.password");
- if(username!=null){
- username = username.trim();
- }
- if(password!=null){
- password = password.trim();
- }
-
- // Carico driver JDBC
- Loader.getInstance().newInstance(driverJDBC);
-
- try{
- if(username!=null){
- connectionDB = DriverManager.getConnection(connection, username, password);
- }else{
- connectionDB = DriverManager.getConnection(connection);
- }
-
- DriverConfigurazioneDB driver = new DriverConfigurazioneDB(connectionDB,log,tipoDatabase);
- if(driver.create)
- log.info("Inizializzata Configurazione DB");
- else
- throw new Exception("Configurazione DB non inizializzata");
-
- configurazione = driver.getImmagineCompletaConfigurazionePdD();
-
- }finally{
- try{
- JDBCUtilities.closeConnection(DriverConfigurazioneDB.getCheckLogger(), connectionDB, DriverConfigurazioneDB.isCheckAutocommit(), DriverConfigurazioneDB.isCheckIsClosed());
- }catch(Exception e){
- // close
- }
- }
- }
-
- }
- else{
- throw new Exception("Tipo di configurazione ["+tipoConfigurazione+"] non gestita");
- }
-
- // VALIDAZIONE SEMANTICA
- try{
- String tipiConnettori = commonProperties.getProperty("openspcoop2.tipiConnettori");
- if(tipiConnettori==null){
- throw new Exception("Non sono stati definiti i tipi di connettori supportati");
- }else{
- tipiConnettori = tipiConnettori.trim();
- }
- String [] tipoConnettoriArray = tipiConnettori.split(",");
- for (int i = 0; i < tipoConnettoriArray.length; i++) {
- tipoConnettoriArray[i]=tipoConnettoriArray[i].trim();
- }
-
- String tipiSoggetti = commonProperties.getProperty("openspcoop2.tipiSoggetti");
- if(tipiSoggetti==null){
- throw new Exception("Non sono stati definiti i tipi di soggetti supportati");
- }else{
- tipiSoggetti = tipiSoggetti.trim();
- }
- String [] tipoSoggettiArray = tipiSoggetti.split(",");
- for (int i = 0; i < tipoSoggettiArray.length; i++) {
- tipoSoggettiArray[i]=tipoSoggettiArray[i].trim();
- }
-
- String tipiServiziSoap = commonProperties.getProperty("openspcoop2.tipiServizi.soap");
- if(tipiServiziSoap==null){
- throw new Exception("Non sono stati definiti i tipi di Servizi supportati");
- }else{
- tipiServiziSoap = tipiServiziSoap.trim();
- }
- String [] tipoServiziSoapArray = tipiServiziSoap.split(",");
- for (int i = 0; i < tipoServiziSoapArray.length; i++) {
- tipoServiziSoapArray[i]=tipoServiziSoapArray[i].trim();
- }
-
- String tipiServiziRest = commonProperties.getProperty("openspcoop2.tipiServizi.rest");
- if(tipiServiziRest==null){
- throw new Exception("Non sono stati definiti i tipi di Servizi supportati");
- }else{
- tipiServiziRest = tipiServiziRest.trim();
- }
- String [] tipoServiziRestArray = tipiServiziRest.split(",");
- for (int i = 0; i < tipoServiziRestArray.length; i++) {
- tipoServiziRestArray[i]=tipoServiziRestArray[i].trim();
- }
-
- String tipiDiagnosticiAppender = commonProperties.getProperty("openspcoop2.diagnostici.appender");
- if(tipiDiagnosticiAppender==null){
- throw new Exception("Non sono stati definiti i tipi di appender supportati (diagnostici)");
- }else{
- tipiDiagnosticiAppender = tipiDiagnosticiAppender.trim();
- }
- String [] tipiDiagnosticiAppenderArray = tipiDiagnosticiAppender.split(",");
- for (int i = 0; i < tipiDiagnosticiAppenderArray.length; i++) {
- tipiDiagnosticiAppenderArray[i]=tipiDiagnosticiAppenderArray[i].trim();
- }
-
- String tipiTracceAppender = commonProperties.getProperty("openspcoop2.tracce.appender");
- if(tipiTracceAppender==null){
- throw new Exception("Non sono stati definiti i tipi di appender supportati (tracce)");
- }else{
- tipiTracceAppender = tipiTracceAppender.trim();
- }
- String [] tipiTracceAppenderArray = tipiTracceAppender.split(",");
- for (int i = 0; i < tipiTracceAppenderArray.length; i++) {
- tipiTracceAppenderArray[i]=tipiTracceAppenderArray[i].trim();
- }
-
- String tipiDumpAppender = commonProperties.getProperty("openspcoop2.dump.appender");
- if(tipiDumpAppender==null){
- throw new Exception("Non sono stati definiti i tipi di appender supportati (dump)");
- }else{
- tipiDumpAppender = tipiDumpAppender.trim();
- }
- String [] tipiDumpAppenderArray = tipiDumpAppender.split(",");
- for (int i = 0; i < tipiDumpAppenderArray.length; i++) {
- tipiDumpAppenderArray[i]=tipiDumpAppenderArray[i].trim();
- }
-
- String tipiAutenticazionePortaDelegata = commonProperties.getProperty("openspcoop2.autenticazione.pd");
- if(tipiAutenticazionePortaDelegata==null){
- throw new Exception("Non sono stati definiti i tipi di autenticazione per la porta delegata supportati");
- }else{
- tipiAutenticazionePortaDelegata = tipiAutenticazionePortaDelegata.trim();
- }
- String [] tipiAutenticazionePortaDelegataArray = tipiAutenticazionePortaDelegata.split(",");
- for (int i = 0; i < tipiAutenticazionePortaDelegataArray.length; i++) {
- tipiAutenticazionePortaDelegataArray[i]=tipiAutenticazionePortaDelegataArray[i].trim();
- }
-
- String tipiAutenticazionePortaApplicativa = commonProperties.getProperty("openspcoop2.autenticazione.pa");
- if(tipiAutenticazionePortaApplicativa==null){
- throw new Exception("Non sono stati definiti i tipi di autenticazione per la porta applicativa supportati");
- }else{
- tipiAutenticazionePortaApplicativa = tipiAutenticazionePortaApplicativa.trim();
- }
- String [] tipiAutenticazionePortaApplicativaArray = tipiAutenticazionePortaApplicativa.split(",");
- for (int i = 0; i < tipiAutenticazionePortaApplicativaArray.length; i++) {
- tipiAutenticazionePortaApplicativaArray[i]=tipiAutenticazionePortaApplicativaArray[i].trim();
- }
-
- String tipiAutorizzazionePortaDelegata = commonProperties.getProperty("openspcoop2.autorizzazione.pd");
- if(tipiAutorizzazionePortaDelegata==null){
- throw new Exception("Non sono stati definiti i tipi di autorizzazione per la porta delegata supportati");
- }else{
- tipiAutorizzazionePortaDelegata = tipiAutorizzazionePortaDelegata.trim();
- }
- String [] tipiAutorizzazionePortaDelegataArray = tipiAutorizzazionePortaDelegata.split(",");
- for (int i = 0; i < tipiAutorizzazionePortaDelegataArray.length; i++) {
- tipiAutorizzazionePortaDelegataArray[i]=tipiAutorizzazionePortaDelegataArray[i].trim();
- }
-
- String tipiAutorizzazionePortaApplicativa = commonProperties.getProperty("openspcoop2.autorizzazione.pa");
- if(tipiAutorizzazionePortaApplicativa==null){
- throw new Exception("Non sono stati definiti i tipi di autorizzazione per la porta applicativa supportati");
- }else{
- tipiAutorizzazionePortaApplicativa = tipiAutorizzazionePortaApplicativa.trim();
- }
- String [] tipiAutorizzazionePortaApplicativaArray = tipiAutorizzazionePortaApplicativa.split(",");
- for (int i = 0; i < tipiAutorizzazionePortaApplicativaArray.length; i++) {
- tipiAutorizzazionePortaApplicativaArray[i]=tipiAutorizzazionePortaApplicativaArray[i].trim();
- }
-
- String tipiAutorizzazioneContenutiPortaDelegata = commonProperties.getProperty("openspcoop2.autorizzazioneContenuto.pd");
- if(tipiAutorizzazioneContenutiPortaDelegata==null){
- throw new Exception("Non sono stati definiti i tipi di autorizzazione contenuti per la porta delegata supportati");
- }else{
- tipiAutorizzazioneContenutiPortaDelegata = tipiAutorizzazioneContenutiPortaDelegata.trim();
- }
- String [] tipiAutorizzazioneContenutiPortaDelegataArray = tipiAutorizzazioneContenutiPortaDelegata.split(",");
- for (int i = 0; i < tipiAutorizzazioneContenutiPortaDelegataArray.length; i++) {
- tipiAutorizzazioneContenutiPortaDelegataArray[i]=tipiAutorizzazioneContenutiPortaDelegataArray[i].trim();
- }
-
- String tipiAutorizzazioneContenutiPortaApplicativa = commonProperties.getProperty("openspcoop2.autorizzazioneContenuto.pa");
- if(tipiAutorizzazioneContenutiPortaApplicativa==null){
- throw new Exception("Non sono stati definiti i tipi di autorizzazione contenuti per la porta applicativa supportati");
- }else{
- tipiAutorizzazioneContenutiPortaApplicativa = tipiAutorizzazioneContenutiPortaApplicativa.trim();
- }
- String [] tipiAutorizzazioneContenutiPortaApplicativaArray = tipiAutorizzazioneContenutiPortaApplicativa.split(",");
- for (int i = 0; i < tipiAutorizzazioneContenutiPortaApplicativaArray.length; i++) {
- tipiAutorizzazioneContenutiPortaApplicativaArray[i]=tipiAutorizzazioneContenutiPortaApplicativaArray[i].trim();
- }
-
- String tipiIntegrazionePD = commonProperties.getProperty("openspcoop2.integrazione.pd");
- if(tipiIntegrazionePD==null){
- throw new Exception("Non sono stati definiti i tipi di Integrazione supportati (PD)");
- }else{
- tipiIntegrazionePD = tipiIntegrazionePD.trim();
- }
- String [] tipiIntegrazionePDArray = tipiIntegrazionePD.split(",");
- for (int i = 0; i < tipiIntegrazionePDArray.length; i++) {
- tipiIntegrazionePDArray[i]=tipiIntegrazionePDArray[i].trim();
- }
-
- String tipiIntegrazionePA = commonProperties.getProperty("openspcoop2.integrazione.pa");
- if(tipiIntegrazionePA==null){
- throw new Exception("Non sono stati definiti i tipi di Integrazione supportati (PA)");
- }else{
- tipiIntegrazionePA = tipiIntegrazionePA.trim();
- }
- String [] tipiIntegrazionePAArray = tipiIntegrazionePA.split(",");
- for (int i = 0; i < tipiIntegrazionePAArray.length; i++) {
- tipiIntegrazionePAArray[i]=tipiIntegrazionePAArray[i].trim();
- }
-
- ValidazioneSemantica validatore = new ValidazioneSemantica(configurazione,tipoConnettoriArray,
- tipoSoggettiArray,tipoServiziSoapArray,tipoServiziRestArray,
- tipiDiagnosticiAppenderArray,tipiTracceAppenderArray,tipiDumpAppenderArray,
- tipiAutenticazionePortaDelegataArray,tipiAutenticazionePortaApplicativaArray,
- tipiAutorizzazionePortaDelegataArray,tipiAutorizzazionePortaApplicativaArray,
- tipiAutorizzazioneContenutiPortaDelegataArray,tipiAutorizzazioneContenutiPortaApplicativaArray,
- tipiIntegrazionePDArray,tipiIntegrazionePAArray,
- validaSezioneConfigurazione,log);
-
- validatore.validazioneSemantica(true);
- }catch(Exception e){
- log.error("Errore: "+e.getMessage());
- throw e;
- //e.printStackTrace(System.out);
- }
-
- }
-
- }