X-Git-Url: https://juplo.de/gitweb/?p=demos%2Fkafka%2Fdemos-kafka-payment-system-transfer;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fdomain%2FTransferService.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fdomain%2FTransferService.java;h=0000000000000000000000000000000000000000;hp=ed1a98eddd9ee8423ddadc0c12b0a93f252e908e;hb=0d1ffab6d4ff4a1d401a4b0b16bc30e0746a9441;hpb=951dcf0533551cccf48062c12e61192035a27a9a diff --git a/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java b/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java deleted file mode 100644 index ed1a98e..0000000 --- a/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java +++ /dev/null @@ -1,91 +0,0 @@ -package de.juplo.kafka.payment.transfer.domain; - - -import de.juplo.kafka.payment.transfer.ports.*; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -import static de.juplo.kafka.payment.transfer.domain.Transfer.State.CHECKED; -import static de.juplo.kafka.payment.transfer.domain.Transfer.State.CREATED; - - -@Slf4j -@RequiredArgsConstructor -public class TransferService implements CreateTransferUseCase, HandleStateChangeUseCase, GetTransferUseCase -{ - private final TransferRepository repository; - private final MessagingService messagingService; - - @Override - public void create(Long id, Long payer, Long payee, Integer amount) - { - repository - .get(id) - .ifPresentOrElse( - stored -> log.info( - "transfer already exisits: {}, ignoring: id={}, payer={}, payee={}, amount={}", - stored, - payer, - payee, - amount), - () -> - { - Transfer transfer = - Transfer - .builder() - .id(id) - .payer(payer) - .payee(payee) - .amount(amount) - .build(); - - log.info("creating transfer: {}", transfer); - repository.store(transfer); - messagingService.send(transfer.getId(), CREATED); - }); - } - - @Override - public void handleStateChange(Long id, Transfer.State state) - { - get(id) - .ifPresentOrElse( - transfer -> - { - switch (state) - { - case CREATED: - - transfer.setState(CREATED); - repository.store(transfer); - check(transfer); - break; - - case CHECKED: - - transfer.setState(CHECKED); - repository.store(transfer); - // TODO: What's next...? - break; - - default: - - log.warn("TODO: handle {} state {}", state.foreign ? "foreign" : "domain", state); - } - }, - () -> log.error("unknown transfer: {}", id)); - } - - private void check(Transfer transfer) - { - // TODO: Do some time consuming checks... - messagingService.send(transfer.getId(), CHECKED); - } - - public Optional get(Long id) - { - return repository.get(id); - } -}