82891b7444666ea50b8e5b6206e612618185ce34
[demos/kafka/demos-kafka-payment-system-transfer] / src / main / java / de / juplo / kafka / payment / transfer / domain / Transfer.java
1 package de.juplo.kafka.payment.transfer.domain;
2
3
4 import lombok.Builder;
5 import lombok.Data;
6 import lombok.EqualsAndHashCode;
7
8 import java.util.LinkedList;
9 import java.util.List;
10
11
12 @Data
13 @Builder
14 @EqualsAndHashCode(exclude = { "state", "messages" })
15 public class Transfer
16 {
17   public enum State
18   {
19     RECEIVED(false),
20     INVALID(false),
21     CHECKED(false),
22     APPROVED(true),
23     REJECTED(true);
24
25     public final boolean foreign;
26
27     State(boolean foreign)
28     {
29       this.foreign = foreign;
30     }
31   }
32
33   private final long id;
34   private final long payer;
35   private final long payee;
36   private final int amount;
37
38   private State state;
39
40   private final List<String> messages = new LinkedList<>();
41
42
43   public Transfer setState(State state)
44   {
45     this.state = state;
46     return this;
47   }
48
49   public Transfer addMessage(String message)
50   {
51     messages.add(message);
52     return this;
53   }
54 }