TransferRepository does not need any synchronization
[demos/kafka/demos-kafka-payment-system-transfer] / src / main / java / de / juplo / kafka / payment / transfer / domain / Transfer.java
index 5556a1b..82891b7 100644 (file)
@@ -5,19 +5,29 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.LinkedList;
+import java.util.List;
+
 
 @Data
 @Builder
-@EqualsAndHashCode(exclude = "state")
+@EqualsAndHashCode(exclude = { "state", "messages" })
 public class Transfer
 {
   public enum State
   {
-    SENT,
-    FAILED,
-    PENDING,
-    APPROVED,
-    REJECTED
+    RECEIVED(false),
+    INVALID(false),
+    CHECKED(false),
+    APPROVED(true),
+    REJECTED(true);
+
+    public final boolean foreign;
+
+    State(boolean foreign)
+    {
+      this.foreign = foreign;
+    }
   }
 
   private final long id;
@@ -26,4 +36,19 @@ public class Transfer
   private final int amount;
 
   private State state;
+
+  private final List<String> messages = new LinkedList<>();
+
+
+  public Transfer setState(State state)
+  {
+    this.state = state;
+    return this;
+  }
+
+  public Transfer addMessage(String message)
+  {
+    messages.add(message);
+    return this;
+  }
 }