MVP for transfer service
[demos/kafka/demos-kafka-payment-system-transfer] / src / main / java / de / juplo / kafka / payment / transfer / adapter / TransferDTO.java
1 package de.juplo.kafka.payment.transfer.adapter;
2
3 import de.juplo.kafka.payment.transfer.domain.Transfer;
4 import lombok.Builder;
5 import lombok.Data;
6
7 import javax.validation.constraints.Min;
8 import javax.validation.constraints.NotNull;
9
10
11 /**
12  * Simple DTO used by the REST interface
13  */
14 @Data
15 @Builder
16 public class TransferDTO
17 {
18   @NotNull(message = "Cannot be null")
19   @Min(value = 1, message = "A valid transfer id must be a positive number")
20   private Long id;
21   @NotNull(message = "Cannot be null")
22   @Min(value = 1, message = "A valid bank account id must be a positive number")
23   private Long payer;
24   @NotNull(message = "Cannot be null")
25   @Min(value = 1, message = "A valid bank account id must be a positive number")
26   private Long payee;
27   @NotNull(message = "Cannot be null")
28   @Min(value = 1, message = "The amount of a transfer must be a positv value")
29   private Integer amount;
30
31   private Transfer.State state;
32
33
34   public Transfer toTransfer()
35   {
36     return
37         Transfer
38             .builder()
39             .id(id)
40             .payer(payer)
41             .payee(payee)
42             .amount(amount)
43             .build();
44   }
45
46
47   public static TransferDTO of(Transfer transfer)
48   {
49     return
50         TransferDTO
51             .builder()
52             .id(transfer.getId())
53             .payer(transfer.getPayer())
54             .payee(transfer.getPayee())
55             .amount(transfer.getAmount())
56             .state(transfer.getState())
57             .build();
58   }
59 }