Save This Page
Home » cocoon-2.1.11-src » org.apache » cocoon » acting » modular » [javadoc | source]
org.apache.cocoon.acting.modular
abstract public class: DatabaseAction [javadoc | source]
java.lang.Object
   org.apache.avalon.framework.logger.AbstractLogEnabled
      org.apache.cocoon.acting.AbstractAction
         org.apache.cocoon.acting.AbstractConfigurableAction
            org.apache.cocoon.acting.ConfigurableServiceableAction
               org.apache.cocoon.acting.AbstractComplementaryConfigurableAction
                  org.apache.cocoon.acting.modular.DatabaseAction

All Implemented Interfaces:
    org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.thread.ThreadSafe, org.apache.avalon.framework.service.Serviceable, org.apache.avalon.framework.configuration.Configurable, Action

Direct Known Subclasses:
    DatabaseDeleteAction, DatabaseAddAction, DatabaseSelectAction, DatabaseQueryAction, DatabaseUpdateAction

Abstract action for common function needed by database actions. The difference to the other Database*Actions is, that the actions in this package use additional components ("modules") for reading and writing parameters. In addition the descriptor format has changed to accomodate the new features.

This action is heavily based upon the original DatabaseAddActions.

Modes have to be configured in cocoon.xconf. Mode names from descriptor.xml file are looked up in the component service. Default mode names can only be set during action setup.

The number of affected rows is returned to the sitemap with the "row-count" parameter if at least one row was affected.

All known column types can be found in JDBCTypeConversions .

