PddProperties.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.pdd.config;
import java.io.FileInputStream;
import java.util.Properties;
import org.slf4j.Logger;
import org.openspcoop2.pdd.logger.OpenSPCoop2Logger;
import org.openspcoop2.pdd.services.OpenSPCoop2Startup;
import org.openspcoop2.utils.LoggerWrapperFactory;
import org.openspcoop2.utils.UtilsException;
/**
* Questo file permette ridefinire alcune configurazioni della porta di dominio,
* definite normalmente in govway.properties o nella configurazione xml/db della porta,
* con lo scopo di far interoperare correttamente la porta di dominio openspcoop con altre implementazioni.
* L'implementazione di una pdd associata ad un soggetto viene indicata nella definizione della porta di dominio presente
* nel registro dei servizi di OpenSPCoop. Tale informazione verra' utilizzata dalla PdD a runtime, per accedere a questo file di properties,
* e verificare se vi sono qualche opzioni ridefinite per l'implementazione della porta di dominio del soggetto erogatore/fruitore del servizio.
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class PddProperties {
/** Logger utilizzato per errori eventuali. */
private Logger log = null;
/* ******** F I E L D S P R I V A T I ******** */
/** Reader delle proprieta' impostate nel file 'govway.pdd.properties' */
private PddInstanceProperties reader;
/** Copia Statica */
private static PddProperties pddProperties = null;
/* ******** C O S T R U T T O R E ******** */
/**
* Viene chiamato in causa per istanziare il properties reader
*
*
*/
private PddProperties(String location,String confDir) throws UtilsException {
if(OpenSPCoop2Startup.initialize)
this.log = OpenSPCoop2Logger.getLoggerOpenSPCoopCore();
else
this.log = LoggerWrapperFactory.getLogger(PddProperties.class);
/* ---- Lettura del cammino del file di configurazione ---- */
Properties propertiesReader = new Properties();
java.io.InputStream properties = null;
try{
if(location!=null){
properties = new FileInputStream(location);
}else{
properties = PddProperties.class.getResourceAsStream("/govway.pdd.properties");
}
if(properties==null){
throw new UtilsException("File '/govway.pdd.properties' not found");
}
propertiesReader.load(properties);
}catch(Exception e) {
doError(e);
}finally{
try{
if(properties!=null)
properties.close();
}catch(Exception er){
// close
}
}
this.reader = new PddInstanceProperties(propertiesReader, this.log, confDir);
}
private void doError(Exception e) throws UtilsException {
this.log.error("Riscontrato errore durante la lettura del file 'govway.pdd.properties': "+e.getMessage(),e);
throw new UtilsException("PddProperties initialize error: "+e.getMessage(),e);
}
/**
* Il Metodo si occupa di inizializzare il propertiesReader
*
*
*/
public static boolean initialize(String location,String confDir){
try {
PddProperties.pddProperties = new PddProperties(location,confDir);
return true;
}
catch(Exception e) {
return false;
}
}
/**
* Ritorna l'istanza di questa classe
*
* @return Istanza di ClassNameProperties
*
*/
public static PddProperties getInstance() throws OpenSPCoop2ConfigurationException{
if(PddProperties.pddProperties==null) {
// spotbugs warning 'SING_SINGLETON_GETTER_NOT_SYNCHRONIZED': l'istanza viene creata allo startup
synchronized (PddProperties.class) {
throw new OpenSPCoop2ConfigurationException("PddProperties non inizializzato");
}
}
return PddProperties.pddProperties;
}
public static void updateLocalImplementation(Properties prop){
PddProperties.pddProperties.reader.setLocalObjectImplementation(prop);
}
/* ******** M E T O D I ******** */
/**
* Ritorna la la proprieta' ridefinita per la porta di dominio passata come parametro.
*
*
*/
public String getValidazioneBuste_Stato(String nomePdd){
return this.get(nomePdd, ".validazioneBuste.stato");
}
public String getValidazioneBuste_Controllo(String nomePdd){
return this.get(nomePdd,".validazioneBuste.controllo");
}
public String getValidazioneBuste_ProfiloCollaborazione(String nomePdd){
return this.get(nomePdd,".validazioneBuste.profiloCollaborazione");
}
public String getValidazioneBuste_ManifestAttachments(String nomePdd){
return this.get(nomePdd,".validazioneBuste.manifestAttachments");
}
public String getValidazione_FiltroDuplicatiLetturaRegistro(String nomePdd){
return this.get(nomePdd,".validazioneBuste.filtroDuplicati.letturaRegistro");
}
public String getValidazione_ConfermaRicezioneLetturaRegistro(String nomePdd){
return this.get(nomePdd,".validazioneBuste.confermaRicezione.letturaRegistro");
}
public String getValidazione_ConsegnaInOrdineLetturaRegistro(String nomePdd){
return this.get(nomePdd,".validazioneBuste.consegnaInOrdine.letturaRegistro");
}
public String getValidazione_readQualifiedAttribute(String nomePdd){
return this.get(nomePdd,".validazioneBuste.readQualifiedAttribute");
}
public String getValidazione_ValidazioneIDBustaCompleta(String nomePdd){
return this.get(nomePdd,".validazioneBuste.validazioneIDBustaCompleta");
}
public String getBusta_TempoTipo(String nomePdd){
return this.get(nomePdd,".busta.tempo.tipo");
}
public String getBusta_AsincroniAttributiCorrelatiEnable(String nomePdd){
return this.get(nomePdd,".busta.asincroni.attributiCorrelati.enable");
}
public String getBusta_CollaborazioneEnable(String nomePdd){
return this.get(nomePdd,".busta.collaborazione.enable");
}
public String getBusta_IdRiferimentoRichiestaEnable(String nomePdd){
return this.get(nomePdd,".busta.idRiferimentoRichiesta.enable");
}
public String getBusta_ConsegnaInOrdineEnable(String nomePdd){
return this.get(nomePdd,".busta.consegnaInOrdine.enable");
}
public String getBusta_TrasmissioneEnable(String nomePdd){
return this.get(nomePdd,".busta.trasmissione.enable");
}
public String getBusta_RiscontriEnable(String nomePdd){
return this.get(nomePdd,".busta.riscontri.enable");
}
public String getBusta_FiltroduplicatiGenerazioneBustaErrore(String nomePdd){
return this.get(nomePdd,".busta.filtroduplicati.generazioneBustaErrore");
}
public String getValidazioneContenutiApplicativi_Stato(String nomePdd){
return this.get(nomePdd,".validazioneContenutiApplicativi.stato");
}
public String getValidazioneContenutiApplicativi_Tipo(String nomePdd){
return this.get(nomePdd,".validazioneContenutiApplicativi.tipo");
}
public String getValidazioneContenutiApplicativi_AcceptMtomMessage(String nomePdd){
return this.get(nomePdd,".validazioneContenutiApplicativi.acceptMtomMessage");
}
public String getMessageSecurity_ActorDefaultEnable(String nomePdd){
return this.get(nomePdd,".messageSecurity.actorDefault.enable");
}
public String getMessageSecurity_ActorDefaultValue(String nomePdd){
return this.get(nomePdd,".messageSecurity.actorDefault.valore");
}
private String get(String nomePdd,String proprieta){
try{
return this.reader.getValue(nomePdd+proprieta);
}catch(Exception e){
this.log.error("Errore durante la lettura della proprieta' '"+nomePdd+proprieta+"': "+e.getMessage(),e);
return null;
}
}
}