Package uk.ac.starlink.topcat

## Class Executor

- java.lang.Object
- - uk.ac.starlink.topcat.Executor

-     public abstract class Executor
      extends java.lang.Object

  Defines an object which can execute a system Process. This is basically a convenience wrapper for `Process` which takes care of the stream output and so on. It's not completely general purpose, it's designed for running little shell commands - if you try to run something which spews out a huge amount of output you could have trouble.
  Since:
    9 Jun 2005
  Author:
    Mark Taylor (Starlink)

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Executor()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static Executor` | `createExecutor​(java.lang.String line)` | Returns an executor which executes a single command line.
    `static Executor` | `createExecutor​(java.lang.String[] argv)` | Returns an executor which executes a command made of words.
    `int` | `executeSynchronously​(boolean isCapture)` | Calls `getProcess()` and attempts to execute it synchronously.
    `java.lang.String` | `getErr()` | Returns the standard error which resulted from running the process, if execution was done in capturing mode.
    `abstract java.lang.String` | `getLine()` | Returns a representation of the command line executed.
    `java.lang.String` | `getOut()` | Returns the standard output which resulted from running the process, if execution was done in capturing mode.
    `abstract java.lang.Process` | `getProcess()` | Returns a system process to be executed.
    `java.lang.String` | `toString()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Executor

          public Executor()

  - ### Method Detail

    - #### getProcess

          public abstract java.lang.Process getProcess()
                                                throws java.io.IOException

      Returns a system process to be executed.
      Returns:
        new process
      Throws:
        `java.io.IOException`

    - #### getLine

          public abstract java.lang.String getLine()

      Returns a representation of the command line executed.
      Returns:
        command line

    - #### getOut

          public java.lang.String getOut()

      Returns the standard output which resulted from running the process, if execution was done in capturing mode.
      Returns:
        stdout content

    - #### getErr

          public java.lang.String getErr()

      Returns the standard error which resulted from running the process, if execution was done in capturing mode.
      Returns:
        stderr content

    - #### executeSynchronously

          public int executeSynchronously​(boolean isCapture)
                                   throws java.io.IOException,
                                          java.lang.InterruptedException

      Calls `getProcess()` and attempts to execute it synchronously. Can be run only once on this object.

      If `isCapture` is set true, the `getOut()` and `getErr()` methods can be used after this call to get the results from stdout and stderr. Otherwise, the process output streams go to the JVM's stdout/stderr.

      Parameters:
        `isCapture` - true to capture output and return it as the outcome message, false to let it go to stdout
      Returns:
        exit status (0 is OK)
      Throws:
        `java.io.IOException`
        `java.lang.InterruptedException`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### createExecutor

          public static Executor createExecutor​(java.lang.String line)

      Returns an executor which executes a single command line.
      Parameters:
        `line` - shell command line
      Returns:
        executor

    - #### createExecutor

          public static Executor createExecutor​(java.lang.String[] argv)

      Returns an executor which executes a command made of words.
      Parameters:
        `argv` - argument vector
      Returns:
        executor