+
+ private final List<String> messages = new LinkedList<>();
+
+
+ public Transfer setState(State state)
+ {
+ if (state == null)
+ throw new IllegalArgumentException("State must not be null!");
+
+ switch (state)
+ {
+ case CREATED:
+ if (this.state != null)
+ throw new IllegalArgumentException("Illegal state-change " + this.state + " -> CREATED");
+ break;
+
+ case CHECKED:
+ case INVALID:
+ if (this.state != CREATED)
+ throw new IllegalArgumentException("Illegal state-change " + this.state + " -> " + state);
+ break;
+
+ default:
+ throw new IllegalArgumentException("State-change not yet considered:" + this.state + " -> " + state);
+
+ }
+
+ this.state = state;
+ return this;
+ }
+
+ public Transfer addMessage(String message)
+ {
+ messages.add(message);
+ return this;
+ }