/**
 * An abstract State that the Controller can be in
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public abstract class State
{
    /**
     * Process a close transition
     */
    public void close()
    {
    }


    /**
     * Process a combinationEntered transition
     */
    public void combinationEntered()
    {
    }
    

    /**
     * Enter this State
     *
     * Specifically, construct an instance if necessary and perform any
     * necessary operations
     *
     * @param controller   The Controller to perform operations on
     * @return             The (singleton) instance of this State
     */
    public static State enter(Controller controller)
    {
       return null;
    }
    


    /**
     * Process an errorEntered transition
     */
    public void errorEntered()
    {
    }
    

    /**
     * Process a lock transition
     */
    public void lock()
    {
    }


    /**
     * Process a open transition
     */
    public void open()
    {
    }


    
    /**
     * Process a startUnlock transition
     */
    public void startUnlock()
    {
    }
    


}
