org.drupal.project.async_command
Class AsyncCommand

java.lang.Object
  extended by org.drupal.project.async_command.AsyncCommand
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
PingMe, PyAsyncCommand

public abstract class AsyncCommand
extends java.lang.Object
implements java.lang.Runnable

Individual command to be executed. Each command is also registered with a DrupalApp. A command doesn't necessarily know a DrupalConnection. If needed, it can get from DrupalApp. The Record inner class needs to know a DrupalConnection in order to do database operations. Subclass can also write a initialize(...) function, which initialize parameters for the app and is used for CLI evaluation.


Nested Class Summary
static class AsyncCommand.Status
           
 
Field Summary
protected  java.lang.String commandMessage
          Command message.
protected  AsyncCommand.Status commandStatus
          The command status.
protected  GenericDrupalApp drupalApp
          The drupal application this command is associated with.
protected static java.util.logging.Logger logger
           
protected  CommandRecord record
          The database record this command is associated with.
 
Constructor Summary
protected AsyncCommand()
           
  AsyncCommand(CommandRecord record, GenericDrupalApp drupalApp)
          Constructor should prepare the command to run "run()".
 
Method Summary
protected  void afterExecute()
          Usually save results back to 'record'
protected  void beforeExecute()
          Usually initialize the command from 'record'
protected  void execute()
          Execute this command.
protected  GenericDrupalApp getDrupalApp()
           
protected  DrupalConnection getDrupalConnection()
           
 java.lang.String getIdentifier()
          Specifies the name this command is known as.
 CommandRecord getRecord()
           
 void run()
          Run this command.
protected  void setDrupalApp(GenericDrupalApp drupalApp)
           
protected  void setRecord(CommandRecord record)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static java.util.logging.Logger logger

drupalApp

protected GenericDrupalApp drupalApp
The drupal application this command is associated with. Should be "final", but since we have the default constructor, it can't be final. Use the default constructor in order to accommodate PyAsyncCommand


record

protected CommandRecord record
The database record this command is associated with. Should be "final", but since we have the default constructor, it can't be final. Use the default constructor in order to accommodate PyAsyncCommand


commandStatus

protected AsyncCommand.Status commandStatus
The command status. Will be set directly into CommandRecord.setStatus()


commandMessage

protected java.lang.String commandMessage
Command message. Will be set directly into CommandRecord.setMessage().

Constructor Detail

AsyncCommand

public AsyncCommand(CommandRecord record,
                    GenericDrupalApp drupalApp)
Constructor should prepare the command to run "run()". Set member fields by using data in "record"; don't use record directly in execution.

Parameters:
record -
drupalApp -

AsyncCommand

protected AsyncCommand()
Method Detail

getDrupalConnection

protected DrupalConnection getDrupalConnection()

getDrupalApp

protected GenericDrupalApp getDrupalApp()

setRecord

protected void setRecord(CommandRecord record)

getRecord

public CommandRecord getRecord()

setDrupalApp

protected void setDrupalApp(GenericDrupalApp drupalApp)

getIdentifier

public java.lang.String getIdentifier()
Specifies the name this command is known as. By default is the class name. You can override default value too. Deprecated because we don't want to use the default identifier. Instead, when register the command with an app, you can specify the identifier for this command on that specific

Returns:
The identifier of the command.

run

public void run()
Run this command. Attention: as of now, please override run() directly rather than using the execute() logic, which is unstable. Before running the command, all input information is in 'record'. After running the command, all output should also be in 'record'. This method is not responsible to save status results back to the database. It's only responsible to run the command and set the command record. This method is not responsible to handle exceptions. Exceptions should be handled by the enclosing DrupalApp.

Specified by:
run in interface java.lang.Runnable

beforeExecute

protected void beforeExecute()
Usually initialize the command from 'record'


afterExecute

protected void afterExecute()
Usually save results back to 'record'


execute

protected void execute()
Execute this command. All parameters should be set before executing this command, preferably in the beforeExecute(). After execution, the results could be handled in afterExecute(). Either override this one, or the "run()" method.