package org.squirrelframework.foundation.fsm.atm;
import org.squirrelframework.foundation.fsm.annotation.ContextInsensitive;
import org.squirrelframework.foundation.fsm.atm.ATMStateMachine.ATMState;
import org.squirrelframework.foundation.fsm.impl.AbstractStateMachine;
@ContextInsensitive
public class ATMStateMachine extends AbstractStateMachine<ATMStateMachine, ATMState, String, Void> {
void postConstruct() {
System.out.println("ATMStateMachine PostConstruct Touched!");
}
public enum ATMState {
Idle, Loading, OutOfService, Disconnected, InService
}
private StringBuilder logger = new StringBuilder();
public void entryIdle(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("entryIdle");
}
public void exitIdle(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("exitIdle");
}
public void transitFromIdleToLoadingOnConnected(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromIdleToLoadingOnConnected");
}
public void entryLoading(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("entryLoading");
}
public void exitLoading(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("exitLoading");
}
public void transitFromLoadingToInServiceOnLoadSuccess(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromLoadingToInServiceOnLoadSuccess");
}
public void transitFromLoadingToOutOfServiceOnLoadFail(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromLoadingToOutOfServiceOnLoadFail");
}
public void transitFromLoadingToDisconnectedOnConnectionClosed(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromLoadingToDisconnectedOnConnectionClosed");
}
public void entryOutOfService(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("entryOutOfService");
}
public void transitFromOutOfServiceToDisconnectedOnConnectionLost(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromOutOfServiceToDisconnectedOnConnectionLost");
}
public void transitFromOutOfServiceToInServiceOnStartup(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromOutOfServiceToInServiceOnStartup");
}
public void exitOutOfService(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("exitOutOfService");
}
public void entryDisconnected(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("entryDisconnected");
}
public void transitFromDisconnectedToInServiceOnConnectionRestored(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromDisconnectedToInServiceOnConnectionRestored");
}
public void exitDisconnected(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("exitDisconnected");
}
public void entryInService(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("entryInService");
}
public void transitFromInServiceToOutOfServiceOnShutdown(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromInServiceToOutOfServiceOnShutdown");
}
public void transitFromInServiceToDisconnectedOnConnectionLost(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("transitFromInServiceToDisconnectedOnConnectionLost");
}
public void exitInService(ATMState from, ATMState to, String event) {
addOptionalDot();
logger.append("exitInService");
}
private void addOptionalDot() {
if (logger.length() > 0) {
logger.append('.');
}
}
public String consumeLog() {
final String result = logger.toString();
logger = new StringBuilder();
return result;
}
}