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.


Nested Class Summary
static class AsyncCommand.Status
           
 
Field Summary
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
 AsyncCommand evaluate(java.lang.String... params)
          Override this if you want to evaluate the command from CLI or other ad-hoc approach.
protected  DrupalConnection getDrupalConnection()
           
 java.lang.String getIdentifier()
          Specifies the name this command is known as.
abstract  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

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()

setRecord

protected void setRecord(CommandRecord record)

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 abstract void run()
Run this command. All parameters should be set before executing this command, preferably in the constructor. After execution, the field 'record' should have the final results. 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.

Specified by:
run in interface java.lang.Runnable

evaluate

public AsyncCommand evaluate(java.lang.String... params)
Override this if you want to evaluate the command from CLI or other ad-hoc approach.

Parameters:
params -
Returns:
The object of this AsyncCommand class. The caller is responsible to run/update the object.