mirror of
https://github.com/pcvolkmer/etl-processor.git
synced 2025-04-19 17:26:51 +00:00
Use single MtbFileSender
This commit is contained in:
parent
13bfa0018d
commit
47830ed9f7
@ -19,19 +19,22 @@
|
||||
|
||||
package dev.dnpm.etl.processor
|
||||
|
||||
import dev.dnpm.etl.processor.output.MtbFileSender
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.boot.test.mock.mockito.MockBean
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension
|
||||
import org.testcontainers.junit.jupiter.Testcontainers
|
||||
|
||||
@Testcontainers
|
||||
@ExtendWith(SpringExtension::class)
|
||||
@SpringBootTest
|
||||
@MockBean(MtbFileSender::class)
|
||||
class EtlProcessorApplicationTests : AbstractTestcontainerTest() {
|
||||
|
||||
@Test
|
||||
fun contextLoads() {
|
||||
fun contextLoadsIfMtbFileSenderConfigured() {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -24,12 +24,14 @@ import dev.dnpm.etl.processor.monitoring.Request
|
||||
import dev.dnpm.etl.processor.monitoring.RequestRepository
|
||||
import dev.dnpm.etl.processor.monitoring.RequestStatus
|
||||
import dev.dnpm.etl.processor.monitoring.RequestType
|
||||
import dev.dnpm.etl.processor.output.MtbFileSender
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.extension.ExtendWith
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.boot.test.mock.mockito.MockBean
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import org.testcontainers.junit.jupiter.Testcontainers
|
||||
@ -40,6 +42,7 @@ import java.util.*
|
||||
@ExtendWith(SpringExtension::class)
|
||||
@SpringBootTest
|
||||
@Transactional
|
||||
@MockBean(MtbFileSender::class)
|
||||
class RequestServiceIntegrationTest : AbstractTestcontainerTest() {
|
||||
|
||||
private lateinit var requestRepository: RequestRepository
|
||||
|
@ -37,7 +37,7 @@ import java.util.*
|
||||
@Service
|
||||
class RequestProcessor(
|
||||
private val pseudonymizeService: PseudonymizeService,
|
||||
private val senders: List<MtbFileSender>,
|
||||
private val sender: MtbFileSender,
|
||||
private val requestService: RequestService,
|
||||
private val objectMapper: ObjectMapper,
|
||||
private val statisticsUpdateProducer: Sinks.Many<Any>
|
||||
@ -66,32 +66,26 @@ class RequestProcessor(
|
||||
|
||||
val request = MtbFileSender.MtbFileRequest(UUID.randomUUID().toString(), pseudonymized)
|
||||
|
||||
val responses = senders.map {
|
||||
val responseStatus = it.send(request)
|
||||
if (responseStatus.status == MtbFileSender.ResponseStatus.SUCCESS || responseStatus.status == MtbFileSender.ResponseStatus.WARNING) {
|
||||
logger.info(
|
||||
"Sent file for Patient '{}' using '{}'",
|
||||
pseudonymized.patient.id,
|
||||
it.javaClass.simpleName
|
||||
)
|
||||
} else {
|
||||
logger.error(
|
||||
"Error sending file for Patient '{}' using '{}'",
|
||||
pseudonymized.patient.id,
|
||||
it.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
responseStatus
|
||||
val responseStatus = sender.send(request)
|
||||
if (responseStatus.status == MtbFileSender.ResponseStatus.SUCCESS || responseStatus.status == MtbFileSender.ResponseStatus.WARNING) {
|
||||
logger.info(
|
||||
"Sent file for Patient '{}' using '{}'",
|
||||
pseudonymized.patient.id,
|
||||
sender.javaClass.simpleName
|
||||
)
|
||||
} else {
|
||||
logger.error(
|
||||
"Error sending file for Patient '{}' using '{}'",
|
||||
pseudonymized.patient.id,
|
||||
sender.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
|
||||
val requestStatus = if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.ERROR)) {
|
||||
RequestStatus.ERROR
|
||||
} else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.WARNING)) {
|
||||
RequestStatus.WARNING
|
||||
} else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.SUCCESS)) {
|
||||
RequestStatus.SUCCESS
|
||||
} else {
|
||||
RequestStatus.UNKNOWN
|
||||
val requestStatus = when (responseStatus.status) {
|
||||
MtbFileSender.ResponseStatus.ERROR -> RequestStatus.ERROR
|
||||
MtbFileSender.ResponseStatus.WARNING -> RequestStatus.WARNING
|
||||
MtbFileSender.ResponseStatus.SUCCESS -> RequestStatus.SUCCESS
|
||||
else -> RequestStatus.UNKNOWN
|
||||
}
|
||||
|
||||
requestService.save(
|
||||
@ -104,9 +98,7 @@ class RequestProcessor(
|
||||
type = RequestType.MTB_FILE,
|
||||
report = when (requestStatus) {
|
||||
RequestStatus.ERROR -> Report("Fehler bei der Datenübertragung oder Inhalt nicht verarbeitbar")
|
||||
RequestStatus.WARNING -> Report("Warnungen über mangelhafte Daten",
|
||||
responses.joinToString("\n") { it.reason })
|
||||
|
||||
RequestStatus.WARNING -> Report("Warnungen über mangelhafte Daten", responseStatus.reason)
|
||||
RequestStatus.UNKNOWN -> Report("Keine Informationen")
|
||||
else -> null
|
||||
}
|
||||
@ -132,42 +124,38 @@ class RequestProcessor(
|
||||
try {
|
||||
val patientPseudonym = pseudonymizeService.patientPseudonym(patientId)
|
||||
|
||||
val responses = senders.map {
|
||||
val responseStatus = it.send(MtbFileSender.DeleteRequest(requestId, patientPseudonym))
|
||||
when (responseStatus.status) {
|
||||
MtbFileSender.ResponseStatus.SUCCESS -> {
|
||||
logger.info(
|
||||
"Sent delete for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
it.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
|
||||
MtbFileSender.ResponseStatus.ERROR -> {
|
||||
logger.error(
|
||||
"Error deleting data for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
it.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
logger.error(
|
||||
"Unknown result on deleting data for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
it.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
val responseStatus = sender.send(MtbFileSender.DeleteRequest(requestId, patientPseudonym))
|
||||
when (responseStatus.status) {
|
||||
MtbFileSender.ResponseStatus.SUCCESS -> {
|
||||
logger.info(
|
||||
"Sent delete for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
sender.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
|
||||
MtbFileSender.ResponseStatus.ERROR -> {
|
||||
logger.error(
|
||||
"Error deleting data for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
sender.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
|
||||
else -> {
|
||||
logger.error(
|
||||
"Unknown result on deleting data for Patient '{}' using '{}'",
|
||||
patientPseudonym,
|
||||
sender.javaClass.simpleName
|
||||
)
|
||||
}
|
||||
responseStatus
|
||||
}
|
||||
|
||||
val overallRequestStatus = if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.ERROR)) {
|
||||
RequestStatus.ERROR
|
||||
} else if (responses.map { it.status }.contains(MtbFileSender.ResponseStatus.SUCCESS)) {
|
||||
RequestStatus.SUCCESS
|
||||
} else {
|
||||
RequestStatus.UNKNOWN
|
||||
val requestStatus = when (responseStatus.status) {
|
||||
MtbFileSender.ResponseStatus.ERROR -> RequestStatus.ERROR
|
||||
MtbFileSender.ResponseStatus.WARNING -> RequestStatus.WARNING
|
||||
MtbFileSender.ResponseStatus.SUCCESS -> RequestStatus.SUCCESS
|
||||
else -> RequestStatus.UNKNOWN
|
||||
}
|
||||
|
||||
requestService.save(
|
||||
@ -176,9 +164,9 @@ class RequestProcessor(
|
||||
patientId = patientPseudonym,
|
||||
pid = patientId,
|
||||
fingerprint = fingerprint(patientPseudonym),
|
||||
status = overallRequestStatus,
|
||||
status = requestStatus,
|
||||
type = RequestType.DELETE,
|
||||
report = when (overallRequestStatus) {
|
||||
report = when (requestStatus) {
|
||||
RequestStatus.ERROR -> Report("Fehler bei der Datenübertragung oder Inhalt nicht verarbeitbar")
|
||||
RequestStatus.UNKNOWN -> Report("Keine Informationen")
|
||||
else -> null
|
||||
|
@ -67,7 +67,7 @@ class RequestProcessorTest {
|
||||
|
||||
requestProcessor = RequestProcessor(
|
||||
pseudonymizeService,
|
||||
listOf(sender),
|
||||
sender,
|
||||
requestService,
|
||||
objectMapper,
|
||||
statisticsUpdateProducer
|
||||
|
Loading…
x
Reference in New Issue
Block a user