diff --git a/jars/client-api-gde/.gitignore b/jars/client-api-gde/.gitignore
new file mode 100644
index 0000000000..3946d85115
--- /dev/null
+++ b/jars/client-api-gde/.gitignore
@@ -0,0 +1,87 @@
+*.class
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+# Package Files #
+*.jar
+*.war
+*.ear
+# exclude jar for gradle wrapper
+!gradle/wrapper/*.jar
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+# build files
+**/target
+target
+.gradle
+build
+.classpath
+.openapi-generator/
+.project
+.settings/
+.travis.yml
+build.gradle
+build.sbt
+git_push.sh
+gradle.properties
+gradle/
+gradlew
+gradlew.bat
+settings.gradle
+.github/
+api/
+docs/
+
+
+
+# custom property filters
+#/src/main/resources/filters/*
+
+# maven version backups
+pom.xml.versionsBackup
+
+# compiled output
+/dist
+/tmp
+/out-tsc
+/target
+/bin
+_build
+
+# swagger
+.swagger-codegen
+
+# dependencies
+/node_modules
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage
+/libpeerconnection.log
+npm-debug.log
+testem.log
+/typings
+
+# e2e
+/e2e/*.js
+/e2e/*.map
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/jars/client-api-gde/.openapi-generator-ignore b/jars/client-api-gde/.openapi-generator-ignore
new file mode 100644
index 0000000000..75af75a4f5
--- /dev/null
+++ b/jars/client-api-gde/.openapi-generator-ignore
@@ -0,0 +1,37 @@
+# Swagger Codegen Ignore
+# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
+
+# GEN
+# IMPL
+# TEST
+**/**/*Test.java
+**/*DocumentationConfig.java
+**/OpenAPI2SpringBoot.java
+pom.xml
+README.md
+src/**/*
+**/*ApiController.java
+.gitignore
+
+
diff --git a/jars/client-api-gde/pom.xml b/jars/client-api-gde/pom.xml
new file mode 100644
index 0000000000..d9e3d0c8e6
--- /dev/null
+++ b/jars/client-api-gde/pom.xml
@@ -0,0 +1,203 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.2
+
+
+
+ it.govpay
+ client-api-gde
+ jar
+ GovPay - jars - Client REST API Giornale degli Eventi
+ 4.0.0
+
+
+ 17
+ ${java.version}
+ ${java.version}
+ ${java.version}
+
+
+ 3.8.0
+ 3.2.3
+
+ ../..
+ ${rel-to-parent}/src/main/resources/filters/${env}.filter.properties
+
+
+ 6.0.0
+
+
+ 1.5.1.Final
+
+
+ 1.18.24
+
+
+ 2.1.2
+ 1.6.2
+
+
+ 0.2.1
+
+
+ 3.0.2
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
+
+ org.springframework
+ spring-core
+
+
+
+ org.springframework
+ spring-web
+
+
+
+ org.springframework
+ spring-context
+
+
+
+ org.springframework
+ spring-context-support
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.mapstruct
+ mapstruct
+ ${mapstruct.version}
+
+
+
+ io.swagger
+ swagger-annotations
+ ${swagger-annotations.version}
+
+
+
+ org.openapitools
+ jackson-databind-nullable
+ ${jackson.databind.nullable.version}
+
+
+
+ javax.annotation
+ javax.annotation-api
+
+
+
+ com.google.code.findbugs
+ jsr305
+ ${jsr305.version}
+
+
+
+
+
+
+ ${filter-file}
+
+
+
+ src/main/resources
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ ${java.version}
+
+
+ org.projectlombok
+ lombok
+ ${org.projectlombok.version}
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${mapstruct.version}
+
+
+
+ -Amapstruct.suppressGeneratorTimestamp=true
+ -Amapstruct.defaultComponentModel=spring
+
+
+
+
+ org.openapitools
+ openapi-generator-maven-plugin
+ ${openapi.tool.codegen.version}
+
+
+
+ generate
+
+ generate-sources-client-govpay-gde-v1
+ generate-sources
+
+ ${project.basedir}/src/main/resources/openapi.yaml
+ java
+
+ is
+ java8
+ webclient
+ jackson
+ target/generated-sources/java/
+ it.govpay.gde.v1.api
+ it.govpay.gde.v1.api.impl
+ it.govpay.gde.v1.model
+ true
+ false
+
+
+ true
+ false
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jars/client-api-gde/src/main/java/it/govpay/gde/GdeInvoker.java b/jars/client-api-gde/src/main/java/it/govpay/gde/GdeInvoker.java
new file mode 100644
index 0000000000..f34ff446b8
--- /dev/null
+++ b/jars/client-api-gde/src/main/java/it/govpay/gde/GdeInvoker.java
@@ -0,0 +1,35 @@
+package it.govpay.gde;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.reactive.function.client.WebClientResponseException;
+
+import it.govpay.gde.v1.api.GdeControllerApi;
+import it.govpay.gde.v1.api.impl.ApiClient;
+import it.govpay.gde.v1.model.NuovoEvento;
+
+public class GdeInvoker {
+
+ private static Logger logger = LoggerFactory.getLogger(GdeInvoker.class);
+
+ private GdeControllerApi gdeApi;
+
+ public GdeInvoker(String gdeUrl){
+ ApiClient apiClient = new ApiClient();
+ apiClient.setBasePath(gdeUrl);
+ gdeApi = new GdeControllerApi(apiClient );
+ }
+
+ public void salvaEvento(NuovoEvento nuovoEvento) {
+
+ try {
+ logger.debug("AAAAAA Spedizione Evento in modalita' asincrona");
+ this.gdeApi.addEvento(nuovoEvento )
+ .subscribe(response -> logger.debug("AAAAAA Response: " + response));
+
+ logger.debug("AAAAAA Spedizione Evento in modalita' asincrona, ok");
+ }catch (WebClientResponseException e) {
+ logger.error("AAAAAA Errore durante l'invocazione GDE: " + e.getMessage(),e);
+ }
+ }
+}
diff --git a/jars/client-api-gde/src/main/resources/openapi.yaml b/jars/client-api-gde/src/main/resources/openapi.yaml
new file mode 100644
index 0000000000..4aaef791a7
--- /dev/null
+++ b/jars/client-api-gde/src/main/resources/openapi.yaml
@@ -0,0 +1,491 @@
+openapi: 3.0.1
+info:
+ title: OpenAPI definition
+ version: v0
+servers:
+- url: http://localhost:8080/govpay/backend/api/gde
+ description: Generated server url
+paths:
+ /eventi:
+ get:
+ tags:
+ - gde-controller
+ operationId: findEventi
+ parameters:
+ - name: pageable
+ in: query
+ required: true
+ schema:
+ $ref: '#/components/schemas/Pageable'
+ - name: dataDa
+ in: query
+ required: false
+ schema:
+ type: string
+ format: date-time
+ - name: dataA
+ in: query
+ required: false
+ schema:
+ type: string
+ format: date-time
+ - name: idDominio
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: iuv
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: ccp
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idA2A
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idPendenza
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idPagamento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: categoriaEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
+ - name: esitoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
+ - name: ruoloEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - CLIENT
+ - SERVER
+ - name: sottotipoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: tipoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: componenteEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
+ - name: severitaDa
+ in: query
+ required: false
+ schema:
+ type: integer
+ format: int32
+ - name: severitaA
+ in: query
+ required: false
+ schema:
+ type: integer
+ format: int32
+ responses:
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PagedModelEventoIndexModel'
+ post:
+ tags:
+ - gde-controller
+ operationId: addEvento
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/nuovoEvento'
+ required: true
+ responses:
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
+ content:
+ '*/*':
+ schema:
+ type: object
+ /eventi/{id}:
+ get:
+ tags:
+ - gde-controller
+ operationId: getEventoById
+ parameters:
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/evento'
+components:
+ schemas:
+ problem:
+ type: object
+ properties:
+ type:
+ type: string
+ format: uri
+ title:
+ type: string
+ status:
+ type: integer
+ format: int32
+ detail:
+ type: string
+ instance:
+ type: string
+ format: uri
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ datiPagoPA:
+ type: object
+ properties:
+ idPsp:
+ type: string
+ idCanale:
+ type: string
+ idIntermediarioPsp:
+ type: string
+ tipoVersamento:
+ type: string
+ modelloPagamento:
+ type: string
+ idDominio:
+ type: string
+ idIntermediario:
+ type: string
+ idStazione:
+ type: string
+ idRiconciliazione:
+ type: string
+ sct:
+ type: string
+ idFlusso:
+ type: string
+ dataFlusso:
+ type: string
+ format: date-time
+ idTracciato:
+ type: number
+ _links:
+ $ref: '#/components/schemas/Links'
+ nuovoEvento:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ componente:
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
+ categoriaEvento:
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
+ ruolo:
+ type: string
+ enum:
+ - CLIENT
+ - SERVER
+ tipoEvento:
+ type: string
+ esito:
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
+ dataEvento:
+ type: string
+ format: date-time
+ durataEvento:
+ type: integer
+ format: int64
+ sottotipoEvento:
+ type: string
+ sottotipoEsito:
+ type: string
+ dettaglioEsito:
+ type: string
+ idDominio:
+ type: string
+ iuv:
+ type: string
+ ccp:
+ type: string
+ idA2A:
+ type: string
+ idPendenza:
+ type: string
+ idPagamento:
+ type: string
+ datiPagoPA:
+ $ref: '#/components/schemas/datiPagoPA'
+ severita:
+ type: integer
+ format: int32
+ parametriRichiesta:
+ type: object
+ parametriRisposta:
+ type: object
+ Pageable:
+ type: object
+ properties:
+ page:
+ minimum: 0
+ type: integer
+ format: int32
+ size:
+ minimum: 1
+ type: integer
+ format: int32
+ sort:
+ type: array
+ items:
+ type: string
+ PageMetadata:
+ type: object
+ properties:
+ size:
+ type: integer
+ format: int64
+ totalElements:
+ type: integer
+ format: int64
+ totalPages:
+ type: integer
+ format: int64
+ number:
+ type: integer
+ format: int64
+ PagedModelEventoIndexModel:
+ type: object
+ properties:
+ _embedded:
+ type: object
+ properties:
+ eventi:
+ type: array
+ items:
+ $ref: '#/components/schemas/evento'
+ _links:
+ $ref: '#/components/schemas/Links'
+ page:
+ $ref: '#/components/schemas/PageMetadata'
+ evento:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ componente:
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
+ categoriaEvento:
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
+ ruolo:
+ type: string
+ enum:
+ - CLIENT
+ - SERVER
+ tipoEvento:
+ type: string
+ esito:
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
+ dataEvento:
+ type: string
+ format: date-time
+ durataEvento:
+ type: integer
+ format: int64
+ sottotipoEvento:
+ type: string
+ sottotipoEsito:
+ type: string
+ dettaglioEsito:
+ type: string
+ idDominio:
+ type: string
+ iuv:
+ type: string
+ ccp:
+ type: string
+ idA2A:
+ type: string
+ idPendenza:
+ type: string
+ idPagamento:
+ type: string
+ datiPagoPA:
+ $ref: '#/components/schemas/datiPagoPA'
+ severita:
+ type: integer
+ format: int32
+ _links:
+ $ref: '#/components/schemas/Links'
+ Link:
+ type: object
+ properties:
+ href:
+ type: string
+ hreflang:
+ type: string
+ title:
+ type: string
+ type:
+ type: string
+ deprecation:
+ type: string
+ profile:
+ type: string
+ name:
+ type: string
+ templated:
+ type: boolean
diff --git a/jars/core/pom.xml b/jars/core/pom.xml
index e9c65b0250..4c79038392 100644
--- a/jars/core/pom.xml
+++ b/jars/core/pom.xml
@@ -62,6 +62,12 @@
jppapdp-beans
jar
+
+
+ it.govpay
+ client-api-gde
+ jar
+
commons-codec
diff --git a/jars/core/src/main/java/it/govpay/core/business/GiornaleEventi.java b/jars/core/src/main/java/it/govpay/core/business/GiornaleEventi.java
index 2dd1cd0c7e..b2982d32dd 100644
--- a/jars/core/src/main/java/it/govpay/core/business/GiornaleEventi.java
+++ b/jars/core/src/main/java/it/govpay/core/business/GiornaleEventi.java
@@ -22,20 +22,14 @@
import java.util.Date;
import org.apache.commons.lang.StringUtils;
-import org.openspcoop2.utils.LoggerWrapperFactory;
import org.openspcoop2.utils.logger.beans.context.core.Role;
import org.openspcoop2.utils.service.beans.HttpMethodEnum;
-import org.openspcoop2.utils.service.context.ContextThreadLocal;
-import org.slf4j.Logger;
-import it.govpay.bd.BDConfigWrapper;
import it.govpay.bd.configurazione.model.GdeEvento;
-import it.govpay.bd.configurazione.model.GdeInterfaccia;
-import it.govpay.bd.configurazione.model.Giornale;
import it.govpay.bd.configurazione.model.GdeEvento.DumpEnum;
import it.govpay.bd.configurazione.model.GdeEvento.LogEnum;
-import it.govpay.bd.model.Evento;
-import it.govpay.bd.pagamento.EventiBD;
+import it.govpay.bd.configurazione.model.GdeInterfaccia;
+import it.govpay.bd.configurazione.model.Giornale;
import it.govpay.core.utils.EventoContext;
import it.govpay.core.utils.EventoContext.Categoria;
import it.govpay.core.utils.EventoContext.Componente;
@@ -45,21 +39,9 @@
public class GiornaleEventi {
- private static Logger log = LoggerWrapperFactory.getLogger(GiornaleEventi.class );
-
public GiornaleEventi() {
}
- public void registraEvento(Evento evento) {
- BDConfigWrapper configWrapper = new BDConfigWrapper(ContextThreadLocal.get().getTransactionId(), true);
- try {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(evento);
- } catch (Exception e) {
- log.error("Errore nella registrazione degli eventi", e);
- }
- }
-
public static GdeInterfaccia getConfigurazioneComponente(Componente componente, Giornale giornale) {
switch(componente) {
case API_BACKOFFICE:
diff --git a/jars/core/src/main/java/it/govpay/core/business/Incassi.java b/jars/core/src/main/java/it/govpay/core/business/Incassi.java
index 0ba7b5a63e..1b15bcbfe9 100644
--- a/jars/core/src/main/java/it/govpay/core/business/Incassi.java
+++ b/jars/core/src/main/java/it/govpay/core/business/Incassi.java
@@ -44,7 +44,6 @@
import it.govpay.bd.model.SingoloVersamento;
import it.govpay.bd.model.TipoVersamentoDominio;
import it.govpay.bd.model.eventi.DatiPagoPA;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.FrBD;
import it.govpay.bd.pagamento.IncassiBD;
import it.govpay.bd.pagamento.NotificheAppIoBD;
@@ -52,6 +51,7 @@
import it.govpay.bd.pagamento.PromemoriaBD;
import it.govpay.bd.pagamento.RendicontazioniBD;
import it.govpay.bd.pagamento.VersamentiBD;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.dao.pagamenti.dto.RichiestaIncassoDTO;
import it.govpay.core.dao.pagamenti.dto.RichiestaIncassoDTOResponse;
import it.govpay.core.exceptions.EcException;
@@ -394,22 +394,8 @@ public RichiestaIncassoDTOResponse elaboraRiconciliazione(String codDomino, Stri
incassiBD.closeConnection();
if(listaEventi.size() >0) {
- EventiBD eventiBD = null;
-
- try {
- eventiBD = new EventiBD(configWrapper);
- eventiBD.setupConnection(configWrapper.getTransactionID());
- eventiBD.setAtomica(false);
-
- for (Evento evento : listaEventi) {
- eventiBD.insertEvento(evento);
- }
- } catch (ServiceException e) {
- throw new GovPayException(e);
- } finally {
- if(eventiBD != null) {
- eventiBD.closeConnection();
- }
+ for (Evento evento : listaEventi) {
+ GdeUtils.salvaEvento(evento);
}
}
}
@@ -865,22 +851,8 @@ public RichiestaIncassoDTOResponse richiestaIncasso(RichiestaIncassoDTO richiest
incassiBD.closeConnection();
if(listaEventi.size() >0) {
- EventiBD eventiBD = null;
-
- try {
- eventiBD = new EventiBD(configWrapper);
- eventiBD.setupConnection(configWrapper.getTransactionID());
- eventiBD.setAtomica(false);
-
- for (Evento evento : listaEventi) {
- eventiBD.insertEvento(evento);
- }
- } catch (ServiceException e) {
- throw new GovPayException(e);
- } finally {
- if(eventiBD != null) {
- eventiBD.closeConnection();
- }
+ for (Evento evento : listaEventi) {
+ GdeUtils.salvaEvento(evento);
}
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/business/Pagamento.java b/jars/core/src/main/java/it/govpay/core/business/Pagamento.java
index fc7764291d..a64f54c718 100644
--- a/jars/core/src/main/java/it/govpay/core/business/Pagamento.java
+++ b/jars/core/src/main/java/it/govpay/core/business/Pagamento.java
@@ -52,11 +52,10 @@
import it.govpay.bd.model.Dominio;
import it.govpay.bd.model.Notifica;
import it.govpay.bd.model.PagamentoPortale;
+import it.govpay.bd.model.PagamentoPortale.STATO;
import it.govpay.bd.model.Rpt;
import it.govpay.bd.model.Rr;
import it.govpay.bd.model.Stazione;
-import it.govpay.bd.model.PagamentoPortale.STATO;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.PagamentiBD;
import it.govpay.bd.pagamento.PagamentiPortaleBD;
import it.govpay.bd.pagamento.RptBD;
@@ -65,6 +64,7 @@
import it.govpay.core.business.model.AvviaRichiestaStornoDTO;
import it.govpay.core.business.model.AvviaRichiestaStornoDTOResponse;
import it.govpay.core.business.model.Risposta;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.exceptions.NdpException;
import it.govpay.core.utils.EventoContext.Esito;
@@ -72,9 +72,9 @@
import it.govpay.core.utils.GpContext;
import it.govpay.core.utils.RptUtils;
import it.govpay.core.utils.RrUtils;
-import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.client.NodoClient;
import it.govpay.core.utils.client.NodoClient.Azione;
+import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.thread.InviaNotificaThread;
import it.govpay.core.utils.thread.ThreadExecutorManager;
import it.govpay.model.Canale.ModelloPagamento;
@@ -242,7 +242,6 @@ private Map acquisisciPendenti(Giornale giornale, Intermediario
IContext ctx = ContextThreadLocal.get();
GpContext appContext = (GpContext) ctx.getApplicationContext();
Map statiRptPendenti = new HashMap<>();
- BDConfigWrapper configWrapper = new BDConfigWrapper(ContextThreadLocal.get().getTransactionId(), true);
// Ciclo sui domini, ma ciclo veramente solo se perDominio == true,
// Altrimenti ci giro una sola volta
@@ -373,8 +372,7 @@ private Map acquisisciPendenti(Giornale giornale, Intermediario
}
} finally {
if(chiediListaPendentiClient != null && chiediListaPendentiClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(chiediListaPendentiClient.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(chiediListaPendentiClient.getEventoCtx());
}
}
}
@@ -534,8 +532,7 @@ public AvviaRichiestaStornoDTOResponse avviaStorno(AvviaRichiestaStornoDTO dto)
throw new GovPayException(EsitoOperazione.NDP_000, e);
} finally {
if(nodoInviaRRClient != null && nodoInviaRRClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(nodoInviaRRClient.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(nodoInviaRRClient.getEventoCtx());
}
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/business/Rendicontazioni.java b/jars/core/src/main/java/it/govpay/core/business/Rendicontazioni.java
index eafbf270f9..9660714611 100644
--- a/jars/core/src/main/java/it/govpay/core/business/Rendicontazioni.java
+++ b/jars/core/src/main/java/it/govpay/core/business/Rendicontazioni.java
@@ -65,12 +65,12 @@
import it.govpay.bd.model.SingoloVersamento;
import it.govpay.bd.model.Stazione;
import it.govpay.bd.model.eventi.DatiPagoPA;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.FrBD;
import it.govpay.bd.pagamento.PagamentiBD;
import it.govpay.bd.pagamento.RendicontazioniBD;
import it.govpay.bd.pagamento.VersamentiBD;
import it.govpay.core.beans.EsitoOperazione;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.exceptions.VersamentoAnnullatoException;
import it.govpay.core.exceptions.VersamentoDuplicatoException;
@@ -82,9 +82,9 @@
import it.govpay.core.utils.GpContext;
import it.govpay.core.utils.JaxbUtils;
import it.govpay.core.utils.VersamentoUtils;
-import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.client.NodoClient;
import it.govpay.core.utils.client.NodoClient.Azione;
+import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.model.Fr.StatoFr;
import it.govpay.model.Intermediario;
import it.govpay.model.Rendicontazione.EsitoRendicontazione;
@@ -635,6 +635,7 @@ public boolean accept(File dir, String name) {
frAcquisiti++;
if(chiediFlussoRendicontazioneClient != null) {
+ chiediFlussoRendicontazioneClient.getEventoCtx().setDataFlusso(fr.getDataFlusso());
chiediFlussoRendicontazioneClient.getEventoCtx().setIdFr(fr.getId());
}
if(!hasFrAnomalia) {
@@ -659,12 +660,10 @@ public boolean accept(File dir, String name) {
frNonAcquisiti++;
} finally {
if(chiediFlussoRendicontazioneClient != null && chiediFlussoRendicontazioneClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- Evento eventoDTO = chiediFlussoRendicontazioneClient.getEventoCtx().toEventoDTO();
if(isAggiornamento)
- eventoDTO.setSottotipoEvento(EventoContext.APIPAGOPA_SOTTOTIPOEVENTO_FLUSSO_RENDICONTAZIONE_DUPLICATO);
- eventiBD.insertEvento(eventoDTO);
+ chiediFlussoRendicontazioneClient.getEventoCtx().setSottotipoEvento(EventoContext.APIPAGOPA_SOTTOTIPOEVENTO_FLUSSO_RENDICONTAZIONE_DUPLICATO);
+ GdeUtils.salvaEvento(chiediFlussoRendicontazioneClient.getEventoCtx());
}
}
}
@@ -811,13 +810,7 @@ private List chiediListaFr(Stazione stazione, Dominio dom
return flussiDaAcquisire;
} finally {
if(chiediFlussoRendicontazioniClient != null && chiediFlussoRendicontazioniClient.getEventoCtx().isRegistraEvento()) {
- try {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(chiediFlussoRendicontazioniClient.getEventoCtx().toEventoDTO());
- }catch (ServiceException e) {
- log.error("Errore durante l'acquisizione dei flussi di rendicontazione", e);
- }finally {
- }
+ GdeUtils.salvaEvento(chiediFlussoRendicontazioniClient.getEventoCtx());
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/business/Rpt.java b/jars/core/src/main/java/it/govpay/core/business/Rpt.java
index e255fd47eb..aa80311265 100644
--- a/jars/core/src/main/java/it/govpay/core/business/Rpt.java
+++ b/jars/core/src/main/java/it/govpay/core/business/Rpt.java
@@ -23,15 +23,15 @@
import it.govpay.bd.model.Canale;
import it.govpay.bd.model.Notifica;
import it.govpay.bd.model.PagamentoPortale;
+import it.govpay.bd.model.PagamentoPortale.STATO;
import it.govpay.bd.model.Stazione;
import it.govpay.bd.model.Versamento;
-import it.govpay.bd.model.PagamentoPortale.STATO;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.PagamentiPortaleBD;
import it.govpay.bd.pagamento.RptBD;
import it.govpay.bd.pagamento.filters.RptFilter;
import it.govpay.core.beans.EsitoOperazione;
import it.govpay.core.business.model.Risposta;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.exceptions.VersamentoAnnullatoException;
import it.govpay.core.exceptions.VersamentoDuplicatoException;
@@ -468,14 +468,12 @@ public List avviaTransazione(List versamenti
}
} finally {
if(chiediStatoRptClient != null && chiediStatoRptClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(chiediStatoRptClient.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(chiediStatoRptClient.getEventoCtx());
}
}
} finally {
if(clientInviaCarrelloRPT != null && clientInviaCarrelloRPT.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
for(it.govpay.bd.model.Rpt rpt : rpts) {
// salvataggio id Rpt/ versamento/ pagamento
clientInviaCarrelloRPT.getEventoCtx().setCodDominio(rpt.getCodDominio());
@@ -494,7 +492,7 @@ public List avviaTransazione(List versamenti
clientInviaCarrelloRPT.getEventoCtx().setDescrizioneEsito(rpt.getDescrizioneStato());
}
- eventiBD.insertEvento(clientInviaCarrelloRPT.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(clientInviaCarrelloRPT.getEventoCtx());
}
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/dao/eventi/EventiDAO.java b/jars/core/src/main/java/it/govpay/core/dao/eventi/EventiDAO.java
index ce15d933c6..466f2ad724 100644
--- a/jars/core/src/main/java/it/govpay/core/dao/eventi/EventiDAO.java
+++ b/jars/core/src/main/java/it/govpay/core/dao/eventi/EventiDAO.java
@@ -19,9 +19,9 @@
import it.govpay.core.dao.eventi.dto.PutEventoDTO;
import it.govpay.core.dao.eventi.dto.PutEventoDTOResponse;
import it.govpay.core.dao.eventi.exception.EventoNonTrovatoException;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.NotAuthenticatedException;
import it.govpay.core.exceptions.NotAuthorizedException;
-import it.govpay.core.utils.EventoContext;
public class EventiDAO extends BaseDAO {
@@ -100,19 +100,12 @@ public ListaEventiDTOResponse listaEventi(ListaEventiDTO listaEventiDTO) throws
public PutEventoDTOResponse inserisciEvento(PutEventoDTO putEventoDTO) throws NotAuthenticatedException, NotAuthorizedException, ServiceException {
PutEventoDTOResponse putEventoDTOResponse = new PutEventoDTOResponse();
- BDConfigWrapper configWrapper = new BDConfigWrapper(ContextThreadLocal.get().getTransactionId(), this.useCacheData);
- EventiBD eventiBD = null;
+
try {
- eventiBD = new EventiBD(configWrapper);
-
- EventoContext eventoGenerico = putEventoDTO.getEvento();
-
- Evento evento = eventoGenerico.toEventoDTO();
- eventiBD.insertEvento(evento);
+ GdeUtils.salvaEvento(putEventoDTO.getEvento());
return putEventoDTOResponse;
} finally {
- if(eventiBD != null)
- eventiBD.closeConnection();
+
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/dao/eventi/utils/GdeUtils.java b/jars/core/src/main/java/it/govpay/core/dao/eventi/utils/GdeUtils.java
new file mode 100644
index 0000000000..b001fcb55b
--- /dev/null
+++ b/jars/core/src/main/java/it/govpay/core/dao/eventi/utils/GdeUtils.java
@@ -0,0 +1,341 @@
+package it.govpay.core.dao.eventi.utils;
+
+import java.math.BigDecimal;
+import java.time.ZoneOffset;
+import java.util.Date;
+
+import org.openspcoop2.utils.LoggerWrapperFactory;
+import org.openspcoop2.utils.json.ValidationException;
+
+import it.govpay.bd.model.Evento;
+import it.govpay.bd.model.eventi.DatiPagoPA;
+import it.govpay.core.exceptions.BaseExceptionV1;
+import it.govpay.core.exceptions.GovPayException;
+import it.govpay.core.exceptions.UnprocessableEntityException;
+import it.govpay.core.utils.EventoContext;
+import it.govpay.core.utils.GovpayConfig;
+import it.govpay.core.utils.SeveritaProperties;
+import it.govpay.core.utils.client.exception.ClientException;
+import it.govpay.gde.GdeInvoker;
+import it.govpay.gde.v1.model.NuovoEvento;
+import it.govpay.gde.v1.model.NuovoEvento.CategoriaEventoEnum;
+import it.govpay.gde.v1.model.NuovoEvento.ComponenteEnum;
+import it.govpay.gde.v1.model.NuovoEvento.EsitoEnum;
+import it.govpay.gde.v1.model.NuovoEvento.RuoloEnum;
+
+public class GdeUtils {
+
+ public static void salvaEvento(EventoContext context) {
+ GdeInvoker gdeInvoker = new GdeInvoker(GovpayConfig.getInstance().getGiornaleEventiUrl());
+ gdeInvoker.salvaEvento(GdeUtils.toEventoModel(context));
+ }
+
+ public static void salvaEvento(Evento context) {
+ GdeInvoker gdeInvoker = new GdeInvoker(GovpayConfig.getInstance().getGiornaleEventiUrl());
+ gdeInvoker.salvaEvento(GdeUtils.toEventoModel(context));
+ }
+
+ public static NuovoEvento toEventoModel(Evento context) {
+ NuovoEvento dto = new NuovoEvento();
+
+ if(context.getCategoriaEvento() != null) {
+ switch (context.getCategoriaEvento()) {
+ case INTERFACCIA:
+ dto.setCategoriaEvento(CategoriaEventoEnum.INTERFACCIA);
+ break;
+ case INTERNO:
+ dto.setCategoriaEvento(CategoriaEventoEnum.INTERNO);
+ break;
+ case UTENTE:
+ dto.setCategoriaEvento(CategoriaEventoEnum.UTENTE);
+ break;
+ }
+ }
+ if(context.getComponente() != null) {
+ try {
+ dto.setComponente(ComponenteEnum.fromValue(context.getComponente()));
+ } catch(IllegalArgumentException e) {
+ dto.setComponente(ComponenteEnum.GOVPAY);
+ }
+ }
+
+ if(context.getData() != null) {
+ dto.setDataEvento(context.getData().toInstant().atOffset(ZoneOffset.UTC));
+ }
+
+ dto.setDatiPagoPA(getDatiPagoPA(context));
+
+ dto.setDettaglioEsito(context.getDettaglioEsito());
+ if(context.getEsitoEvento() != null) {
+ switch(context.getEsitoEvento()) {
+ case FAIL:
+ dto.setEsito(EsitoEnum.FAIL);
+ break;
+ case KO:
+ dto.setEsito(EsitoEnum.KO);
+ break;
+ case OK:
+ dto.setEsito(EsitoEnum.OK);
+ break;
+ }
+ }
+ //dto.setId(context.getId());
+ dto.setDurataEvento(context.getIntervallo());
+
+// dto.setParametriRichiesta(context.getDettaglioRichiesta());
+// dto.setParametriRisposta(context.getDettaglioRisposta());
+
+ if(context.getRuoloEvento() != null) {
+ switch(context.getRuoloEvento()) {
+ case CLIENT:
+ dto.setRuolo(RuoloEnum.CLIENT);
+ break;
+ case SERVER:
+ dto.setRuolo(RuoloEnum.SERVER);
+ break;
+ }
+ }
+ dto.setSottotipoEsito(context.getSottotipoEsito());
+ dto.setSottotipoEvento(context.getSottotipoEvento());
+ dto.setTipoEvento(context.getTipoEvento());
+ dto.setIdA2A(context.getCodApplicazione());
+ dto.setIdPendenza(context.getCodVersamentoEnte());
+ dto.setIdDominio(context.getCodDominio());
+ dto.setIuv(context.getIuv());
+ dto.setCcp(context.getCcp());
+ dto.setIdPagamento(context.getIdSessione());
+// dto.setIdFr(context.getIdFr());
+// dto.setIdTracciato(context.getIdTracciato());
+// dto.setIdIncasso(context.getIdIncasso());
+
+ if(context.getSeverita() != null) {
+ dto.setSeverita(context.getSeverita());
+ }
+
+ return dto;
+ }
+
+ public static NuovoEvento toEventoModel(EventoContext context) {
+ NuovoEvento dto = new NuovoEvento();
+
+ if(context.getCategoriaEvento() != null) {
+ switch (context.getCategoriaEvento()) {
+ case INTERFACCIA:
+ dto.setCategoriaEvento(CategoriaEventoEnum.INTERFACCIA);
+ break;
+ case INTERNO:
+ dto.setCategoriaEvento(CategoriaEventoEnum.INTERNO);
+ break;
+ case UTENTE:
+ dto.setCategoriaEvento(CategoriaEventoEnum.UTENTE);
+ break;
+ }
+ }
+ if(context.getComponente() != null) {
+ switch (context.getComponente()) {
+ case API_BACKEND_IO:
+ dto.setComponente(ComponenteEnum.API_BACKEND_IO);
+ break;
+ case API_BACKOFFICE:
+ dto.setComponente(ComponenteEnum.API_BACKOFFICE);
+ break;
+ case API_ENTE:
+ dto.setComponente(ComponenteEnum.API_ENTE);
+ break;
+ case API_GOVPAY:
+ dto.setComponente(ComponenteEnum.API_GOVPAY);
+ break;
+ case API_HYPERSIC_APK:
+ dto.setComponente(ComponenteEnum.API_HYPERSIC_APK);
+ break;
+ case API_MAGGIOLI_JPPA:
+ dto.setComponente(ComponenteEnum.API_MAGGIOLI_JPPA);
+ break;
+ case API_MYPIVOT:
+ dto.setComponente(ComponenteEnum.API_MYPIVOT);
+ break;
+ case API_PAGAMENTO:
+ dto.setComponente(ComponenteEnum.API_PAGAMENTO);
+ break;
+ case API_PAGOPA:
+ dto.setComponente(ComponenteEnum.API_PAGOPA);
+ break;
+ case API_PENDENZE:
+ dto.setComponente(ComponenteEnum.API_PENDENZE);
+ break;
+ case API_RAGIONERIA:
+ dto.setComponente(ComponenteEnum.API_RAGIONERIA);
+ break;
+ case API_SECIM:
+ dto.setComponente(ComponenteEnum.API_SECIM);
+ break;
+ case API_USER:
+ dto.setComponente(ComponenteEnum.API_USER);
+ break;
+ case GOVPAY:
+ dto.setComponente(ComponenteEnum.GOVPAY);
+ break;
+ case API_WC:
+ // dto.setComponente(ComponenteEnum.API_BACKEND_IO);
+ break;
+ }
+ }
+
+ if(context.getDataRichiesta() != null) {
+ dto.setDataEvento(context.getDataRichiesta().toInstant().atOffset(ZoneOffset.UTC));
+ }
+
+ dto.setDatiPagoPA(getDatiPagoPA(context));
+
+ dto.setDettaglioEsito(context.getDescrizioneEsito());
+ if(context.getEsito() != null) {
+ switch(context.getEsito()) {
+ case FAIL:
+ dto.setEsito(EsitoEnum.FAIL);
+ break;
+ case KO:
+ dto.setEsito(EsitoEnum.KO);
+ break;
+ case OK:
+ dto.setEsito(EsitoEnum.OK);
+ break;
+ }
+ }
+ //dto.setId(context.getId());
+ if(context.getDataRisposta() != null) {
+ if(context.getDataRichiesta() != null) {
+ dto.setDurataEvento (context.getDataRisposta().getTime() - context.getDataRichiesta().getTime());
+ } else {
+ dto.setDurataEvento(0l);
+ }
+ } else {
+ dto.setDurataEvento(0l);
+ }
+ dto.setParametriRichiesta(context.getDettaglioRichiesta());
+ dto.setParametriRisposta(context.getDettaglioRisposta());
+ if(context.getRole() != null) {
+ switch(context.getRole()) {
+ case CLIENT:
+ dto.setRuolo(RuoloEnum.CLIENT);
+ break;
+ case SERVER:
+ dto.setRuolo(RuoloEnum.SERVER);
+ break;
+ }
+ }
+ dto.setSottotipoEsito(context.getSottotipoEsito());
+ dto.setSottotipoEvento(context.getSottotipoEvento());
+ dto.setTipoEvento(context.getTipoEvento());
+ dto.setIdA2A(context.getIdA2A());
+ dto.setIdPendenza(context.getIdPendenza());
+ dto.setIdDominio(context.getCodDominio());
+ dto.setIuv(context.getIuv());
+ dto.setCcp(context.getCcp());
+ dto.setIdPagamento(context.getIdPagamento());
+// dto.setIdFr(context.getIdFr());
+// dto.setIdTracciato(context.getIdTracciato());
+// dto.setIdIncasso(context.getIdIncasso());
+
+ if(context.getSeverita() != null) {
+ dto.setSeverita(context.getSeverita());
+ } else {
+ if(context.getException() != null) {
+ LoggerWrapperFactory.getLogger(EventoContext.class).debug("Classe exception: " + context.getException().getClass());
+
+ if(context.getException() instanceof GovPayException) {
+ try {
+ dto.setSeverita(SeveritaProperties.getInstance().getSeverita(((GovPayException) context.getException()).getCodEsito()));
+ } catch (Exception e) {
+ LoggerWrapperFactory.getLogger(EventoContext.class).error("Errore durante la decodifica del livello di severita': " + e.getMessage(),e);
+ }
+ }
+
+ if(context.getException() instanceof BaseExceptionV1) {
+ try {
+ dto.setSeverita(SeveritaProperties.getInstance().getSeverita(((BaseExceptionV1) context.getException()).getCategoria()));
+ } catch (Exception e) {
+ LoggerWrapperFactory.getLogger(EventoContext.class).error("Errore durante la decodifica del livello di severita': " + e.getMessage(),e);
+ }
+ }
+
+ if(context.getException() instanceof UnprocessableEntityException) {
+ try {
+ dto.setSeverita(SeveritaProperties.getInstance().getSeverita(((UnprocessableEntityException) context.getException()).getCategoria()));
+ } catch (Exception e) {
+ LoggerWrapperFactory.getLogger(EventoContext.class).error("Errore durante la decodifica del livello di severita': " + e.getMessage(),e);
+ }
+ }
+
+ if(context.getException() instanceof ValidationException) {
+ try {
+ dto.setSeverita(SeveritaProperties.getInstance().getSeverita(it.govpay.core.exceptions.BaseExceptionV1.CategoriaEnum.RICHIESTA));
+ } catch (Exception e) {
+ LoggerWrapperFactory.getLogger(EventoContext.class).error("Errore durante la decodifica del livello di severita': " + e.getMessage(),e);
+ }
+ }
+
+ if(context.getException() instanceof ClientException) {
+ dto.setSeverita(5);
+ }
+ }
+ }
+
+ return dto;
+ }
+
+ private static it.govpay.gde.v1.model.DatiPagoPA getDatiPagoPA(Evento evento) {
+ DatiPagoPA datiPagoPA = evento.getPagoPA();
+ Date dataFlusso = null; // evento.getDataFlusso();
+ Long idTracciato = evento.getIdTracciato();
+
+ it.govpay.gde.v1.model.DatiPagoPA datiPagoPAModel = getDatiPagoPA(datiPagoPA, dataFlusso, idTracciato);
+ return datiPagoPAModel;
+ }
+
+ private static it.govpay.gde.v1.model.DatiPagoPA getDatiPagoPA(EventoContext evento) {
+ DatiPagoPA datiPagoPA = evento.getDatiPagoPA();
+ Date dataFlusso = evento.getDataFlusso();
+ Long idTracciato = evento.getIdTracciato();
+
+ it.govpay.gde.v1.model.DatiPagoPA datiPagoPAModel = getDatiPagoPA(datiPagoPA, dataFlusso, idTracciato);
+ return datiPagoPAModel;
+ }
+
+ private static it.govpay.gde.v1.model.DatiPagoPA getDatiPagoPA(DatiPagoPA datiPagoPA, Date dataFlusso, Long idTracciato) {
+ it.govpay.gde.v1.model.DatiPagoPA datiPagoPAModel = null;
+ if(datiPagoPA != null) {
+ datiPagoPAModel = new it.govpay.gde.v1.model.DatiPagoPA();
+ datiPagoPAModel.setIdCanale(datiPagoPA.getCodCanale());
+ datiPagoPAModel.setIdPsp(datiPagoPA.getCodPsp());
+ datiPagoPAModel.setIdIntermediarioPsp(datiPagoPA.getCodIntermediarioPsp());
+ datiPagoPAModel.setIdIntermediario(datiPagoPA.getCodIntermediario());
+ datiPagoPAModel.setIdStazione(datiPagoPA.getCodStazione());
+ datiPagoPAModel.setIdDominio(datiPagoPA.getCodDominio());
+ if(datiPagoPA.getTipoVersamento() != null) {
+ datiPagoPAModel.setTipoVersamento(datiPagoPA.getTipoVersamento().getCodifica());
+ }
+ if(datiPagoPA.getModelloPagamento() != null) {
+ datiPagoPAModel.setModelloPagamento(datiPagoPA.getModelloPagamento().getCodifica() +"");
+ }
+
+ datiPagoPAModel.setIdFlusso(datiPagoPA.getCodFlusso());
+ if(datiPagoPA.getIdTracciato() != null)
+ datiPagoPAModel.setIdTracciato(new BigDecimal(datiPagoPA.getIdTracciato()));
+ datiPagoPAModel.setIdRiconciliazione(datiPagoPA.getTrn());
+ datiPagoPAModel.setSct(datiPagoPA.getSct());
+
+
+ if(dataFlusso != null) {
+ datiPagoPAModel.setDataFlusso(dataFlusso.toInstant().atOffset(ZoneOffset.UTC));
+ }
+
+
+ if(idTracciato != null)
+ datiPagoPAModel.setIdTracciato(new BigDecimal(idTracciato));
+
+ }
+ return datiPagoPAModel;
+ }
+
+
+}
diff --git a/jars/core/src/main/java/it/govpay/core/utils/EventoContext.java b/jars/core/src/main/java/it/govpay/core/utils/EventoContext.java
index 02edfabdd8..7facb87694 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/EventoContext.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/EventoContext.java
@@ -94,6 +94,7 @@ public enum Categoria { INTERFACCIA, INTERNO, UTENTE };
private String idTransazione;
private Long id;
+ private Date dataFlusso;
private Long idFr;
private Long idIncasso;
private Long idTracciato;
@@ -489,4 +490,12 @@ public void setSeverita(Integer severita) {
this.severita = severita;
}
+ public Date getDataFlusso() {
+ return dataFlusso;
+ }
+
+ public void setDataFlusso(Date dataFlusso) {
+ this.dataFlusso = dataFlusso;
+ }
+
}
diff --git a/jars/core/src/main/java/it/govpay/core/utils/RptUtils.java b/jars/core/src/main/java/it/govpay/core/utils/RptUtils.java
index 2d84ae4d65..3ba394e38e 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/RptUtils.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/RptUtils.java
@@ -52,9 +52,9 @@
import it.govpay.bd.model.Stazione;
import it.govpay.bd.model.UnitaOperativa;
import it.govpay.bd.model.eventi.DatiPagoPA;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.RptBD;
import it.govpay.core.beans.EsitoOperazione;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.exceptions.NdpException;
import it.govpay.core.utils.EventoContext.Esito;
@@ -504,8 +504,7 @@ public static boolean aggiornaRptDaNpD(Intermediario intermediario, Rpt rpt) thr
ctx.getApplicationLogger().log("pagamento.acquisizioneRtOk");
}finally {
if(chiediCopiaRTClient != null && chiediCopiaRTClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(chiediCopiaRTClient.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(chiediCopiaRTClient.getEventoCtx());
}
}
@@ -611,8 +610,7 @@ public static boolean aggiornaRptDaNpD(Intermediario intermediario, Rpt rpt) thr
}
}finally {
if(chiediStatoRptClient != null && chiediStatoRptClient.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(chiediStatoRptClient.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(chiediStatoRptClient.getEventoCtx());
}
}
}
diff --git a/jars/core/src/main/java/it/govpay/core/utils/VersamentoUtils.java b/jars/core/src/main/java/it/govpay/core/utils/VersamentoUtils.java
index bbc2bb4ff7..1fb6fff45d 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/VersamentoUtils.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/VersamentoUtils.java
@@ -60,12 +60,12 @@
import it.govpay.bd.model.TipoVersamentoDominio;
import it.govpay.bd.model.UnitaOperativa;
import it.govpay.bd.model.Versamento;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.core.autorizzazione.AuthorizationManager;
import it.govpay.core.beans.EsitoOperazione;
import it.govpay.core.beans.tracciati.PendenzaPost;
import it.govpay.core.business.Iuv;
import it.govpay.core.dao.commons.Versamento.AllegatoPendenza;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.EcException;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.exceptions.UnprocessableEntityException;
@@ -328,9 +328,7 @@ public static Versamento acquisisciVersamento(Applicazione applicazione, String
EventoContext eventoCtx = verificaClient.getEventoCtx();
if(eventoCtx.isRegistraEvento()) {
- // log evento
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(eventoCtx.toEventoDTO());
+ GdeUtils.salvaEvento(eventoCtx);
}
}
return versamento;
@@ -414,9 +412,7 @@ public static Versamento inoltroPendenza(Applicazione applicazione, String codDo
EventoContext eventoCtx = verificaClient.getEventoCtx();
if(eventoCtx.isRegistraEvento()) {
- // log evento
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(eventoCtx.toEventoDTO());
+ GdeUtils.salvaEvento(eventoCtx);
}
}
return versamento;
diff --git a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaAppIoThread.java b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaAppIoThread.java
index 661462c19c..182ee17afa 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaAppIoThread.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaAppIoThread.java
@@ -30,6 +30,7 @@
import it.govpay.bd.pagamento.NotificheAppIoBD;
import it.govpay.core.beans.EsitoOperazione;
import it.govpay.core.business.QuietanzaPagamento;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.utils.EventoContext.Esito;
import it.govpay.core.utils.GpContext;
@@ -187,8 +188,7 @@ public void run() {
this.aggiornaNotificaDaSpedire(notificheBD, e.getMessage());
} finally {
if(clientGetProfile != null && clientGetProfile.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(clientGetProfile.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(clientGetProfile.getEventoCtx());
}
if(notificheBD != null) notificheBD.closeConnection();
@@ -321,8 +321,7 @@ public void run() {
this.aggiornaNotificaDaSpedire(notificheBD, e.getMessage());
} finally {
if(clientPostMessage != null && clientPostMessage.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(clientPostMessage.getEventoCtx().toEventoDTO());
+ GdeUtils.salvaEvento(clientPostMessage.getEventoCtx());
}
if(notificheBD != null) notificheBD.closeConnection();
diff --git a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaPagamentoMaggioliJPPAThread.java b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaPagamentoMaggioliJPPAThread.java
index c5f6a20ea0..293c8c25a6 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaPagamentoMaggioliJPPAThread.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaPagamentoMaggioliJPPAThread.java
@@ -22,8 +22,8 @@
import it.govpay.bd.model.PagamentoPortale;
import it.govpay.bd.model.Rpt;
import it.govpay.bd.model.Versamento;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.core.beans.EsitoOperazione;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.utils.EventoContext.Esito;
import it.govpay.core.utils.GpContext;
@@ -185,13 +185,7 @@ public void run() {
this.exception = e;
} finally {
if(client != null && client.getEventoCtx().isRegistraEvento()) {
- try {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(client.getEventoCtx().toEventoDTO());
-
- } catch (ServiceException e) {
- log.error("Errore: " + e.getMessage(), e);
- }
+ GdeUtils.salvaEvento(client.getEventoCtx());
}
ContextThreadLocal.unset();
this.completed = true;
diff --git a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaThread.java b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaThread.java
index feae31e4c2..532511104a 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaThread.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaNotificaThread.java
@@ -41,14 +41,14 @@
import it.govpay.bd.model.PagamentoPortale;
import it.govpay.bd.model.Rpt;
import it.govpay.bd.model.Versamento;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.NotificheBD;
import it.govpay.core.beans.EsitoOperazione;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.utils.EventoContext.Esito;
import it.govpay.core.utils.GpContext;
-import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.client.NotificaClient;
+import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.model.Connettore;
import it.govpay.model.Notifica.StatoSpedizione;
import it.govpay.model.Notifica.TipoNotifica;
@@ -276,12 +276,7 @@ public void run() {
}
} finally {
if(client != null && client.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- try {
- eventiBD.insertEvento(client.getEventoCtx().toEventoDTO());
- } catch (ServiceException e) {
- log.error("Errore durante il salvataggio dell'evento: ", e);
- }
+ GdeUtils.salvaEvento(client.getEventoCtx());
}
this.completed = true;
diff --git a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaRptThread.java b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaRptThread.java
index 3f8136dccf..847bfe9f37 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/thread/InviaRptThread.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/thread/InviaRptThread.java
@@ -43,18 +43,18 @@
import it.govpay.bd.model.Rpt;
import it.govpay.bd.model.Stazione;
import it.govpay.bd.model.Versamento;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.RptBD;
import it.govpay.core.beans.EsitoOperazione;
import it.govpay.core.business.model.Risposta;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.utils.EventoContext.Esito;
import it.govpay.core.utils.GovpayConfig;
import it.govpay.core.utils.GpContext;
import it.govpay.core.utils.RptUtils;
-import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.client.NodoClient;
import it.govpay.core.utils.client.NodoClient.Azione;
+import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.model.Intermediario;
import it.govpay.model.Notifica.TipoNotifica;
import it.govpay.model.Rpt.StatoRpt;
@@ -236,13 +236,7 @@ public void run() {
rptBD.closeConnection();
if(client != null && client.getEventoCtx().isRegistraEvento()) {
- try {
- EventiBD eventiBD = new EventiBD(configWrapper);
- eventiBD.insertEvento(client.getEventoCtx().toEventoDTO());
-
- } catch (ServiceException e) {
- log.error("Errore: " + e.getMessage(), e);
- }
+ GdeUtils.salvaEvento(client.getEventoCtx());
}
ContextThreadLocal.unset();
}
diff --git a/jars/core/src/main/java/it/govpay/core/utils/thread/SpedizioneTracciatoNotificaPagamentiThread.java b/jars/core/src/main/java/it/govpay/core/utils/thread/SpedizioneTracciatoNotificaPagamentiThread.java
index 7d3d2a889f..bcabed9307 100644
--- a/jars/core/src/main/java/it/govpay/core/utils/thread/SpedizioneTracciatoNotificaPagamentiThread.java
+++ b/jars/core/src/main/java/it/govpay/core/utils/thread/SpedizioneTracciatoNotificaPagamentiThread.java
@@ -70,11 +70,11 @@
import it.govpay.bd.model.TracciatoNotificaPagamenti;
import it.govpay.bd.model.eventi.DettaglioRichiesta;
import it.govpay.bd.model.eventi.DettaglioRisposta;
-import it.govpay.bd.pagamento.EventiBD;
import it.govpay.bd.pagamento.TracciatiNotificaPagamentiBD;
import it.govpay.core.beans.EsitoOperazione;
import it.govpay.core.business.GiornaleEventi;
import it.govpay.core.business.TracciatiNotificaPagamenti;
+import it.govpay.core.dao.eventi.utils.GdeUtils;
import it.govpay.core.exceptions.GovPayException;
import it.govpay.core.utils.EventoContext;
import it.govpay.core.utils.EventoContext.Categoria;
@@ -84,8 +84,8 @@
import it.govpay.core.utils.GovpayConfig;
import it.govpay.core.utils.GpContext;
import it.govpay.core.utils.SimpleDateFormatUtils;
-import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.client.EnteRendicontazioniClient;
+import it.govpay.core.utils.client.exception.ClientException;
import it.govpay.core.utils.rawutils.ConverterUtils;
import it.govpay.core.utils.tracciati.TracciatiNotificaPagamentiUtils;
import it.govpay.ec.rendicontazioni.v1.beans.Rpp;
@@ -276,14 +276,8 @@ public void run() {
} finally {
this.popolaContextEvento(connettore.getTipoConnettore(), url, dumpRequest, dumpResponse, this.eventoCtx);
-
- EventiBD eventiBD = new EventiBD(configWrapper);
- try {
- eventiBD.insertEvento(this.eventoCtx.toEventoDTO());
- } catch (ServiceException e) {
- log.error("Errore durante il salvataggio dell'evento: ", e);
- }
-
+ GdeUtils.salvaEvento(this.eventoCtx);
+
if(tracciatiMyPivotBD != null) {
tracciatiMyPivotBD.closeConnection();
}
@@ -474,12 +468,7 @@ private void inviaTracciatoViaAPIRest(String operationId, TracciatoNotificaPagam
}
} finally {
if(client != null && client.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- try {
- eventiBD.insertEvento(client.getEventoCtx().toEventoDTO());
- } catch (ServiceException e) {
- log.error("Errore durante il salvataggio dell'evento: ", e);
- }
+ GdeUtils.salvaEvento(client.getEventoCtx());
}
}
}
@@ -521,12 +510,7 @@ private void inviaTracciatoViaAPIRest(String operationId, TracciatoNotificaPagam
}
} finally {
if(client != null && client.getEventoCtx().isRegistraEvento()) {
- EventiBD eventiBD = new EventiBD(configWrapper);
- try {
- eventiBD.insertEvento(client.getEventoCtx().toEventoDTO());
- } catch (ServiceException e) {
- log.error("Errore durante il salvataggio dell'evento: ", e);
- }
+ GdeUtils.salvaEvento(client.getEventoCtx());
}
}
}
diff --git a/jars/pom.xml b/jars/pom.xml
index 3ba4f562e9..ef8dd525c8 100644
--- a/jars/pom.xml
+++ b/jars/pom.xml
@@ -26,6 +26,7 @@
core
api-commons
client-api-ente
+ client-api-gde
diff --git a/pom.xml b/pom.xml
index 9326049b60..c80ffa8dcb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
3.4.4
- 2.9.10
+ 2.13.3
2.25.1
@@ -290,14 +290,6 @@
compile
-
- it.govpay
- api-gestione
- ${project.version}
- war
- compile
-
-
it.govpay
pagopa-beans
@@ -358,6 +350,14 @@
war
compile
+
+
+ it.govpay
+ client-api-gde
+ ${project.version}
+ jar
+ compile
+
it.govpay
diff --git a/src/main/resources/filters/installer_template.filter.properties b/src/main/resources/filters/installer_template.filter.properties
index 66e5104364..ffef7be3a5 100644
--- a/src/main/resources/filters/installer_template.filter.properties
+++ b/src/main/resources/filters/installer_template.filter.properties
@@ -198,6 +198,12 @@ it.govpay.client.numeroMassimoConnessioniPerPool=200
it.govpay.client.numeroMassimoConnessioniPerRouteDefault=20
+# GovPay Giornale Eventi
+
+# Giornale eventi URL servizio
+it.govpay.giornaleEventi.url=http://localhost:8080/govpay/backend/api/gde
+
+
# Govpay API BackOffice
# titolo applicazione
diff --git a/src/main/resources/filters/template.filter.properties b/src/main/resources/filters/template.filter.properties
index bbb014ff10..42f7f7bb1c 100644
--- a/src/main/resources/filters/template.filter.properties
+++ b/src/main/resources/filters/template.filter.properties
@@ -198,6 +198,12 @@ it.govpay.client.numeroMassimoConnessioniPerPool=500
it.govpay.client.numeroMassimoConnessioniPerRouteDefault=50
+# GovPay Giornale Eventi
+
+# Giornale eventi URL servizio
+it.govpay.giornaleEventi.url=http://localhost:8080/govpay/backend/api/gde
+
+
# Govpay API BackOffice
# titolo applicazione
diff --git a/wars/api-gde/pom.xml b/wars/api-gde/pom.xml
index cb2ecf7b31..428eedae6a 100644
--- a/wars/api-gde/pom.xml
+++ b/wars/api-gde/pom.xml
@@ -28,9 +28,6 @@
../..
${rel-to-parent}/src/main/resources/filters/${env}.filter.properties
-
- 5.1.0
-
6.0.0.Alpha2
@@ -75,6 +72,12 @@
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -110,7 +113,6 @@
org.projectlombok
lombok
- ${org.projectlombok.version}
true
diff --git a/wars/api-gde/src/main/java/it/govpay/gde/controller/GdeController.java b/wars/api-gde/src/main/java/it/govpay/gde/controller/GdeController.java
index 1ea0062dad..3a04291579 100644
--- a/wars/api-gde/src/main/java/it/govpay/gde/controller/GdeController.java
+++ b/wars/api-gde/src/main/java/it/govpay/gde/controller/GdeController.java
@@ -7,6 +7,8 @@
import javax.validation.constraints.Positive;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
@@ -45,6 +47,8 @@
@RestController
@Validated
public class GdeController {
+
+ private Logger logger = LoggerFactory.getLogger(GdeController.class);
@Autowired
private EventoIndexRepository eventoIndexRepository;
@@ -179,13 +183,16 @@ public ResponseEntity getEventoById(@PathVariable("id") @Positive L
@PostMapping(path = "/eventi", consumes = { MediaType.APPLICATION_JSON_VALUE} , name = "addEvento")
public ResponseEntity> addEvento(@RequestBody NuovoEventoModel evento){
+ this.logger.debug("AAAAAA Salvataggio evento: " + evento.toString());
try {
EventoEntity entity = this.nuovoEventoMapper.nuovoEventoModelToEventoEntity(evento);
this.eventoRepository.save(entity);
+ this.logger.debug("AAAAAA Salvataggio evento completato.");
return new ResponseEntity<>(HttpStatus.CREATED);
}catch (Exception e) {
+ this.logger.error("AAAAAA Salvataggio evento completato con errore: " +e.getMessage(), e);
throw new InternalException(e);
}
}
diff --git a/wars/api-gde/src/main/java/it/govpay/gde/security/SecurityConfig.java b/wars/api-gde/src/main/java/it/govpay/gde/security/SecurityConfig.java
index 71d9a52663..bc586ef9d3 100644
--- a/wars/api-gde/src/main/java/it/govpay/gde/security/SecurityConfig.java
+++ b/wars/api-gde/src/main/java/it/govpay/gde/security/SecurityConfig.java
@@ -13,6 +13,7 @@ public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
+ .csrf().disable()
.authorizeHttpRequests((authz) -> authz
.anyRequest().permitAll()
)
diff --git a/wars/api-gde/src/main/resources/openapi_gen.yaml b/wars/api-gde/src/main/resources/openapi_gen.yaml
index 66f114e66f..4aaef791a7 100644
--- a/wars/api-gde/src/main/resources/openapi_gen.yaml
+++ b/wars/api-gde/src/main/resources/openapi_gen.yaml
@@ -1,623 +1,491 @@
-openapi: 3.0.0
+openapi: 3.0.1
info:
- version: "1.0.0"
- title: GovPay - API Giornale degli eventi
- contact:
- name: GitHub Project Page
- url: 'https://github.com/link-it/GovPay/'
- license:
- name: GPL
- url: 'https://github.com/link-it/GovPay/blob/master/LICENSE'
+ title: OpenAPI definition
+ version: v0
servers:
- - url: /govpay/backend/api/gde/rs/basic/v1/
-tags:
- - name: Giornale degli Eventi
- description: Consultazione del Giornale degli Eventi
-security:
- - basicAuth: []
+- url: http://localhost:8080/govpay/backend/api/gde
+ description: Generated server url
paths:
- '/eventi':
+ /eventi:
get:
- summary: Giornale degli eventi
- operationId: findEventi
tags:
- - Giornale degli Eventi
+ - gde-controller
+ operationId: findEventi
parameters:
- - $ref: '#/components/parameters/pagina'
- - $ref: '#/components/parameters/risultatiPerPagina'
- - $ref: '#/components/parameters/idDominio'
- - $ref: '#/components/parameters/iuv'
- - $ref: '#/components/parameters/ccp'
- - $ref: '#/components/parameters/idA2A'
- - $ref: '#/components/parameters/idPendenza'
- - $ref: '#/components/parameters/idPagamentoRpp'
- - $ref: '#/components/parameters/esitoEvento'
- - $ref: '#/components/parameters/dataDa'
- - $ref: '#/components/parameters/dataA'
- - $ref: '#/components/parameters/categoriaEvento'
- - $ref: '#/components/parameters/tipoEvento'
- - $ref: '#/components/parameters/sottotipoEvento'
- - $ref: '#/components/parameters/componenteEvento'
- - $ref: '#/components/parameters/ruoloEvento'
- - $ref: '#/components/parameters/messaggiEvento'
- - $ref: '#/components/parameters/metadatiPaginazione'
- - $ref: '#/components/parameters/maxRisultati'
- - $ref: '#/components/parameters/severitaDa'
- - $ref: '#/components/parameters/severitaA'
+ - name: pageable
+ in: query
+ required: true
+ schema:
+ $ref: '#/components/schemas/Pageable'
+ - name: dataDa
+ in: query
+ required: false
+ schema:
+ type: string
+ format: date-time
+ - name: dataA
+ in: query
+ required: false
+ schema:
+ type: string
+ format: date-time
+ - name: idDominio
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: iuv
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: ccp
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idA2A
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idPendenza
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: idPagamento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: categoriaEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
+ - name: esitoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
+ - name: ruoloEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - CLIENT
+ - SERVER
+ - name: sottotipoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: tipoEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ - name: componenteEvento
+ in: query
+ required: false
+ schema:
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
+ - name: severitaDa
+ in: query
+ required: false
+ schema:
+ type: integer
+ format: int32
+ - name: severitaA
+ in: query
+ required: false
+ schema:
+ type: integer
+ format: int32
responses:
- '200':
- description: Elenco degli eventi
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
content:
application/json:
schema:
- allOf:
- - $ref: '#/components/schemas/ListaPaginata'
- - type: object
- required:
- - risultati
- properties:
- risultati:
- type: array
- items:
- $ref: '#/components/schemas/Evento'
- '401':
- $ref: '#/components/responses/401'
- '403':
- $ref: '#/components/responses/403'
- '500':
- $ref: '#/components/responses/500'
- put:
- summary: Giornale degli eventi
- operationId: addEvento
+ $ref: '#/components/schemas/PagedModelEventoIndexModel'
+ post:
tags:
- - Giornale degli Eventi
+ - gde-controller
+ operationId: addEvento
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/NuovoEvento'
+ $ref: '#/components/schemas/nuovoEvento'
+ required: true
responses:
- '200':
- description: Evento registrato con successo
- '400':
- $ref: '#/components/responses/400'
- '401':
- $ref: '#/components/responses/401'
- '403':
- $ref: '#/components/responses/403'
- '422':
- $ref: '#/components/responses/422'
- '500':
- $ref: '#/components/responses/500'
- '/eventi/{id}':
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
+ content:
+ '*/*':
+ schema:
+ type: object
+ /eventi/{id}:
get:
- summary: Dettaglio di un evento
- operationId: getEvento
tags:
- - Giornale degli Eventi
+ - gde-controller
+ operationId: getEventoById
parameters:
- - in: path
- name: id
- description: Identificativo Evento
- required: true
- schema:
- type: string
+ - name: id
+ in: path
+ required: true
+ schema:
+ type: integer
+ format: int64
responses:
- '201':
- description: Dettaglio di un evento
+ "404":
+ description: Not Found
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "500":
+ description: Internal Server Error
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "422":
+ description: Unprocessable Entity
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/problem'
+ "200":
+ description: OK
content:
application/json:
schema:
- $ref: '#/components/schemas/Evento'
- '401':
- $ref: '#/components/responses/401'
- '403':
- $ref: '#/components/responses/403'
- '404':
- $ref: '#/components/responses/400'
- '500':
- $ref: '#/components/responses/500'
+ $ref: '#/components/schemas/evento'
components:
- parameters:
- campi:
- name: campi
- in: query
- description: >-
- csv dei campi da includere nella risposta (default tutti)
- required: false
- schema:
- type: string
- categoriaEvento:
- name: categoriaEvento
- in: query
- description: Filtro per categoria evento
- required: false
- schema:
- $ref: '#/components/schemas/CategoriaEvento'
- ccp:
- name: ccp
- in: query
- description: Codice contesto pagamento
- required: false
- schema:
- type: string
- componenteEvento:
- name: componente
- in: query
- description: Filtro per componente evento
- required: false
- schema:
- $ref: '#/components/schemas/ComponenteEvento'
- dataDa:
- name: dataDa
- in: query
- description: Inizio della finestra temporale di osservazione
- required: false
- schema:
- type: string
- format: date-time
- dataA:
- name: dataA
- in: query
- description: Fine della finestra temporale di osservazione
- required: false
- schema:
- type: string
- format: date-time
- esitoEvento:
- name: esito
- in: query
- description: Filtro per esito evento
- required: false
- schema:
- $ref: '#/components/schemas/EsitoEvento'
- idA2A:
- name: idA2A
- in: query
- description: Identificativo del gestionale proprietario della pendenza
- required: false
- schema:
- type: string
- idDominio:
- name: idDominio
- in: query
- description: Identificativo del dominio beneficiario
- required: false
- schema:
- type: string
- pattern: '(^([0-9]){11}$)'
- idPagamentoRpp:
- name: idPagamento
- in: query
- description: Identificativo della richiesta di pagamento
- required: false
- schema:
- type: string
- example: 'c8be909b-2feb-4ffa-8f98-704462abbd1d'
- idPendenza:
- name: idPendenza
- in: query
- description: Identificativo della pendenza nel gestionale proprietario
- required: false
- schema:
- type: string
- iuv:
- name: iuv
- in: query
- description: Identificativo univoco di versamento
- required: false
- schema:
- type: string
- maxRisultati:
- name: maxRisultati
- in: query
- description: >-
- Indica se il servizio deve impostare o meno il limite sul calcolo del numero di risultati
- required: false
- schema:
- type: boolean
- default: true
- example: true
- messaggiEvento:
- name: messaggi
- in: query
- description: Include nella risposta le informazioni sui messaggi scambiati
- required: false
- schema:
- type: boolean
- metadatiPaginazione:
- name: metadatiPaginazione
- in: query
- description: >-
- Indica se il servizio calcola e valorizza i dati di paginazione o meno
- required: false
- schema:
- type: boolean
- default: true
- example: true
- ordinamento:
- name: ordinamento
- in: query
- description: >-
- Csv dei campi su cui ordinare i risultati, preceduti da + o - per ascendente o discendente (default ascendente)
- * dataRichiestaPagamento
- * stato
- required: false
- schema:
- type: string
- example: +name
- pagina:
- name: pagina
- in: query
- description: Numero di pagina dei risultati
- required: false
- schema:
- $ref: '#/components/schemas/Pagina'
- risultatiPerPagina:
- name: risultatiPerPagina
- in: query
- description: Numero di risultati richiesti (max 5000)
- required: false
- schema:
- $ref: '#/components/schemas/RisultatiPerPagina'
- ruoloEvento:
- name: ruolo
- in: query
- description: filtro per ruolo evento
- required: false
- schema:
- $ref: '#/components/schemas/RuoloEvento'
- severitaDa:
- name: severitaDa
- in: query
- description: filtro per severita errore
- required: false
- schema:
- type: integer
- format: int32
- severitaA:
- name: severitaA
- in: query
- description: filtro per severita errore
- required: false
- schema:
- type: integer
- format: int32
- sottotipoEvento:
- name: sottotipoEvento
- in: query
- description: filtro per sottotipo evento
- required: false
- schema:
- type: string
- tipoEvento:
- name: tipoEvento
- in: query
- description: filtro per tipologia evento
- required: false
- schema:
- type: string
- responses:
- '400':
- description: Richiesta non correttamente formata
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/FaultBean'
- example:
- categoria: RICHIESTA
- codice: INTERNO
- descrizione: Servizio non disponibile
- '401':
- description: Richiesta non autenticata
- '403':
- description: Richiesta non autorizzata
- '404':
- description: Risorsa inesistente
- '415':
- description: Formato del messaggio non valido
- '422':
- description: Richiesta non processabile
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/FaultBean'
- example:
- categoria: RICHIESTA
- codice: INTERNO
- descrizione: Richiesta non processabile
- '500':
- description: Servizio non disponibile
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/FaultBean'
- example:
- categoria: INTERNO
- codice: INTERNO
- descrizione: Servizio non disponibile
- securitySchemes:
- basicAuth:
- type: http
- scheme: basic
schemas:
- CategoriaEvento:
- type: string
- enum:
- - INTERNO
- - INTERFACCIA
- - UTENTE
- example: 'INTERFACCIA'
- ComponenteEvento:
- type: string
- description: Modulo interno che ha emesso l'evento
- enum:
- - API_BACKOFFICE
- - API_ENTE
- - API_PAGOPA
- - API_PAGAMENTO
- - API_PENDENZE
- - API_RAGIONERIA
- - API_BACKEND_IO
- - API_SECIM
- - API_MYPIVOT
- - API_MAGGIOLI_JPPA
- - API_GOVPAY
- - API_HYPERSIC_APK
- - API_USER
- - GOVPAY
- example: 'API_PAGOPA'
- DatiPagoPA:
+ problem:
+ type: object
+ properties:
+ type:
+ type: string
+ format: uri
+ title:
+ type: string
+ status:
+ type: integer
+ format: int32
+ detail:
+ type: string
+ instance:
+ type: string
+ format: uri
+ Links:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/Link'
+ datiPagoPA:
type: object
properties:
idPsp:
type: string
- description: Identificativo del PSP
- example: 'ABI12345'
idCanale:
type: string
- example: 'ABI12345_01'
idIntermediarioPsp:
type: string
- example: 'ABI12345_01'
tipoVersamento:
type: string
- description: Tipologia di versamento realizzato
- example: 'CP'
modelloPagamento:
type: string
- description: Modello di pagamento utilizzato
- example: '0'
idDominio:
type: string
- example: '99999999999'
idIntermediario:
type: string
- example: '99999999999'
idStazione:
type: string
- example: '99999999999_01'
idRiconciliazione:
type: string
- description: Identificativo dell'incasso
- example: '12345'
sct:
type: string
- description: Identificativo Sepa Credit Transfer
- example: 2017-01-01ABI00000011234
idFlusso:
type: string
- description: identificativo del flusso di rendicontazione
- example: 2017-11-21GovPAYPsp1-10:27:27.903
dataFlusso:
type: string
format: date-time
- description: data flusso di rendicontazione
- example: '2017-07-21T17:32:28Z'
idTracciato:
type: number
- description: Identificativo numerico del tracciato
- example:
- 123456
- EsitoEvento:
- type: string
- enum:
- - OK
- - KO
- - FAIL
- example: 'OK'
- Evento:
- allOf:
- - $ref: '#/components/schemas/EventoIndex'
- - type: object
- required:
- - parametriRichiesta
- - parametriRisposta
- properties:
- parametriRichiesta:
- type: object
- description: 'Dettaglio del messaggio di richiesta'
- parametriRisposta:
- type: object
- description: 'Dettaglio del messaggio di risposta'
- EventoIndex:
+ _links:
+ $ref: '#/components/schemas/Links'
+ nuovoEvento:
type: object
- required:
- - id
- - componente
- - categoriaEvento
- - ruolo
- - tipoEvento
- - esito
- - dataEvento
- - durataEvento
properties:
id:
type: integer
format: int64
- description: Identificativo evento
- example: 1201122131
componente:
- $ref: '#/components/schemas/ComponenteEvento'
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
categoriaEvento:
- $ref: '#/components/schemas/CategoriaEvento'
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
ruolo:
- $ref: '#/components/schemas/RuoloEvento'
+ type: string
+ enum:
+ - CLIENT
+ - SERVER
tipoEvento:
type: string
- example: 'nodoInviaRPT'
- maxLength: 255
esito:
- $ref: '#/components/schemas/EsitoEvento'
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
dataEvento:
type: string
format: date-time
- description: Data emissione evento
- example: '2017-07-21T17:32:28Z'
durataEvento:
type: integer
format: int64
- description: Durata evento (in millisecondi)
- example: 120
sottotipoEvento:
type: string
- example: 'richiesta verso il nodo'
- maxLength: 255
sottotipoEsito:
type: string
- description: Descrizione dell'esito
- example: '200'
- maxLength: 255
dettaglioEsito:
type: string
- example: 'Operazione completata con successo'
idDominio:
type: string
- description: Identificativo ente creditore
- example: 01234567890
- pattern: '(^([0-9]){11}$)'
iuv:
type: string
- description: Identificativo univoco di versamento
- example: RF23567483937849450550875
- maxLength: 35
ccp:
type: string
- description: Codice contesto di pagamento
- example: '1234acdc'
- maxLength: 35
idA2A:
type: string
- description: Identificativo del gestionale responsabile della pendenza
- example: 'A2A-12345'
- pattern: '(^[a-zA-Z0-9\-_]{1,35}$)'
idPendenza:
type: string
- description: Identificativo della pendenza nel gestionale responsabile
- example: 'abcdef12345'
- pattern: '(^[a-zA-Z0-9\-_]{1,35}$)'
idPagamento:
type: string
- description: Identificativo del pagamento assegnato da GovPay
- example: 'f9866575-e255-4d10-9845-57ba88bec136'
- maxLength: 35
datiPagoPA:
- $ref: '#/components/schemas/DatiPagoPA'
+ $ref: '#/components/schemas/datiPagoPA'
severita:
type: integer
format: int32
- description: indica il livello di severita nel caso di evento con esito KO/FAIL
- example: 0
- FaultBean:
+ parametriRichiesta:
+ type: object
+ parametriRisposta:
+ type: object
+ Pageable:
type: object
- required:
- - categoria
- - codice
- - descrizione
properties:
- categoria:
- type: string
- description: >-
- Categoria dell'errore riscontrato:
- * `AUTORIZZAZIONE` - Operazione non autorizzata
- * `RICHIESTA` - Richiesta non valida
- * `OPERAZIONE` - Operazione non eseguibile
- * `PAGOPA` - Errore da PagoPA
- * `EC` - Errore da Ente Creditore
- * `INTERNO` - Errore interno
+ page:
+ minimum: 0
+ type: integer
+ format: int32
+ size:
+ minimum: 1
+ type: integer
+ format: int32
+ sort:
+ type: array
+ items:
+ type: string
+ PageMetadata:
+ type: object
+ properties:
+ size:
+ type: integer
+ format: int64
+ totalElements:
+ type: integer
+ format: int64
+ totalPages:
+ type: integer
+ format: int64
+ number:
+ type: integer
+ format: int64
+ PagedModelEventoIndexModel:
+ type: object
+ properties:
+ _embedded:
+ type: object
+ properties:
+ eventi:
+ type: array
+ items:
+ $ref: '#/components/schemas/evento'
+ _links:
+ $ref: '#/components/schemas/Links'
+ page:
+ $ref: '#/components/schemas/PageMetadata'
+ evento:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ componente:
+ type: string
+ enum:
+ - API_BACKOFFICE
+ - API_ENTE
+ - API_PAGOPA
+ - API_PAGAMENTO
+ - API_PENDENZE
+ - API_RAGIONERIA
+ - API_BACKEND_IO
+ - API_SECIM
+ - API_MYPIVOT
+ - API_MAGGIOLI_JPPA
+ - API_GOVPAY
+ - API_HYPERSIC_APK
+ - API_USER
+ - GOVPAY
+ categoriaEvento:
+ type: string
+ enum:
+ - INTERNO
+ - INTERFACCIA
+ - UTENTE
+ ruolo:
+ type: string
enum:
- - AUTORIZZAZIONE
- - RICHIESTA
- - OPERAZIONE
- - PAGOPA
- - EC
- - INTERNO
- codice:
- type: string
- description: Codice di errore
- descrizione:
- type: string
- description: Descrizione dell'errore
- dettaglio:
- type: string
- description: Descrizione aggiuntiva
- example:
- categoria: INTERNO
- codice: INTERNO
- descrizione: Servizio non disponibile
- ListaPaginata:
+ - CLIENT
+ - SERVER
+ tipoEvento:
+ type: string
+ esito:
+ type: string
+ enum:
+ - OK
+ - KO
+ - FAIL
+ dataEvento:
+ type: string
+ format: date-time
+ durataEvento:
+ type: integer
+ format: int64
+ sottotipoEvento:
+ type: string
+ sottotipoEsito:
+ type: string
+ dettaglioEsito:
+ type: string
+ idDominio:
+ type: string
+ iuv:
+ type: string
+ ccp:
+ type: string
+ idA2A:
+ type: string
+ idPendenza:
+ type: string
+ idPagamento:
+ type: string
+ datiPagoPA:
+ $ref: '#/components/schemas/datiPagoPA'
+ severita:
+ type: integer
+ format: int32
+ _links:
+ $ref: '#/components/schemas/Links'
+ Link:
type: object
properties:
- numRisultati:
- type: number
- format: integer
- example: '100'
- numPagine:
- type: number
- format: integer
- example: '4'
- risultatiPerPagina:
- type: number
- format: integer
- example: '25'
- pagina:
- type: number
- format: integer
- example: '1'
- prossimiRisultati:
+ href:
type: string
- format: integer
- example: '/risorsa?pagina=2'
- maxRisultati:
- type: number
- format: integer
- example: '100'
- NuovoEvento:
- allOf:
- - $ref: '#/components/schemas/EventoIndex'
- - type: object
- required:
- - parametriRichiesta
- - parametriRisposta
- properties:
- parametriRichiesta:
- type: object
- description: 'Dettaglio del messaggio di richiesta'
- parametriRisposta:
- type: object
- description: 'Dettaglio del messaggio di risposta'
- Pagina:
- type: integer
- default: 1
- minimum: 1
- RisultatiPerPagina:
- type: integer
- default: 25
- minimum: 0
- maximum: 200
- RuoloEvento:
- type: string
- enum:
- - CLIENT
- - SERVER
- example: 'SERVER'
+ hreflang:
+ type: string
+ title:
+ type: string
+ type:
+ type: string
+ deprecation:
+ type: string
+ profile:
+ type: string
+ name:
+ type: string
+ templated:
+ type: boolean