package com.hubspot.baragon.models;
import java.util.EnumMap;
public class InternalStatesMap {
private static EnumMap<InternalRequestStates, AgentRequestType> stateToRequestTypeMap = new EnumMap<>(InternalRequestStates.class);
static {
stateToRequestTypeMap.put(InternalRequestStates.PENDING, AgentRequestType.APPLY);
stateToRequestTypeMap.put(InternalRequestStates.INVALID_REQUEST_NOOP, AgentRequestType.APPLY);
stateToRequestTypeMap.put(InternalRequestStates.SEND_APPLY_REQUESTS, AgentRequestType.APPLY);
stateToRequestTypeMap.put(InternalRequestStates.CHECK_APPLY_RESPONSES, AgentRequestType.APPLY);
stateToRequestTypeMap.put(InternalRequestStates.COMPLETED, AgentRequestType.APPLY);
stateToRequestTypeMap.put(InternalRequestStates.FAILED_SEND_REVERT_REQUESTS, AgentRequestType.REVERT);
stateToRequestTypeMap.put(InternalRequestStates.FAILED_CHECK_REVERT_RESPONSES, AgentRequestType.REVERT);
stateToRequestTypeMap.put(InternalRequestStates.FAILED_REVERT_FAILED, AgentRequestType.REVERT);
stateToRequestTypeMap.put(InternalRequestStates.CANCELLED_SEND_REVERT_REQUESTS, AgentRequestType.CANCEL);
stateToRequestTypeMap.put(InternalRequestStates.CANCELLED_CHECK_REVERT_RESPONSES, AgentRequestType.CANCEL);
stateToRequestTypeMap.put(InternalRequestStates.CANCELLED, AgentRequestType.CANCEL);
stateToRequestTypeMap.put(InternalRequestStates.FAILED_CANCEL_FAILED, AgentRequestType.CANCEL);
}
private static EnumMap<InternalRequestStates, BaragonRequestState> stateToRequestStateMap = new EnumMap<>(InternalRequestStates.class);
static {
stateToRequestStateMap.put(InternalRequestStates.PENDING, BaragonRequestState.WAITING);
stateToRequestStateMap.put(InternalRequestStates.INVALID_REQUEST_NOOP, BaragonRequestState.INVALID_REQUEST_NOOP);
stateToRequestStateMap.put(InternalRequestStates.SEND_APPLY_REQUESTS, BaragonRequestState.WAITING);
stateToRequestStateMap.put(InternalRequestStates.CHECK_APPLY_RESPONSES, BaragonRequestState.WAITING);
stateToRequestStateMap.put(InternalRequestStates.COMPLETED, BaragonRequestState.SUCCESS);
stateToRequestStateMap.put(InternalRequestStates.FAILED_SEND_REVERT_REQUESTS, BaragonRequestState.WAITING);
stateToRequestStateMap.put(InternalRequestStates.FAILED_REVERTED, BaragonRequestState.FAILED);
stateToRequestStateMap.put(InternalRequestStates.FAILED_CHECK_REVERT_RESPONSES, BaragonRequestState.WAITING);
stateToRequestStateMap.put(InternalRequestStates.FAILED_REVERT_FAILED, BaragonRequestState.FAILED);
stateToRequestStateMap.put(InternalRequestStates.CANCELLED_SEND_REVERT_REQUESTS, BaragonRequestState.CANCELING);
stateToRequestStateMap.put(InternalRequestStates.CANCELLED_CHECK_REVERT_RESPONSES, BaragonRequestState.CANCELING);
stateToRequestStateMap.put(InternalRequestStates.CANCELLED, BaragonRequestState.CANCELED);
stateToRequestStateMap.put(InternalRequestStates.FAILED_CANCEL_FAILED, BaragonRequestState.FAILED);
}
private static EnumMap<AgentRequestType, EnumMap<AgentRequestsStatus, InternalRequestStates>> typeToRequestStateMap = new EnumMap<>(AgentRequestType.class);
static {
EnumMap<AgentRequestsStatus, InternalRequestStates> applyMap = new EnumMap<>(AgentRequestsStatus.class);
applyMap.put(AgentRequestsStatus.WAITING, InternalRequestStates.CHECK_APPLY_RESPONSES);
applyMap.put(AgentRequestsStatus.FAILURE, InternalRequestStates.FAILED_SEND_REVERT_REQUESTS);
applyMap.put(AgentRequestsStatus.RETRY, InternalRequestStates.SEND_APPLY_REQUESTS);
applyMap.put(AgentRequestsStatus.SUCCESS, InternalRequestStates.COMPLETED);
typeToRequestStateMap.put(AgentRequestType.APPLY, applyMap);
EnumMap<AgentRequestsStatus, InternalRequestStates> revertMap = new EnumMap<>(AgentRequestsStatus.class);
revertMap.put(AgentRequestsStatus.WAITING, InternalRequestStates.FAILED_CHECK_REVERT_RESPONSES);
revertMap.put(AgentRequestsStatus.FAILURE, InternalRequestStates.FAILED_REVERT_FAILED);
revertMap.put(AgentRequestsStatus.RETRY, InternalRequestStates.FAILED_SEND_REVERT_REQUESTS);
revertMap.put(AgentRequestsStatus.SUCCESS, InternalRequestStates.FAILED_REVERTED);;
typeToRequestStateMap.put(AgentRequestType.REVERT, revertMap);
EnumMap<AgentRequestsStatus, InternalRequestStates> cancelMap = new EnumMap<>(AgentRequestsStatus.class);
cancelMap.put(AgentRequestsStatus.WAITING, InternalRequestStates.CANCELLED_CHECK_REVERT_RESPONSES);
cancelMap.put(AgentRequestsStatus.FAILURE, InternalRequestStates.FAILED_CANCEL_FAILED);
cancelMap.put(AgentRequestsStatus.RETRY, InternalRequestStates.CANCELLED_SEND_REVERT_REQUESTS);
cancelMap.put(AgentRequestsStatus.SUCCESS, InternalRequestStates.CANCELLED);
typeToRequestStateMap.put(AgentRequestType.CANCEL, cancelMap);
}
public static InternalRequestStates getWaitingState(InternalRequestStates requestState) {
return typeToRequestStateMap.get(stateToRequestTypeMap.get(requestState)).get(AgentRequestsStatus.WAITING);
}
public static InternalRequestStates getFailureState(InternalRequestStates requestState) {
return typeToRequestStateMap.get(stateToRequestTypeMap.get(requestState)).get(AgentRequestsStatus.FAILURE);
}
public static InternalRequestStates getRetryState(InternalRequestStates requestState) {
return typeToRequestStateMap.get(stateToRequestTypeMap.get(requestState)).get(AgentRequestsStatus.RETRY);
}
public static InternalRequestStates getSuccessState(InternalRequestStates requestState) {
return typeToRequestStateMap.get(stateToRequestTypeMap.get(requestState)).get(AgentRequestsStatus.SUCCESS);
}
public static AgentRequestType getRequestType(InternalRequestStates requestState) {
return stateToRequestTypeMap.get(requestState);
}
public static BaragonRequestState getRequestState(InternalRequestStates requestState) {
return stateToRequestStateMap.get(requestState);
}
public static boolean isCancelable(InternalRequestStates requestState) {
return stateToRequestStateMap.get(requestState) == BaragonRequestState.WAITING;
}
public static boolean isRemovable(InternalRequestStates requestState) {
BaragonRequestState state = stateToRequestStateMap.get(requestState);
return state == BaragonRequestState.SUCCESS || state == BaragonRequestState.FAILED || state == BaragonRequestState.CANCELED || state == BaragonRequestState.INVALID_REQUEST_NOOP;
}
}