diff --git a/src/main/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSender.kt b/src/main/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSender.kt index 7a88445..55503cf 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/KafkaMtbFileSender.kt @@ -30,7 +30,7 @@ class KafkaMtbFileSender( private val logger = LoggerFactory.getLogger(KafkaMtbFileSender::class.java) - override fun send(request: MtbFileSender.Request): MtbFileSender.Response { + override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response { return try { val result = kafkaTemplate.sendDefault( header(request), @@ -49,7 +49,12 @@ class KafkaMtbFileSender( } } - private fun header(request: MtbFileSender.Request): String { + // TODO not yet implemented + override fun send(request: MtbFileSender.DeleteRequest): MtbFileSender.Response { + return MtbFileSender.Response(MtbFileSender.ResponseStatus.UNKNOWN) + } + + private fun header(request: MtbFileSender.MtbFileRequest): String { return "{\"pid\": \"${request.mtbFile.patient.id}\", " + "\"eid\": \"${request.mtbFile.episode.id}\", " + "\"requestId\": \"${request.requestId}\"}" 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 fc3d1c0..93eaa79 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/output/RestMtbFileSender.kt @@ -33,7 +33,7 @@ class RestMtbFileSender(private val restTargetProperties: RestTargetProperties) private val restTemplate = RestTemplate() - override fun send(request: MtbFileSender.Request): MtbFileSender.Response { + override fun send(request: MtbFileSender.MtbFileRequest): MtbFileSender.Response { try { val headers = HttpHeaders() headers.contentType = MediaType.APPLICATION_JSON @@ -62,4 +62,25 @@ class RestMtbFileSender(private val restTargetProperties: RestTargetProperties) return MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR, "Sonstiger Fehler bei der Übertragung") } + override fun send(request: MtbFileSender.DeleteRequest): MtbFileSender.Response { + try { + val headers = HttpHeaders() + headers.contentType = MediaType.APPLICATION_JSON + val entityReq = HttpEntity(null, headers) + restTemplate.delete( + restTargetProperties.uri!!, + entityReq, + String::class.java + ) + logger.debug("Sent file via RestMtbFileSender") + MtbFileSender.Response(MtbFileSender.ResponseStatus.SUCCESS) + } catch (e: IllegalArgumentException) { + logger.error("Not a valid URI to export to: '{}'", restTargetProperties.uri!!) + } catch (e: RestClientException) { + logger.info(restTargetProperties.uri!!.toString()) + logger.error("Cannot send data to remote system", e) + } + return MtbFileSender.Response(MtbFileSender.ResponseStatus.ERROR, "Sonstiger Fehler bei der Übertragung") + } + } \ No newline at end of file diff --git a/src/main/kotlin/dev/dnpm/etl/processor/web/MtbFileController.kt b/src/main/kotlin/dev/dnpm/etl/processor/web/MtbFileController.kt index a720f20..be11c32 100644 --- a/src/main/kotlin/dev/dnpm/etl/processor/web/MtbFileController.kt +++ b/src/main/kotlin/dev/dnpm/etl/processor/web/MtbFileController.kt @@ -31,12 +31,9 @@ import org.apache.commons.codec.binary.Base32 import org.apache.commons.codec.digest.DigestUtils import org.slf4j.LoggerFactory import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.PathVariable -import org.springframework.web.bind.annotation.PostMapping -import org.springframework.web.bind.annotation.RequestBody -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* import reactor.core.publisher.Sinks -import java.util.UUID +import java.util.* @RestController class MtbFileController( @@ -129,7 +126,7 @@ class MtbFileController( } } - @PostMapping(path = ["/mtbfile/{patientId}"]) + @DeleteMapping(path = ["/mtbfile/{patientId}"]) fun deleteData(@PathVariable patientId: String): ResponseEntity { val requestId = UUID.randomUUID().toString()