| henplus.Command
All known Subclasses: henplus.AbstractCommand,
Command | public interface Command (Code) | | Interface to be implemented for user level commands.
The CommandDispatcher
and the HelpCommand operate on this interface. This interface needs
to be implemented by your own Commands or Plugins that should be
supported by HenPlus. If the documenation given here is not enough
(though I hope it is), just read some of the implementations given
in henplus.commands.
If you are writing Plugins, consider extending the
AbstractCommand as it provides a default implementation
and you are immune to NoSuchMethodErrors if this interface changes
but not yet your plugin...
version: $Revision: 1.10 $ author: Henner Zeller |
Method Summary | |
Iterator | complete(CommandDispatcher disp, String partialCommand, String lastWord) Returns a list of strings that are possible at this stage. | int | execute(SQLSession session, String command, String parameters) execute the command given. | String[] | getCommandList() returns the prefices of all command-strings this command can handle.
The special prefix is the empty string that matches anything that is
not handled by all other commands. | String | getLongDescription(String cmd) returns a longer string describing this action. | String | getShortDescription() return a short string describing the purpose of the commands
handled by this Command-implementation. | String | getSynopsis(String cmd) retuns a synopsis-string. | public void | handleCommandline(CommandLine line) After parsing the parameters, this method is called.
there can be some default options left. | boolean | isComplete(String command) returns, whether the command is complete.
This method is called, whenever the input encounters a newline or
a semicolon to decide if this separator is to separate different
commands or if it is part of the command itself.
The delimiter (newline or semicolon) is contained (at the end)
in the String passed to this method. | boolean | participateInCommandCompletion() returns 'false', if the commands supported by this Commands should
not be part of the toplevel command completion. | public void | registerOptions(Options r) This method is called before parsing the commandline. | boolean | requiresValidSession(String cmd) returns true, if this command requires a valid SQLSession, i.e. | public void | setOptions(Options options) Options are set, after the commandline has been parsed. | void | shutdown() shutdown this command. |
SYNTAX_ERROR | final public static int SYNTAX_ERROR(Code) | | constant returned by the
Command.execute(SQLSession,String,String) if the command could not be executed because of an syntax error.
In that case, the CommandDispatcher will display the synopsis of
that command.
|
complete | Iterator complete(CommandDispatcher disp, String partialCommand, String lastWord)(Code) | | Returns a list of strings that are possible at this stage. Used
for the readline-completion in interactive mode. Based on the
partial command and the lastWord you have to determine the words
that are available at this stage. Return 'null', if you don't know
a possible completion.
Parameters: disp - the CommandDispatcher - you might want to accessother values through it. Parameters: partialCommand - The command typed so far Parameters: lastWord - the last word returned by readline. |
execute | int execute(SQLSession session, String command, String parameters)(Code) | | execute the command given. The command is given completely without
the final delimiter (which would be newline or semicolon). Before
this method is called, the CommandDispatcher checks with the
Command.isComplete(String) method, if this command is complete.
Parameters: session - the SQLsession this command is executed from. Parameters: command - the command as string. Parameters: parameters - the rest parameters following the command. one of SUCCESS, SYNTAX_ERROR, EXEC_FAILED to indicatethe exit status of this command. On SYNTAX_ERROR, theCommandDispatcher displays a synopsis if available. |
getCommandList | String[] getCommandList()(Code) | | returns the prefices of all command-strings this command can handle.
The special prefix is the empty string that matches anything that is
not handled by all other commands. It is used in the SQLCommand.
|
getLongDescription | String getLongDescription(String cmd)(Code) | | returns a longer string describing this action. This should return
a String describing details of the given command. This String should
start with a TAB-character in each new line (the first line is a
new line). The last line should not end with newline.
Parameters: cmd - The command the long description is asked for. Thisis one of the possible commands returned by Command.getCommandList(). |
getShortDescription | String getShortDescription()(Code) | | return a short string describing the purpose of the commands
handled by this Command-implementation. This is the string listed
in the bare 'help' overview (like
'describe a database object' )
Should contain no newline, no leading spaces.
|
getSynopsis | String getSynopsis(String cmd)(Code) | | retuns a synopsis-string. The synopsis string returned should follow
the following conventions:
- expected parameters are described with angle brackets like in
export-xml <table> <filename>
- optional parameters are described with square brackets like in
help [command]
Should contain no newline, no leading spaces.
This synopsis is printed in the detailed help of a command or if the
execute()-method returned a SYNTAX_ERROR.
Parameters: cmd - the command the synopsis is for. This is one of the possiblecommands returned by Command.getCommandList(). |
handleCommandline | public void handleCommandline(CommandLine line)(Code) | | After parsing the parameters, this method is called.
there can be some default options left.
These are set to the commands through this method. This is only
for compatibility with the old commandline options, please use
named options only!
Parameters: line - TODO |
isComplete | boolean isComplete(String command)(Code) | | returns, whether the command is complete.
This method is called, whenever the input encounters a newline or
a semicolon to decide if this separator is to separate different
commands or if it is part of the command itself.
The delimiter (newline or semicolon) is contained (at the end)
in the String passed to this method. This
method returns false , if the delimiter is part of the
command and will not be regarded as delimiter between commands -- the
reading part of the command dispatcher will go on reading characters
and not execute the command.
This method will return true for most simple commands like
'help'. For commands that have a more complicated syntax, this
might not be true.
- 'select * from foobar' is not complete after a return, since we can
expect a where clause. If it has a semicolon at the end, we
know, that is is complete. So newline is not a delimiter
while ';' is (return command.endsWith(";")).
- definitions of stored procedures are even more complicated: it
depends on the syntax whether a semicolon is part of the
command or can be regarded as delimiter. Here, neither ';' nor
newline can be regarded as delimiter per-se. Only the Command
implementation can decide upon this. In Oracle, a single '/' on
one line is used to denote this command-complete.
Note, this method should only apply a very lazy syntax check so it does
not get confused and uses too much cycles unecessarily..
Parameters: command - the partial command read so far given to decide bythe command whether it is complete or not. |
participateInCommandCompletion | boolean participateInCommandCompletion()(Code) | | returns 'false', if the commands supported by this Commands should
not be part of the toplevel command completion. So if the user
presses TAB on an empty string to get the full list of possible
commands, this command should not show up.
In HenPlus, this returns 'false' for the SQL-commands
('select', 'update', 'drop' ..), since this would
clobber the toplevel list of available commands.
If unsure, return 'true'.
|
registerOptions | public void registerOptions(Options r)(Code) | | This method is called before parsing the commandline. You can register command-specific options here.
Parameters: r - |
requiresValidSession | boolean requiresValidSession(String cmd)(Code) | | returns true, if this command requires a valid SQLSession, i.e. if the
Command.execute(SQLSession,String,String) method makes use of the
session (e.g. to get some Database connection) or not. Return 'true'
if unsure (you should be sure..). This is to thwart attempts to
execute a command without session.
Parameters: cmd - the subcommand this is requested for; one of thecommands returned by Command.getCommandList(). |
setOptions | public void setOptions(Options options)(Code) | | Options are set, after the commandline has been parsed.
Parameters: options - |
shutdown | void shutdown()(Code) | | shutdown this command. This is called on exit of the CommandDispatcher
and allows you to do some cleanup (close connections, flush files..)
|
|
|