net.eduvax.util
public class OSCmdRunner extends java.lang.Object implements java.lang.Runnable
Modifier and Type | Class and Description |
---|---|
static interface |
OSCmdRunner.Callback |
static class |
OSCmdRunner.PrintStreamCallback |
Modifier and Type | Field and Description |
---|---|
private OSCmdRunner.Callback |
_callback
command output stream handler
|
private java.lang.String[] |
_commandLine
Command line arguments
|
private java.io.File |
_directory
command working directory
|
private ErrorHandler |
_errHandler
error handler
|
private java.lang.Process |
_process
system process for command execution
|
private EThread |
_thread
thread used when desynchronized command run
|
private static java.lang.String |
ERR_INTERRUPT |
private static java.lang.String |
ERR_NOTALLOWED |
private static java.lang.String |
ERR_NOTFOUND |
private static java.lang.String |
ERR_OSTREAM |
Constructor and Description |
---|
OSCmdRunner(java.lang.String[] command)
create new OS command runner
|
Modifier and Type | Method and Description |
---|---|
static OSCmdRunner |
exec(java.lang.String cmd) |
static OSCmdRunner |
exec(java.lang.String[] cmd)
Runs OS command in separate thread.
|
protected java.lang.String[] |
getCommandLine() |
protected ErrorHandler |
getErrorHandler()
Get command error handler.
|
int |
getExitValue() |
protected java.lang.Process |
getProcess() |
private void |
handleError(java.lang.String errId,
Error.ELevel level,
java.lang.Exception ex)
handle error
|
void |
join()
Wait for command completion.
|
void |
join(long timeout)
Wait for command completion.
|
protected void |
processStarted() |
void |
run()
run command
|
void |
setCallback(OSCmdRunner.Callback c)
Change output stream callback.
|
void |
setErrorHandler(ErrorHandler handler)
Change error handler.
|
void |
setPrintStream(java.io.PrintStream o)
Change output stream.
|
void |
setWorkingDirectory(java.io.File dir)
Change command working directory
|
void |
setWorkingDirectory(java.lang.String dir)
Change command working directory
|
private EThread _thread
private java.lang.Process _process
private java.lang.String[] _commandLine
private OSCmdRunner.Callback _callback
private java.io.File _directory
private ErrorHandler _errHandler
private static final java.lang.String ERR_OSTREAM
private static final java.lang.String ERR_NOTFOUND
private static final java.lang.String ERR_NOTALLOWED
private static final java.lang.String ERR_INTERRUPT
public OSCmdRunner(java.lang.String[] command)
command
- command line (program name + args)public void setPrintStream(java.io.PrintStream o)
set the stream where running command outputs are rederected.
warning: this methode change the callback used to process command outputs.
o
- new output stream.public void setCallback(OSCmdRunner.Callback c)
c
- new callback.public void setWorkingDirectory(java.lang.String dir)
dir
- new working directorypublic void setWorkingDirectory(java.io.File dir)
dir
- new working directoryprotected void processStarted()
public void run()
run
in interface java.lang.Runnable
public static OSCmdRunner exec(java.lang.String[] cmd)
cmd
- command line (program name + args)public void join()
public void join(long timeout)
timeout
- max wait delaypublic static OSCmdRunner exec(java.lang.String cmd)
public int getExitValue()
protected java.lang.Process getProcess()
protected java.lang.String[] getCommandLine()
private void handleError(java.lang.String errId, Error.ELevel level, java.lang.Exception ex)
errId
- on of ERR_* constslevel
- one of Error.L_* constsex
- exception source of error (null if not any)protected ErrorHandler getErrorHandler()
public void setErrorHandler(ErrorHandler handler)
handler
- new error handler