ContenutiUtilities.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.pdd.logger.transazioni;
- import org.openspcoop2.core.commons.dao.DAOFactory;
- import org.openspcoop2.core.transazioni.DumpContenuto;
- import org.openspcoop2.core.transazioni.DumpMessaggio;
- import org.openspcoop2.core.transazioni.IdDumpMessaggio;
- import org.openspcoop2.core.transazioni.Transazione;
- import org.openspcoop2.core.transazioni.constants.TipoMessaggio;
- import org.openspcoop2.core.transazioni.dao.IDumpMessaggioService;
- import org.openspcoop2.monitor.engine.config.TransactionResource;
- import org.openspcoop2.monitor.engine.config.TransactionServiceLibrary;
- import org.openspcoop2.monitor.engine.transaction.TransactionContentUtils;
- import java.util.List;
- import org.slf4j.Logger;
- import org.openspcoop2.generic_project.exception.MultipleResultException;
- import org.openspcoop2.generic_project.exception.NotFoundException;
- import org.openspcoop2.generic_project.exception.NotImplementedException;
- import org.openspcoop2.generic_project.exception.ServiceException;
- import org.openspcoop2.pdd.core.handlers.HandlerException;
- import org.openspcoop2.protocol.sdk.diagnostica.MsgDiagnostico;
- import org.openspcoop2.protocol.sdk.tracciamento.Traccia;
- import org.openspcoop2.utils.date.DateManager;
- /**
- * ContenutiUtilities
- *
- * @author Poli Andrea (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class ContenutiUtilities {
- private Logger logger;
-
- public ContenutiUtilities(Logger log){
- this.logger = log;
- }
-
- public void insertContenuti(Transazione transactionDTO,
- Traccia tracciaRichiesta, Traccia tracciaRisposta,
- List<MsgDiagnostico> msgDiagnostici,
- IDumpMessaggioService dumpMessageService,
- List<TransactionResource> risorse,
- TransactionServiceLibrary transactionServiceLibrary,
- DAOFactory daoFactory) throws HandlerException{
- try {
- boolean updateRichiestaIngresso = false;
- boolean updateRichiestaUscita = false;
- boolean updateRispostaIngresso = false;
- boolean updateRispostaUscita = false;
-
- DumpMessaggio dumpMessaggioRichiestaIngresso = null;
- DumpMessaggio dumpMessaggioRichiestaUscita = null;
- DumpMessaggio dumpMessaggioRispostaIngresso = null;
- DumpMessaggio dumpMessaggioRispostaUscita = null;
-
- IdDumpMessaggio idDumpMessaggioRichiestaIngresso = new IdDumpMessaggio();
- idDumpMessaggioRichiestaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- idDumpMessaggioRichiestaIngresso.setTipoMessaggio(TipoMessaggio.RICHIESTA_INGRESSO);
-
- IdDumpMessaggio idDumpMessaggioRichiestaUscita = new IdDumpMessaggio();
- idDumpMessaggioRichiestaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- idDumpMessaggioRichiestaUscita.setTipoMessaggio(TipoMessaggio.RICHIESTA_USCITA);
-
- IdDumpMessaggio idDumpMessaggioRispostaIngresso = new IdDumpMessaggio();
- idDumpMessaggioRispostaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- idDumpMessaggioRispostaIngresso.setTipoMessaggio(TipoMessaggio.RISPOSTA_INGRESSO);
-
- IdDumpMessaggio idDumpMessaggioRispostaUscita = new IdDumpMessaggio();
- idDumpMessaggioRispostaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- idDumpMessaggioRispostaUscita.setTipoMessaggio(TipoMessaggio.RISPOSTA_USCITA);
-
-
- // ----------------------- Inserimento contenuti -------------------------
- if(risorse!=null && !risorse.isEmpty()){
-
-
- for (TransactionResource risorsaCalcolata : risorse) {
-
- if(org.openspcoop2.core.transazioni.constants.TipoMessaggio.RICHIESTA_INGRESSO.equals(risorsaCalcolata.getTipoMessaggio())){
-
- if(dumpMessaggioRichiestaIngresso==null) {
- dumpMessaggioRichiestaIngresso = getSafe(dumpMessageService, idDumpMessaggioRichiestaIngresso);
- }
-
- if(dumpMessaggioRichiestaIngresso==null){
- dumpMessaggioRichiestaIngresso = new DumpMessaggio();
- dumpMessaggioRichiestaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRichiestaIngresso.setTipoMessaggio(TipoMessaggio.RICHIESTA_INGRESSO);
- dumpMessaggioRichiestaIngresso.setDumpTimestamp(DateManager.getDate());
- }
- DumpContenuto contenuto =
- TransactionContentUtils.createDumpContenuto(risorsaCalcolata.getNome(),
- risorsaCalcolata.getValore(),
- DateManager.getDate());
- dumpMessaggioRichiestaIngresso.addContenuto(contenuto);
- updateRichiestaIngresso = true;
- }
-
- else if(org.openspcoop2.core.transazioni.constants.TipoMessaggio.RICHIESTA_USCITA.equals(risorsaCalcolata.getTipoMessaggio())){
-
- if(dumpMessaggioRichiestaUscita==null) {
- dumpMessaggioRichiestaUscita = getSafe(dumpMessageService, idDumpMessaggioRichiestaUscita);
- }
-
- if(dumpMessaggioRichiestaUscita==null){
- dumpMessaggioRichiestaUscita = new DumpMessaggio();
- dumpMessaggioRichiestaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRichiestaUscita.setTipoMessaggio(TipoMessaggio.RICHIESTA_USCITA);
- dumpMessaggioRichiestaUscita.setDumpTimestamp(DateManager.getDate());
- }
- DumpContenuto contenuto =
- TransactionContentUtils.createDumpContenuto(risorsaCalcolata.getNome(),
- risorsaCalcolata.getValore(),
- DateManager.getDate());
- dumpMessaggioRichiestaUscita.addContenuto(contenuto);
- updateRichiestaUscita = true;
- }
-
- else if(org.openspcoop2.core.transazioni.constants.TipoMessaggio.RISPOSTA_INGRESSO.equals(risorsaCalcolata.getTipoMessaggio())){
-
- if(dumpMessaggioRispostaIngresso==null) {
- dumpMessaggioRispostaIngresso = getSafe(dumpMessageService, idDumpMessaggioRispostaIngresso);
- }
-
- if(dumpMessaggioRispostaIngresso==null){
- dumpMessaggioRispostaIngresso = new DumpMessaggio();
- dumpMessaggioRispostaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRispostaIngresso.setTipoMessaggio(TipoMessaggio.RISPOSTA_INGRESSO);
- dumpMessaggioRispostaIngresso.setDumpTimestamp(DateManager.getDate());
- }
- DumpContenuto contenuto =
- TransactionContentUtils.createDumpContenuto(risorsaCalcolata.getNome(),
- risorsaCalcolata.getValore(),
- DateManager.getDate());
- dumpMessaggioRispostaIngresso.addContenuto(contenuto);
- updateRispostaIngresso = true;
- }
-
- else if(org.openspcoop2.core.transazioni.constants.TipoMessaggio.RISPOSTA_USCITA.equals(risorsaCalcolata.getTipoMessaggio())){
-
- if(dumpMessaggioRispostaUscita==null) {
- dumpMessaggioRispostaUscita = getSafe(dumpMessageService, idDumpMessaggioRispostaUscita);
- }
-
- if(dumpMessaggioRispostaUscita==null){
- dumpMessaggioRispostaUscita = new DumpMessaggio();
- dumpMessaggioRispostaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRispostaUscita.setTipoMessaggio(TipoMessaggio.RISPOSTA_USCITA);
- dumpMessaggioRispostaUscita.setDumpTimestamp(DateManager.getDate());
- }
- DumpContenuto contenuto =
- TransactionContentUtils.createDumpContenuto(risorsaCalcolata.getNome(),
- risorsaCalcolata.getValore(),
- DateManager.getDate());
- dumpMessaggioRispostaUscita.addContenuto(contenuto);
- updateRispostaUscita = true;
- }
- }
- }
-
-
-
- // ----------------------- SDK -------------------------
-
- if(dumpMessaggioRichiestaIngresso==null && transactionServiceLibrary!=null){
- dumpMessaggioRichiestaIngresso = new DumpMessaggio();
- dumpMessaggioRichiestaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRichiestaIngresso.setTipoMessaggio(TipoMessaggio.RICHIESTA_INGRESSO);
- dumpMessaggioRichiestaIngresso.setDumpTimestamp(DateManager.getDate());
- }
-
- if(dumpMessaggioRichiestaUscita==null && transactionServiceLibrary!=null){
- dumpMessaggioRichiestaUscita = new DumpMessaggio();
- dumpMessaggioRichiestaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRichiestaUscita.setTipoMessaggio(TipoMessaggio.RICHIESTA_USCITA);
- dumpMessaggioRichiestaUscita.setDumpTimestamp(DateManager.getDate());
- }
-
- if(dumpMessaggioRispostaIngresso==null && transactionServiceLibrary!=null){
- dumpMessaggioRispostaIngresso = new DumpMessaggio();
- dumpMessaggioRispostaIngresso.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRispostaIngresso.setTipoMessaggio(TipoMessaggio.RISPOSTA_INGRESSO);
- dumpMessaggioRispostaIngresso.setDumpTimestamp(DateManager.getDate());
- }
-
- if(dumpMessaggioRispostaUscita==null && transactionServiceLibrary!=null){
- dumpMessaggioRispostaUscita = new DumpMessaggio();
- dumpMessaggioRispostaUscita.setIdTransazione(transactionDTO.getIdTransazione());
- dumpMessaggioRispostaUscita.setTipoMessaggio(TipoMessaggio.RISPOSTA_USCITA);
- dumpMessaggioRispostaUscita.setDumpTimestamp(DateManager.getDate());
- }
-
- boolean messaggioModificatoSDK = false;
- if(transactionServiceLibrary!=null){
- messaggioModificatoSDK = transactionServiceLibrary.processResourcesBeforeSaveOnDatabase(transactionDTO,
- tracciaRichiesta, tracciaRisposta,
- msgDiagnostici,
- dumpMessaggioRichiestaIngresso, dumpMessaggioRichiestaUscita,
- dumpMessaggioRispostaIngresso, dumpMessaggioRispostaUscita,
- transactionDTO.getStato(),
- this.logger,daoFactory);
- }
-
-
-
-
- // ----------------------- UPDATE -------------------------
- if(updateRichiestaIngresso || messaggioModificatoSDK){
- dumpMessageService.updateOrCreate(idDumpMessaggioRichiestaIngresso, dumpMessaggioRichiestaIngresso);
- }
- if(updateRichiestaUscita || messaggioModificatoSDK){
- dumpMessageService.updateOrCreate(idDumpMessaggioRichiestaUscita, dumpMessaggioRichiestaUscita);
- }
-
- if(updateRispostaIngresso || messaggioModificatoSDK){
- dumpMessageService.updateOrCreate(idDumpMessaggioRispostaIngresso, dumpMessaggioRispostaIngresso);
- }
- if(updateRispostaUscita || messaggioModificatoSDK){
- dumpMessageService.updateOrCreate(idDumpMessaggioRispostaUscita, dumpMessaggioRispostaUscita);
- }
-
- } catch (Exception e) {
- throw new HandlerException("Errore durante la scrittura della transazione sul database: " + e.getLocalizedMessage(), e);
- }
- }
-
- private DumpMessaggio getSafe(IDumpMessaggioService dumpMessageService, IdDumpMessaggio id) throws ServiceException, MultipleResultException, NotImplementedException {
- try{
- return dumpMessageService.get(id);
- }catch(NotFoundException notFound){
- // ignore
- return null;
- }
- }
-
- }