package org.zstack.storage.primary; import org.zstack.core.Platform; import org.zstack.core.statemachine.StateMachine; import org.zstack.header.storage.primary.PrimaryStorage; import org.zstack.header.storage.primary.PrimaryStorageState; import org.zstack.header.storage.primary.PrimaryStorageStateEvent; public abstract class AbstractPrimaryStorage implements PrimaryStorage { protected final static StateMachine<PrimaryStorageState, PrimaryStorageStateEvent> states; static { states = Platform.<PrimaryStorageState, PrimaryStorageStateEvent>createStateMachine(); states.addTranscation(PrimaryStorageState.Enabled, PrimaryStorageStateEvent.disable, PrimaryStorageState.Disabled); states.addTranscation(PrimaryStorageState.Enabled, PrimaryStorageStateEvent.enable, PrimaryStorageState.Enabled); states.addTranscation(PrimaryStorageState.Enabled, PrimaryStorageStateEvent.maintain, PrimaryStorageState.Maintenance); states.addTranscation(PrimaryStorageState.Enabled, PrimaryStorageStateEvent.deleting, PrimaryStorageState.Deleting); states.addTranscation(PrimaryStorageState.Disabled, PrimaryStorageStateEvent.disable, PrimaryStorageState.Disabled); states.addTranscation(PrimaryStorageState.Disabled, PrimaryStorageStateEvent.enable, PrimaryStorageState.Enabled); states.addTranscation(PrimaryStorageState.Disabled, PrimaryStorageStateEvent.maintain, PrimaryStorageState.Maintenance); states.addTranscation(PrimaryStorageState.Disabled, PrimaryStorageStateEvent.deleting, PrimaryStorageState.Deleting); states.addTranscation(PrimaryStorageState.Maintenance, PrimaryStorageStateEvent.enable, PrimaryStorageState.Enabled); states.addTranscation(PrimaryStorageState.Maintenance, PrimaryStorageStateEvent.disable, PrimaryStorageState.Disabled); states.addTranscation(PrimaryStorageState.Maintenance, PrimaryStorageStateEvent.maintain, PrimaryStorageState.Maintenance); states.addTranscation(PrimaryStorageState.Maintenance, PrimaryStorageStateEvent.deleting, PrimaryStorageState.Deleting); states.addTranscation(PrimaryStorageState.Deleting, PrimaryStorageStateEvent.enable, PrimaryStorageState.Enabled); states.addTranscation(PrimaryStorageState.Deleting, PrimaryStorageStateEvent.disable, PrimaryStorageState.Disabled); states.addTranscation(PrimaryStorageState.Deleting, PrimaryStorageStateEvent.maintain, PrimaryStorageState.Maintenance); states.addTranscation(PrimaryStorageState.Deleting, PrimaryStorageStateEvent.deleting, PrimaryStorageState.Deleting); } public static PrimaryStorageState getNextState(PrimaryStorageState curr, PrimaryStorageStateEvent evt) { return states.getNextState(curr, evt); } }