package net.varkhan.base.management.state.lifecycle;
import net.varkhan.base.management.state.State;
/**
* <b></b>.
* <p/>
*
* @author varkhan
* @date 5/31/11
* @time 12:22 AM
*/
public enum LifeState implements State<LifeLevel,LifeState> {
STOPPED {
@Override
public LifeState[] transition(LifeLevel level) {
return new LifeState[] { STARTING, RUNNING };
}
},
STARTING {
@Override
public LifeState[] transition(LifeLevel level) {
return new LifeState[] { RUNNING, STOPPED };
}
},
RUNNING {
@Override
public LifeState[] transition(LifeLevel level) {
return new LifeState[] { STOPPING, STOPPED, SUSPENDED };
}
},
SUSPENDED {
@Override
public LifeState[] transition(LifeLevel level) {
return new LifeState[] { RUNNING, STOPPING, STOPPED };
}
},
STOPPING {
@Override
public LifeState[] transition(LifeLevel level) {
return new LifeState[] { STOPPED };
}
},
;
@Override
public LifeState aggregate(LifeState state, LifeLevel level) {
return state;
}
}