diff options
Diffstat (limited to 'src/main')
5 files changed, 31 insertions, 11 deletions
diff --git a/src/main/kotlin/dev/dnpm/etl/processor/config/AppRestConfiguration.kt b/src/main/kotlin/dev/dnpm/etl/processor/config/AppRestConfiguration.kt index a393267..1a18924 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/config/AppRestConfiguration.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/config/AppRestConfiguration.kt @@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.config import dev.dnpm.etl.processor.monitoring.ConnectionCheckResult import dev.dnpm.etl.processor.monitoring.ConnectionCheckService +import dev.dnpm.etl.processor.monitoring.ReportService import dev.dnpm.etl.processor.monitoring.RestConnectionCheckService import dev.dnpm.etl.processor.output.MtbFileSender import dev.dnpm.etl.processor.output.RestBwhcMtbFileSender @@ -53,15 +54,16 @@ class AppRestConfiguration { fun restMtbFileSender( restTemplate: RestTemplate, restTargetProperties: RestTargetProperties, - retryTemplate: RetryTemplate + retryTemplate: RetryTemplate, + reportService: ReportService, ): MtbFileSender { if (restTargetProperties.isBwhc) { logger.info("Selected 'RestBwhcMtbFileSender'") - return RestBwhcMtbFileSender(restTemplate, restTargetProperties, retryTemplate) + return RestBwhcMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) } logger.info("Selected 'RestDipMtbFileSender'") - return RestDipMtbFileSender(restTemplate, restTargetProperties, retryTemplate) + return RestDipMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) } @Bean diff --git a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/ReportService.kt b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/ReportService.kt index 062f749..9f4c568 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/monitoring/ReportService.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/monitoring/ReportService.kt @@ -25,6 +25,8 @@ import com.fasterxml.jackson.annotation.JsonValue import com.fasterxml.jackson.core.JsonParseException import com.fasterxml.jackson.databind.JsonMappingException import com.fasterxml.jackson.databind.ObjectMapper +import dev.dnpm.etl.processor.monitoring.ReportService.Issue +import dev.dnpm.etl.processor.monitoring.ReportService.Severity class ReportService( private val objectMapper: ObjectMapper @@ -63,4 +65,13 @@ class ReportService( WARNING("warning"), INFO("info") } +} + +fun List<Issue>.asRequestStatus(): RequestStatus { + val severity = this.minOfOrNull { it.severity } + return when (severity) { + Severity.FATAL, Severity.ERROR -> RequestStatus.ERROR + Severity.WARNING -> RequestStatus.WARNING + else -> RequestStatus.SUCCESS + } }
\ No newline at end of file diff --git a/src/main/kotlin/dev/dnpm/etl/processor/output/RestBwhcMtbFileSender.kt b/src/main/kotlin/dev/dnpm/etl/processor/output/RestBwhcMtbFileSender.kt index f4a58e8..fbe6d0d 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/RestBwhcMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/RestBwhcMtbFileSender.kt @@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.output import dev.dnpm.etl.processor.PatientPseudonym import dev.dnpm.etl.processor.config.RestTargetProperties +import dev.dnpm.etl.processor.monitoring.ReportService import org.springframework.retry.support.RetryTemplate import org.springframework.web.client.RestTemplate import org.springframework.web.util.UriComponentsBuilder @@ -28,8 +29,9 @@ import org.springframework.web.util.UriComponentsBuilder class RestBwhcMtbFileSender( restTemplate: RestTemplate, private val restTargetProperties: RestTargetProperties, - retryTemplate: RetryTemplate -) : RestMtbFileSender(restTemplate, restTargetProperties, retryTemplate) { + retryTemplate: RetryTemplate, + reportService: ReportService, +) : RestMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) { override fun sendUrl(): String { return UriComponentsBuilder diff --git a/src/main/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSender.kt b/src/main/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSender.kt index 42dbb30..1e6a5a7 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/RestDipMtbFileSender.kt @@ -21,6 +21,7 @@ package dev.dnpm.etl.processor.output import dev.dnpm.etl.processor.PatientPseudonym import dev.dnpm.etl.processor.config.RestTargetProperties +import dev.dnpm.etl.processor.monitoring.ReportService import org.springframework.retry.support.RetryTemplate import org.springframework.web.client.RestTemplate import org.springframework.web.util.UriComponentsBuilder @@ -28,8 +29,9 @@ import org.springframework.web.util.UriComponentsBuilder class RestDipMtbFileSender( restTemplate: RestTemplate, private val restTargetProperties: RestTargetProperties, - retryTemplate: RetryTemplate -) : RestMtbFileSender(restTemplate, restTargetProperties, retryTemplate) { + retryTemplate: RetryTemplate, + reportService: ReportService +) : RestMtbFileSender(restTemplate, restTargetProperties, retryTemplate, reportService) { override fun sendUrl(): String { return UriComponentsBuilder diff --git a/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt b/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt index 016981c..90e3629 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt @@ -22,6 +22,8 @@ package dev.dnpm.etl.processor.output import dev.dnpm.etl.processor.config.RestTargetProperties import dev.dnpm.etl.processor.monitoring.RequestStatus import dev.dnpm.etl.processor.PatientPseudonym +import dev.dnpm.etl.processor.monitoring.ReportService +import dev.dnpm.etl.processor.monitoring.asRequestStatus import org.slf4j.LoggerFactory import org.springframework.http.HttpEntity import org.springframework.http.HttpHeaders @@ -34,7 +36,8 @@ import org.springframework.web.client.RestTemplate abstract class RestMtbFileSender( private val restTemplate: RestTemplate, private val restTargetProperties: RestTargetProperties, - private val retryTemplate: RetryTemplate + private val retryTemplate: RetryTemplate, + private val reportService: ReportService ) : MtbFileSender { private val logger = LoggerFactory.getLogger(RestMtbFileSender::class.java) @@ -56,19 +59,19 @@ abstract class RestMtbFileSender( if (!response.statusCode.is2xxSuccessful) { logger.warn("Error sending to remote system: {}", response.body) return@execute MtbFileSender.Response( - response.statusCode.asRequestStatus(), + reportService.deserialize(response.body).asRequestStatus(), "Status-Code: ${response.statusCode.value()}" ) } logger.debug("Sent file via RestMtbFileSender") - return@execute MtbFileSender.Response(response.statusCode.asRequestStatus(), response.body.orEmpty()) + return@execute MtbFileSender.Response(reportService.deserialize(response.body).asRequestStatus(), response.body.orEmpty()) } } catch (e: IllegalArgumentException) { logger.error("Not a valid URI to export to: '{}'", restTargetProperties.uri!!) } catch (e: RestClientResponseException) { logger.info(restTargetProperties.uri!!.toString()) logger.error("Request data not accepted by remote system", e) - return MtbFileSender.Response(e.statusCode.asRequestStatus(), e.responseBodyAsString) + return MtbFileSender.Response(reportService.deserialize(e.responseBodyAsString).asRequestStatus(), e.responseBodyAsString) } return MtbFileSender.Response(RequestStatus.ERROR, "Sonstiger Fehler bei der Übertragung") } |
