package me.bvn13.fsm; public class ConditionBuilder { private final FsmBuilder fsmBuilder; private final StateBuilder stateBuilder; private String from; private String to; private Condition condition; ConditionBuilder(FsmBuilder fsmBuilder) { this.fsmBuilder = fsmBuilder; this.stateBuilder = null; } ConditionBuilder(FsmBuilder fsmBuilder, StateBuilder stateBuilder, String from) { this.fsmBuilder = fsmBuilder; this.stateBuilder = stateBuilder; this.from = from; } public ConditionBuilder from(String from) { this.from = from; return this; } public ConditionBuilder to(String to) { this.to = to; return this; } public ConditionBuilder checking(Condition condition) { this.condition = condition; return this; } public FsmBuilder end() { fsmBuilder.addTransition(from, to, condition); return fsmBuilder; } public StateBuilder endTransition() { if (stateBuilder == null) { throw new IllegalStateException("Use '.end()' instead"); } end(); return stateBuilder; } }