Configuration options (setup):
input default mode name for reading values (request-param)
autoincrement default mode name for obtaining values from autoincrement columns (auto)
append-row append row number in square brackets to column name for output (yes)
append-table-nameadd table name to column name for both in- and output (yes)
first-row row index of first row (0)
path-separator string to separate table name from column name (.)
Configuration options (setup and per invocation):
throw-exception throw an exception when an error occurs (default: false)
descriptor file containing database description
table-set table-set name to work with
output mode name for writing values (request-attr)
reloadable dynamically reload descriptor file if change is detected
use-transactions defaults to yes
connection configured datasource connection to use (overrides value from descriptor file)
fail-on-empty (boolean) fail is statement affected zero rows (true)
Nested Class Summary:
protected static class  DatabaseAction.Column  Structure that takes all processed data for one column. 
protected static class  DatabaseAction.CacheHelper  Structure that takes all processed data for a table depending on current default modes 
protected static class  DatabaseAction.LookUpKey  Structure that takes up both current mode types for database operations and table configuration data. Used to access parsed configuration data. 
Field Summary
static final  Integer MODE_AUTOINCR     
static final  Integer MODE_OTHERS     
static final  Integer MODE_OUTPUT     
static final  String ATTRIBUTE_KEY     
static final  String inputHint     
static final  String outputHint     
static final  String databaseHint     
static final  String INPUT_MODULE_SELECTOR     
static final  String OUTPUT_MODULE_SELECTOR     
static final  String DATABASE_MODULE_SELECTOR     
protected  ServiceSelector dbselector     
protected  Map defaultModeNames     
protected final  HashMap cachedQueryData     
protected  String pathSeparator     
protected  int firstRow     
protected  boolean failOnEmpty     
Fields inherited from org.apache.cocoon.acting.ConfigurableServiceableAction:
manager
Fields inherited from org.apache.cocoon.acting.AbstractConfigurableAction:
settings
Fields inherited from org.apache.cocoon.acting.AbstractAction:
EMPTY_MAP
Method from org.apache.cocoon.acting.modular.DatabaseAction Summary:
act,   configure,   dispose,   fillModes,   getColumnValue,   getColumnValues,   getDataSource,   getMode,   getOutputName,   getOutputName,   getQuery,   honourAutoIncrement,   isLargeObject,   processRow,   processTable,   selectMode,   service,   setColumn,   setColumn,   setOutput,   setOutputAttribute
Methods from org.apache.cocoon.acting.AbstractComplementaryConfigurableAction:
getConfiguration,   getConfiguration,   getConfiguration
Methods from org.apache.cocoon.acting.ConfigurableServiceableAction:
service
Methods from org.apache.cocoon.acting.AbstractConfigurableAction:
configure
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.cocoon.acting.modular.DatabaseAction Detail:
 public Map act(Redirector redirector,
    SourceResolver resolver,
    Map objectModel,
    String source,
    Parameters param) throws Exception 
    Add a record to the database. This action assumes that the file referenced by the "descriptor" parameter conforms to the AbstractDatabaseAction specifications.
 public  void configure(Configuration conf) throws ConfigurationException 
 public  void dispose() 
    dispose
 protected  void fillModes(Configuration[] conf,
    boolean isKey,
    Map defaultModeNames,
    Map modeTypes,
    DatabaseAction.CacheHelper set) throws ConfigurationException 
    Setup parsed attribute configuration object
 protected Object[] getColumnValue(Configuration tableConf,
    DatabaseAction.Column column,
    Map objectModel) throws ConfigurationException, ServiceException 
 abstract Object[][] getColumnValues(Configuration tableConf,
    DatabaseAction.CacheHelper queryData,
    Map objectModel) throws ConfigurationException, ServiceException
    Fetch all values for all columns that are needed to do the database operation. This method is intended to be overridden by classes that implement other operations e.g. delete
 protected DataSourceComponent getDataSource(Configuration conf,
    Parameters parameters) throws ServiceException 
    Get the Datasource we need.
 protected Configuration getMode(Configuration conf,
    String type) throws ConfigurationException 
    Choose a mode configuration based on its name.
 protected String getOutputName(Configuration tableConf,
    Configuration columnConf) 
    compose name for output a long the lines of "table.column"
 protected String getOutputName(Configuration tableConf,
    Configuration columnConf,
    int rowIndex) 
    compose name for output a long the lines of "table.column[row]" or "table.column" if rowIndex is -1. If the section of the sitemap corresponding to the action contains false the name for output is "column[row]" If the section of the sitemap corresponding to the action contains false the name for output is "column"
 abstract protected DatabaseAction.CacheHelper getQuery(Configuration table,
    Map modeTypes,
    Map defaultModeNames) throws ConfigurationException, ServiceException
    Get the String representation of the PreparedStatement. This is mapped to the Configuration object itself, so if it doesn't exist, it will be created. This method is intended to be overridden by classes that implement other operations e.g. delete
 abstract protected boolean honourAutoIncrement()
    determine whether autoincrement columns should be honoured by this operation. This is usually snsible only for INSERTs. This method is intended to be overridden by classes that implement other operations e.g. delete
 protected final boolean isLargeObject(String type) 
    Return whether a type is a Large Object (BLOB/CLOB).
 abstract protected int processRow(Map objectModel,
    Connection conn,
    PreparedStatement statement,
    String outputMode,
    Configuration table,
    DatabaseAction.CacheHelper queryData,
    Object[][] columnValues,
    int rowIndex,
    Map results) throws Exception, SQLException, ConfigurationException
    set all necessary ?s and execute the query return number of rows processed This method is intended to be overridden by classes that implement other operations e.g. delete
 protected int processTable(Configuration table,
    Connection conn,
    Map objectModel,
    Map results,
    Map modeTypes) throws Exception, SQLException, ConfigurationException 
    Inserts a row or a set of rows into the given table based on the request parameters
 abstract protected String selectMode(boolean isAutoIncrement,
    Map modes)
    determine which mode to use as default mode This method is intended to be overridden by classes that implement other operations e.g. delete
 public  void service(ServiceManager manager) throws ServiceException 
    Compose the Actions so that we can select our databases.
 protected  void setColumn(PreparedStatement statement,
    int position,
    Configuration entry,
    Object value) throws Exception 
    set a column in a statement using the appropriate JDBC setXXX method.
 protected  void setColumn(Map objectModel,
    String outputMode,
    Map results,
    Configuration table,
    Configuration column,
    int rowIndex,
    Object value,
    PreparedStatement statement,
    int position) throws Exception 
    set a column in a statement using the appropriate JDBC setXXX method and propagate the value to the output module and results map if present. Effectively combines calls to setColumn and setOutput.
 protected  void setOutput(Map objectModel,
    String outputMode,
    Map results,
    Configuration table,
    Configuration column,
    int rowIndex,
    Object value) 
    create a unique name using the getOutputName method and write the value to the output module and the results map if present.
 protected  void setOutputAttribute(Map objectModel,
    String outputMode,
    String key,
    Object value) 
    Store a key/value pair in the output attributes. We prefix the key with the name of this class to prevent potential name collisions.