Class AbstractShutDownTask

java.lang.Object
jmri.implementation.AbstractShutDownTask
All Implemented Interfaces:
PropertyChangeListener, Runnable, Callable<Boolean>, EventListener, ShutDownTask
Direct Known Subclasses:
CbusEventTableShutdownTask, QuietShutDownTask, SwingShutDownTask, WarrantShutdownTask

public abstract class AbstractShutDownTask
extends Object
implements ShutDownTask
Abstract ShutDownTask implementation.

This implementation provides a "doRun" property with a protected getter and setter to allow subclasses to set the "doRun" property to true inside call() so that the property can be checked inside ShutDownTask.run() to determine if anything should be done during shut down.

  • Constructor Details

  • Method Details

    • isShutdownAllowed

      public boolean isShutdownAllowed()
      Ask if shut down is allowed.

      The shut down manager must call this method first on all the tasks before starting to execute the method execute() on the tasks.

      If this method returns false on any task, the shut down process must be aborted.

      Specified by:
      isShutdownAllowed in interface ShutDownTask
      Returns:
      true if it is OK to shut down, false to abort shut down.
    • call

      public Boolean call()
      Ask if shut down is allowed.

      The shut down manager calls this method first on all the tasks before starting to execute the method ShutDownTask.run() on the tasks.

      If this method returns false on any task, the shut down process must be aborted. This implementation merely sets the "doRun" property to true, and should be overridden for any real checking. Note that overriding implementations should call setDoRun(boolean) correctly.

      Specified by:
      call in interface Callable<Boolean>
      Specified by:
      call in interface ShutDownTask
      Returns:
      true if it is OK to shut down, false to abort shut down.
    • execute

      public final boolean execute()
      Take the necessary action.

      If the task is lengthy and can easily confirm that it should proceed (i.e., prompt the user to save, not save, or cancel shutting down), and spin itself off into a new thread, it should do so.

      Note if a task is parallel, this method should return after any tests that might cause the shutdown to be aborted.

      Specified by:
      execute in interface ShutDownTask
      Returns:
      true if the shutdown should continue, false to abort.
    • getName

      public String getName()
      Description copied from interface: ShutDownTask
      Name to be provided to the user when information about this task is presented.
      Specified by:
      getName in interface ShutDownTask
      Returns:
      the name
    • isParallel

      public boolean isParallel()
      Description copied from interface: ShutDownTask
      Advise ShutDownManagers if ShutDownTask.execute() may return before the task is complete.

      Note if a task is parallel, ShutDownTask.execute() should return after any tests that might cause the shutdown to be aborted.

      Specified by:
      isParallel in interface ShutDownTask
      Returns:
      true if the task is run within its own Thread
    • isComplete

      public boolean isComplete()
      Description copied from interface: ShutDownTask
      Advise ShutDownManagers that the task is complete.
      Specified by:
      isComplete in interface ShutDownTask
      Returns:
      true if the task is complete
    • propertyChange

      Note that overriding implementations should call this implementation to set the doRun property correctly.
      Specified by:
      propertyChange in interface PropertyChangeListener
    • isDoRun

      public boolean isDoRun()
      Check if action should be taken in ShutDownTask.run() method. This defaults to false, although the default implementation of call() sets this to true.
      Returns:
      true if action should be taken; false otherwise
    • setDoRun

      public void setDoRun​(boolean flag)
      Set if action should be taken in ShutDownTask.run() method. Overriding implementations of call() must call this to set isDoRun() to true.
      Parameters:
      flag - true if action should be taken; false otherwise