Converter.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.core.monitor.rs.server.api.impl.utils;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.openspcoop2.core.eventi.constants.TipoSeverita;
import org.openspcoop2.core.eventi.utils.SeveritaConverter;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.monitor.rs.server.config.ServerProperties;
import org.openspcoop2.core.monitor.rs.server.config.SoggettiConfig;
import org.openspcoop2.core.monitor.rs.server.model.DetailTransazione;
import org.openspcoop2.core.monitor.rs.server.model.Evento;
import org.openspcoop2.core.monitor.rs.server.model.InfoImplementazioneApi;
import org.openspcoop2.core.monitor.rs.server.model.ItemTransazione;
import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationExternalId;
import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationInfo;
import org.openspcoop2.core.monitor.rs.server.model.PDNDOrganizationInfoItemTransazione;
import org.openspcoop2.core.monitor.rs.server.model.Riepilogo;
import org.openspcoop2.core.monitor.rs.server.model.RiepilogoApiItem;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.core.transazioni.CredenzialeMittente;
import org.openspcoop2.core.transazioni.DumpMessaggio;
import org.openspcoop2.core.transazioni.constants.TipoMessaggio;
import org.openspcoop2.core.transazioni.utils.CredenzialiMittente;
import org.openspcoop2.core.transazioni.utils.credenziali.CredenzialeTokenClient;
import org.openspcoop2.generic_project.expression.SortOrder;
import org.openspcoop2.generic_project.utils.ServiceManagerProperties;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.sdk.constants.RuoloMessaggio;
import org.openspcoop2.protocol.sdk.diagnostica.DriverMsgDiagnosticiNotFoundException;
import org.openspcoop2.protocol.sdk.diagnostica.FiltroRicercaDiagnosticiConPaginazione;
import org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico;
import org.openspcoop2.protocol.sdk.tracciamento.DriverTracciamentoNotFoundException;
import org.openspcoop2.protocol.sdk.tracciamento.Traccia;
import org.openspcoop2.utils.UtilsException;
import org.openspcoop2.utils.beans.BlackListElement;
import org.openspcoop2.utils.service.beans.DiagnosticoSeveritaEnum;
import org.openspcoop2.utils.service.beans.ProfiloEnum;
import org.openspcoop2.utils.service.beans.TransazioneExt;
import org.openspcoop2.utils.service.beans.TransazioneRuoloEnum;
import org.openspcoop2.utils.service.beans.utils.ProfiloUtils;
import org.openspcoop2.utils.service.fault.jaxrs.FaultCode;
import org.openspcoop2.web.monitor.core.core.PddMonitorProperties;
import org.openspcoop2.web.monitor.eventi.bean.EventoBean;
import org.openspcoop2.web.monitor.statistiche.bean.ConfigurazioneGenerale;
import org.openspcoop2.web.monitor.statistiche.constants.CostantiConfigurazioni;
import org.openspcoop2.web.monitor.transazioni.bean.TransazioneBean;
import org.openspcoop2.web.monitor.transazioni.dao.TransazioniService;
import org.openspcoop2.web.monitor.transazioni.datamodel.TransazioniDM;
import org.slf4j.Logger;
/**
* Converter
*
* @author $Author$
* @version $Rev$, $Date$
*
*/
public class Converter {
public static String toProtocollo(ProfiloEnum profilo) throws UtilsException {
if(profilo==null) {
return ServerProperties.getInstance().getProtocolloDefault();
}
return ProfiloUtils.toProtocollo(profilo);
}
public static Integer toOffset(Integer offset) {
return offset!=null ? offset : 0;
}
public static Integer toLimit(Integer limit) {
return limit!=null ? limit : 25;
}
public static SortOrder toSortOrder(String sort) {
if(StringUtils.isNotEmpty(sort)) {
if(sort.startsWith("+")) {
return SortOrder.ASC;
}
else if(sort.startsWith("-")) {
return SortOrder.DESC;
}
}
return SortOrder.DESC;
}
public static String toSortField(String sort) {
if(StringUtils.isNotEmpty(sort)) {
String sortParam = sort;
if(sort.startsWith("+") || sort.startsWith("-")) {
sortParam = sort.substring(1);
}
if(TransazioniDM.COL_DATA_LATENZA_TOTALE.equals(sortParam)){
return sortParam;
} else if(TransazioniDM.COL_DATA_LATENZA_SERVIZIO.equals(sortParam)){
return sortParam;
} else if(TransazioniDM.COL_DATA_INGRESSO_RICHIESTA.equals(sortParam)){
return sortParam;
}
else {
FaultCode.RICHIESTA_NON_VALIDA.throwException("Sort parameter '"+sort+"' non valido");
}
}
return TransazioniDM.COL_DATA_INGRESSO_RICHIESTA;
}
public static DetailTransazione toTransazioneExt(TransazioneBean transazioneDB, TransazioniService transazioniService,
Connection con, ServiceManagerProperties smp,
Logger log) throws Exception {
org.openspcoop2.pdd.logger.traccia.Converter converter = new org.openspcoop2.pdd.logger.traccia.Converter(log);
PddMonitorProperties govwayMonitorProperties = PddMonitorProperties.getInstance(log);
Traccia tracciaRichiesta = null;
try {
tracciaRichiesta = govwayMonitorProperties.getDriverTracciamento(con,smp).getTraccia(transazioneDB.getIdTransazione(), RuoloMessaggio.RICHIESTA);
}catch(DriverTracciamentoNotFoundException notFound) {}
Traccia tracciaRisposta = null;
try {
tracciaRisposta = govwayMonitorProperties.getDriverTracciamento(con,smp).getTraccia(transazioneDB.getIdTransazione(), RuoloMessaggio.RISPOSTA);
}catch(DriverTracciamentoNotFoundException notFound) {}
FiltroRicercaDiagnosticiConPaginazione filter = new FiltroRicercaDiagnosticiConPaginazione();
filter.setIdTransazione(transazioneDB.getIdTransazione());
List<MsgDiagnostico> messaggiDiagnostici = null;
try {
messaggiDiagnostici = govwayMonitorProperties.getDriverMsgDiagnostici(con,smp).getMessaggiDiagnostici(filter);
}catch(DriverMsgDiagnosticiNotFoundException notFound) {}
CredenzialiMittente credenzialiMittente = Converter.convertToCredenzialiMittente(transazioneDB);
if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO_DUMP_BINARIO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO_DUMP_BINARIO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_INGRESSO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA_DUMP_BINARIO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA_DUMP_BINARIO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RICHIESTA_USCITA);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO_DUMP_BINARIO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO_DUMP_BINARIO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_INGRESSO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA_DUMP_BINARIO)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA_DUMP_BINARIO);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
else if(transazioniService.hasInfoDumpAvailable(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA)) {
DumpMessaggio dumpMessaggio = transazioniService.getDumpMessaggio(transazioneDB.getIdTransazione(), null, null, TipoMessaggio.RISPOSTA_USCITA);
if(dumpMessaggio!=null) {
transazioneDB.addDumpMessaggio(dumpMessaggio);
}
}
TransazioneExt transazioneExt = converter.toTransazioneExt(transazioneDB, credenzialiMittente, tracciaRichiesta, tracciaRisposta, messaggiDiagnostici);
// aggiunto campi supplementari
DetailTransazione detail = new DetailTransazione();
if(transazioneExt.getRichiesta()!=null) {
detail.setData(transazioneExt.getRichiesta().getDataRicezione());
}
if(transazioneExt.getRichiesta()!=null && transazioneExt.getRichiesta().getDataConsegna()!=null &&
transazioneExt.getRisposta()!=null && transazioneExt.getRisposta().getDataAccettazione()!=null) {
long dataRisposta = transazioneExt.getRisposta().getDataAccettazione().getMillis();
long dataRichiesta = transazioneExt.getRichiesta().getDataConsegna().getMillis();
detail.setLatenzaServizio(dataRisposta-dataRichiesta);
}
if(transazioneExt.getRichiesta()!=null && transazioneExt.getRichiesta().getDataAccettazione()!=null &&
transazioneExt.getRisposta()!=null && transazioneExt.getRisposta().getDataConsegna()!=null) {
long dataRisposta = transazioneExt.getRisposta().getDataConsegna().getMillis();
long dataRichiesta = transazioneExt.getRichiesta().getDataAccettazione().getMillis();
detail.setLatenzaTotale(dataRisposta-dataRichiesta);
}
String pdndOrganizationName = transazioneDB.getPdndOrganizationName();
String pdndOrganizationCategory = transazioneDB.getPdndOrganizationCategory();
String pdndExternalId = transazioneDB.getPdndOrganizationExternalId();
if(StringUtils.isNotEmpty(pdndOrganizationName) || StringUtils.isNotEmpty(pdndOrganizationCategory) || StringUtils.isNotEmpty(pdndExternalId)) {
PDNDOrganizationInfo pdndOrganizationInfo = new PDNDOrganizationInfo();
pdndOrganizationInfo.setNome(pdndOrganizationName);
pdndOrganizationInfo.setCategoria(pdndOrganizationCategory);
if(StringUtils.isNotEmpty(pdndExternalId) && pdndExternalId.contains(" ")) {
try {
int indexOf = pdndExternalId.indexOf(" ");
String origin = pdndExternalId.substring(0, indexOf);
String code = pdndExternalId.replaceFirst(origin+" ","");
PDNDOrganizationExternalId extId = new PDNDOrganizationExternalId();
extId.setOrigine(origin);
extId.setCodice(code);
pdndOrganizationInfo.setExternalId(extId);
}
catch(Exception e) {
// ignore
}
}
detail.setPdndOrganization(pdndOrganizationInfo);
}
String richiedente = transazioneDB.getLabelRichiedenteConFruitore();
if(StringUtils.isNotEmpty(richiedente)) {
detail.setRichiedente(richiedente);
}
String dettaglioErrore = transazioneDB.getDettaglioErrore(messaggiDiagnostici);
if(StringUtils.isNotEmpty(dettaglioErrore)) {
detail.setDettaglioErrore(dettaglioErrore);
}
List<BlackListElement> metodiEsclusi = new ArrayList<>();
metodiEsclusi.add(new BlackListElement("setData", DateTime.class));
metodiEsclusi.add(new BlackListElement("setLatenzaServizio", Long.class));
metodiEsclusi.add(new BlackListElement("setLatenzaTotale", Long.class));
metodiEsclusi.add(new BlackListElement("setPdndOrganization", PDNDOrganizationInfo.class));
metodiEsclusi.add(new BlackListElement("setRichiedente", String.class));
metodiEsclusi.add(new BlackListElement("setDettaglioErrore", String.class));
org.openspcoop2.utils.beans.BeanUtils.copy(log, detail, transazioneExt, metodiEsclusi, true);
// Se presenti, finiscono come informazione del token in detail.getMittente().getInformazioniToken()
/*
if(detail.getMittente()!=null) {
detail.getMittente().setUtente(null);
detail.getMittente().setClient(null);
}
*/
return detail;
}
public static ItemTransazione toItemTransazione(TransazioneBean transazioneDB, Logger log) throws Exception {
CredenzialiMittente credenzialiMittente = Converter.convertToCredenzialiMittente(transazioneDB);
org.openspcoop2.pdd.logger.traccia.Converter converter = new org.openspcoop2.pdd.logger.traccia.Converter(log);
if(transazioneDB.getGruppiLabel()!=null && !"".equals(transazioneDB.getGruppiLabel())) {
// converto voce originale
transazioneDB.setGruppi(transazioneDB.getGruppiLabel());
}
if(transazioneDB.getSocketClientAddress()==null && transazioneDB.getSocketClientAddressLabel()!=null) {
// converto voce originale
transazioneDB.setSocketClientAddress(transazioneDB.getSocketClientAddressLabel());
}
if(transazioneDB.getTransportClientAddress()==null && transazioneDB.getTransportClientAddressLabel()!=null) {
// converto voce originale
transazioneDB.setTransportClientAddress(transazioneDB.getTransportClientAddressLabel());
}
TransazioneExt transazione = converter.toTransazioneExt(transazioneDB, credenzialiMittente, null, null, null);
// elimino i campi non previsti in un ItemTransazione
if(transazione.getRichiesta()!=null) {
transazione.getRichiesta().setContenutiIngresso(null);
transazione.getRichiesta().setContenutiUscita(null);
transazione.getRichiesta().setDuplicatiMessaggio(null);
transazione.getRichiesta().setTraccia(null);
transazione.getRichiesta().setDataRicezioneAcquisita(null);
transazione.getRichiesta().setDataConsegnaEffettuata(null);
}
if(transazione.getRisposta()!=null) {
transazione.getRisposta().setContenutiIngresso(null);
transazione.getRisposta().setContenutiUscita(null);
transazione.getRisposta().setDuplicatiMessaggio(null);
transazione.getRisposta().setTraccia(null);
transazione.getRisposta().setFaultConsegna(null);
transazione.getRisposta().setFaultConsegnaFormato(null);
transazione.getRisposta().setFaultRicezione(null);
transazione.getRisposta().setFaultRicezioneFormato(null);
transazione.getRisposta().setDettagliErrore(null);
transazione.getRisposta().setDataRicezioneAcquisita(null);
if(transazione.getRisposta().getDataConsegnaEffettuata()!=null) { // inverto
transazione.getRisposta().setDataConsegna(transazione.getRisposta().getDataConsegnaEffettuata());
}
transazione.getRisposta().setDataConsegnaEffettuata(null);
}
if(transazione.getApi()!=null) {
transazione.getApi().setProfiloCollaborazione(null);
transazione.getApi().setIdAsincrono(null);
}
if(transazione.getMittente()!=null) {
transazione.getMittente().setCredenziali(null);
transazione.getMittente().setToken(null);
transazione.getMittente().setInformazioniToken(null);
}
// aggiunto campi supplementari
ItemTransazione item = new ItemTransazione();
if(transazione.getRichiesta()!=null) {
item.setData(transazione.getRichiesta().getDataRicezione());
}
if(transazione.getRichiesta()!=null && transazione.getRichiesta().getDataConsegna()!=null &&
transazione.getRisposta()!=null && transazione.getRisposta().getDataAccettazione()!=null) {
long dataRisposta = transazione.getRisposta().getDataAccettazione().getMillis();
long dataRichiesta = transazione.getRichiesta().getDataConsegna().getMillis();
item.setLatenzaServizio(dataRisposta-dataRichiesta);
}
if(transazione.getRichiesta()!=null && transazione.getRichiesta().getDataAccettazione()!=null &&
transazione.getRisposta()!=null && transazione.getRisposta().getDataConsegna()!=null) {
long dataRisposta = transazione.getRisposta().getDataConsegna().getMillis();
long dataRichiesta = transazione.getRichiesta().getDataAccettazione().getMillis();
item.setLatenzaTotale(dataRisposta-dataRichiesta);
}
String pdndOrganizationName = transazioneDB.getPdndOrganizationName();
if(StringUtils.isNotEmpty(pdndOrganizationName)) {
PDNDOrganizationInfoItemTransazione pdndOrganizationInfo = new PDNDOrganizationInfoItemTransazione();
pdndOrganizationInfo.setNome(pdndOrganizationName);
item.setPdndOrganization(pdndOrganizationInfo);
}
String richiedente = transazioneDB.getLabelRichiedenteConFruitore();
if(StringUtils.isNotEmpty(richiedente)) {
item.setRichiedente(richiedente);
}
List<BlackListElement> metodiEsclusi = new ArrayList<>();
metodiEsclusi.add(new BlackListElement("setData", DateTime.class));
metodiEsclusi.add(new BlackListElement("setLatenzaServizio", Long.class));
metodiEsclusi.add(new BlackListElement("setLatenzaTotale", Long.class));
metodiEsclusi.add(new BlackListElement("setPdndOrganization", PDNDOrganizationInfoItemTransazione.class));
metodiEsclusi.add(new BlackListElement("setRichiedente", String.class));
org.openspcoop2.utils.beans.BeanUtils.copy(log, item, transazione, metodiEsclusi, true );
return item;
}
private static CredenzialiMittente convertToCredenzialiMittente(TransazioneBean transazioneDB) {
CredenzialiMittente credenzialiMittente = new CredenzialiMittente();
if(transazioneDB.getTrasportoMittenteLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
credenziale.setCredenziale(transazioneDB.getTrasportoMittenteLabel());
credenzialiMittente.setTrasporto(credenziale);
}
if(transazioneDB.getTokenSubjectLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
credenziale.setCredenziale(transazioneDB.getTokenSubjectLabel());
credenzialiMittente.setTokenSubject(credenziale);
}
if(transazioneDB.getTokenIssuerLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
credenziale.setCredenziale(transazioneDB.getTokenIssuerLabel());
credenzialiMittente.setTokenIssuer(credenziale);
}
if(transazioneDB.getTokenClientIdLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
String clientId = transazioneDB.getTokenClientIdLabel();
IDServizioApplicativo idSA = transazioneDB.getTokenClient();
if(idSA!=null) {
CredenzialeTokenClient credToken = new CredenzialeTokenClient(clientId, idSA);
try {
credenziale.setCredenziale(credToken.getCredenziale());
}catch(Throwable t) {
credenziale.setCredenziale(clientId);
}
}
else {
credenziale.setCredenziale(clientId);
}
credenzialiMittente.setTokenClientId(credenziale);
}
if(transazioneDB.getTokenUsernameLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
credenziale.setCredenziale(transazioneDB.getTokenUsernameLabel());
credenzialiMittente.setTokenUsername(credenziale);
}
if(transazioneDB.getTokenMailLabel()!=null) {
CredenzialeMittente credenziale = new CredenzialeMittente();
credenziale.setCredenziale(transazioneDB.getTokenMailLabel());
credenzialiMittente.setTokenEMail(credenziale);
}
return credenzialiMittente;
}
public static Evento toEvento(EventoBean eventoDB, Logger log) throws Exception {
Evento evento = new Evento();
if(eventoDB.getSeverita()>=0) {
TipoSeverita tipo = SeveritaConverter.toSeverita(eventoDB.getSeverita());
evento.setSeverita(Enums.toDiagnosticoSeverita.get(tipo));
}
evento.setOrigine(eventoDB.getIdConfigurazione());
if(eventoDB.getOraRegistrazione()!=null) {
evento.setOraRegistrazione(new DateTime(eventoDB.getOraRegistrazione().getTime()));
}
List<BlackListElement> metodiEsclusi = new ArrayList<>();
metodiEsclusi.add(new BlackListElement("setSeverita", DiagnosticoSeveritaEnum.class));
metodiEsclusi.add(new BlackListElement("setOrigine", String.class));
metodiEsclusi.add(new BlackListElement("setOraRegistrazione", DateTime.class));
org.openspcoop2.utils.beans.BeanUtils.copy(log, evento, eventoDB, metodiEsclusi, true);
return evento;
}
public static RiepilogoApiItem toRiepilogoApiItem(ConfigurazioneGenerale configurazioneDB, Logger log) throws Exception {
RiepilogoApiItem riepilogo = new RiepilogoApiItem();
riepilogo.setErogatore(configurazioneDB.getErogatore());
riepilogo.setFruitore(configurazioneDB.getFruitore());
String nomeAPI = configurazioneDB.getServizio();
if(nomeAPI!=null) {
String [] tmp = nomeAPI.split(" v");
String tipoNome = tmp[0];
if(tipoNome.contains("/")) {
riepilogo.setTipo(tipoNome.split("/")[0]);
riepilogo.setNome(tipoNome.split("/")[1]);
}
else {
riepilogo.setNome(tipoNome);
}
String versione = tmp[1];
riepilogo.setVersione(Integer.parseInt(versione));
}
return riepilogo;
}
public static Riepilogo toRiepilogo(List<ConfigurazioneGenerale> listDB_infoGenerali_right, List<ConfigurazioneGenerale> listDB_infoServizi_left ,
ConfigurazioneGenerale soggettiOperativi, Logger log) throws Exception {
Riepilogo riepilogo = new Riepilogo();
if(listDB_infoGenerali_right!=null && !listDB_infoGenerali_right.isEmpty()) {
for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoGenerali_right) {
if(CostantiConfigurazioni.CONF_SOGGETTI_ESTERNI_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setSoggettiDominioEsterno(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_SOGGETTI_OPERATIVI_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setSoggettiDominioInterno(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_SERVIZI_APPLICATIVI_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setApplicativi(Integer.valueOf(configurazioneGenerale.getValue()));
}
}
}
if(listDB_infoServizi_left!=null && !listDB_infoServizi_left.isEmpty()) {
for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoServizi_left) {
if(CostantiConfigurazioni.CONF_ASPC_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setApi(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_ASPS_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setErogazioni(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_FRUIZIONI_SERVIZIO_LABEL.equals(configurazioneGenerale.getLabel())) {
riepilogo.setFruizioni(Integer.valueOf(configurazioneGenerale.getValue()));
}
}
}
if(riepilogo.getSoggettiDominioInterno()==null) {
// mutitenant disabilitato
if(soggettiOperativi!=null) {
riepilogo.setSoggettiDominioInterno(Integer.valueOf(soggettiOperativi.getValue()));
}
}
return riepilogo;
}
public static InfoImplementazioneApi toInfoImplementazioneApi(List<ConfigurazioneGenerale> listDB_infoServizi_left , Logger log) throws Exception {
InfoImplementazioneApi info = new InfoImplementazioneApi();
if(listDB_infoServizi_left!=null && !listDB_infoServizi_left.isEmpty()) {
for (ConfigurazioneGenerale configurazioneGenerale : listDB_infoServizi_left) {
if(CostantiConfigurazioni.CONF_ASPS_LABEL.equals(configurazioneGenerale.getLabel())) {
info.setErogazioni(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_FRUIZIONI_SERVIZIO_LABEL.equals(configurazioneGenerale.getLabel())) {
info.setFruizioni(Integer.valueOf(configurazioneGenerale.getValue()));
}
else if(CostantiConfigurazioni.CONF_AZIONI_LABEL.equals(configurazioneGenerale.getLabel())) {
info.setAzioni(Integer.valueOf(configurazioneGenerale.getValue()));
}
}
}
return info;
}
public static IDServizio toIDServizio(TransazioneRuoloEnum tipo, ProfiloEnum profilo, String soggetto,
String soggettoRemoto, String nomeServizio, String tipoServizio, Integer versioneServizio) throws Exception {
String protocollo = Converter.toProtocollo(profilo);
ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
String tipoSoggetto = protocolFactoryManager.getDefaultOrganizationTypes().get(protocollo);
String tipoServizioEffettivo = tipoServizio !=null ? tipoServizio : protocolFactoryManager._getServiceTypes().get(protocollo).get(0);
String nomeSoggettoLocale = soggetto;
if(nomeSoggettoLocale==null) {
ServerProperties serverProperties = ServerProperties.getInstance();
if(serverProperties.useSoggettoDefault()) {
nomeSoggettoLocale = serverProperties.getSoggettoDefaultIfEnabled(protocollo);
}
else {
throw FaultCode.RICHIESTA_NON_VALIDA.toException("Soggetto locale non indicato; parametro obbligatorio");
}
}
if(!SoggettiConfig.existsIdentificativoPorta(tipoSoggetto, nomeSoggettoLocale)) {
throw FaultCode.RICHIESTA_NON_VALIDA.toException("Il soggetto locale indicato non esiste");
}
String nomeSoggettoErogatore = null;
switch (tipo) {
case EROGAZIONE:
nomeSoggettoErogatore = nomeSoggettoLocale;
break;
case FRUIZIONE:
if(StringUtils.isNotBlank(soggettoRemoto)) {
nomeSoggettoErogatore = soggettoRemoto;
}
else {
FaultCode.RICHIESTA_NON_VALIDA.throwException("Parametro 'soggettoRemoto' รจ obbligatorio per il dettaglio di una fruizione");
}
break;
default:
break;
}
IDServizio idServizio =
IDServizioFactory.getInstance().getIDServizioFromValues(tipoServizioEffettivo, nomeServizio, tipoSoggetto, nomeSoggettoErogatore,
versioneServizio==null ? 1 : versioneServizio);
return idServizio;
}
}