Class BaseWatchable

  • All Implemented Interfaces:
    Watchable, java.lang.Runnable
    Direct Known Subclasses:
    PDFParser, PDFRenderer

    public abstract class BaseWatchable
    extends java.lang.Object
    implements Watchable, java.lang.Runnable
    An abstract implementation of the watchable interface, that is extended by the parser and renderer to do their thing.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) class  BaseWatchable.Gate
      A class that lets us give it a target time or number of steps, and will tell us to stop after that much time or that many steps
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected BaseWatchable()
      Creates a new instance of BaseWatchable
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void cleanup()
      Clean up after a set of iterations.
      protected void execute​(boolean synchronous)
      Start executing this watchable
      int getStatus()
      Get the status of this watchable
      private java.lang.String getStatusString()  
      void go()
      Start this watchable and run in a new thread until it is finished or stopped.
      void go​(boolean synchronous)
      Start this watchable and run until it is finished or stopped.
      void go​(int steps)
      Start this watchable and run for the given number of steps or until finished or stopped.
      void go​(long millis)
      Start this watchable and run for the given amount of time, or until finished or stopped.
      boolean isExecutable()
      return true if this watchable is ready to be executed
      boolean isFinished()
      Return whether this watchable has finished.
      static boolean isSuppressSetErrorStackTrace()
      return true if we would be suppressing setError stack traces.
      protected abstract int iterate()
      Perform a single iteration of this watchable.
      void run()  
      protected void setError​(java.lang.Exception error)
      Set an error on this watchable
      protected void setStatus​(int status)
      Set the status of this watchable
      static void setSuppressSetErrorStackTrace​(boolean suppressTrace)
      set suppression of stack traces from setError.
      protected void setup()
      Prepare for a set of iterations.
      void stop()
      Stop this watchable.
      void waitForFinish()
      Wait for this watchable to finish
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • status

        private int status
        the current status, from the list in Watchable
      • statusLock

        private java.lang.Object statusLock
        a lock for status-related operations
      • parserLock

        private java.lang.Object parserLock
        a lock for parsing operations
      • SuppressSetErrorStackTrace

        private static boolean SuppressSetErrorStackTrace
        suppress local stack trace on setError.
      • thread

        private java.lang.Thread thread
        the thread we are running in
    • Constructor Detail

      • BaseWatchable

        protected BaseWatchable()
        Creates a new instance of BaseWatchable
    • Method Detail

      • iterate

        protected abstract int iterate()
                                throws java.lang.Exception
        Perform a single iteration of this watchable. This is the minimum granularity which the go() commands operate over.
        Returns:
        one of three values:
        • Watchable.RUNNING if there is still data to be processed
        • Watchable.NEEDS_DATA if there is no data to be processed but the execution is not yet complete
        • Watchable.COMPLETED if the execution is complete
        Throws:
        java.lang.Exception
      • setup

        protected void setup()
        Prepare for a set of iterations. Called before the first iterate() call in a sequence. Subclasses should extend this method if they need to do anything to setup.
      • cleanup

        protected void cleanup()
        Clean up after a set of iterations. Called after iteration has stopped due to completion, manual stopping, or error.
      • run

        public void run()
        Specified by:
        run in interface java.lang.Runnable
      • getStatus

        public int getStatus()
        Get the status of this watchable
        Specified by:
        getStatus in interface Watchable
        Returns:
        one of the well-known statuses
      • isFinished

        public boolean isFinished()
        Return whether this watchable has finished. A watchable is finished when its status is either COMPLETED, STOPPED or ERROR
      • isExecutable

        public boolean isExecutable()
        return true if this watchable is ready to be executed
      • stop

        public void stop()
        Stop this watchable. Stop will cause all processing to cease, and the watchable to be destroyed.
        Specified by:
        stop in interface Watchable
      • go

        public void go()
        Start this watchable and run in a new thread until it is finished or stopped. Note the watchable may be stopped if go() with a different time is called during execution.
        Specified by:
        go in interface Watchable
      • go

        public void go​(boolean synchronous)
        Start this watchable and run until it is finished or stopped. Note the watchable may be stopped if go() with a different time is called during execution.
        Parameters:
        synchronous - if true, run in this thread
      • go

        public void go​(int steps)
        Start this watchable and run for the given number of steps or until finished or stopped.
        Specified by:
        go in interface Watchable
        Parameters:
        steps - the number of steps to run for
      • go

        public void go​(long millis)
        Start this watchable and run for the given amount of time, or until finished or stopped.
        Specified by:
        go in interface Watchable
        Parameters:
        millis - the number of milliseconds to run for
      • waitForFinish

        public void waitForFinish()
        Wait for this watchable to finish
      • execute

        protected void execute​(boolean synchronous)
        Start executing this watchable
        Parameters:
        synchronous - if true, run in this thread
      • setStatus

        protected void setStatus​(int status)
        Set the status of this watchable
      • isSuppressSetErrorStackTrace

        public static boolean isSuppressSetErrorStackTrace()
        return true if we would be suppressing setError stack traces.
        Returns:
        boolean
      • setSuppressSetErrorStackTrace

        public static void setSuppressSetErrorStackTrace​(boolean suppressTrace)
        set suppression of stack traces from setError.
        Parameters:
        suppressTrace -
      • setError

        protected void setError​(java.lang.Exception error)
        Set an error on this watchable
      • getStatusString

        private java.lang.String getStatusString()