| org.apache.cocoon.acting.AbstractComplementaryConfigurableAction org.apache.cocoon.acting.modular.DatabaseAction
All known Subclasses: org.apache.cocoon.acting.modular.DatabaseUpdateAction, org.apache.cocoon.acting.modular.DatabaseSelectAction, org.apache.cocoon.acting.modular.DatabaseAddAction, org.apache.cocoon.acting.modular.DatabaseQueryAction, org.apache.cocoon.acting.modular.DatabaseDeleteAction,
DatabaseAction | abstract public class DatabaseAction extends AbstractComplementaryConfigurableAction implements Disposable,ThreadSafe(Code) | | 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
org.apache.cocoon.util.JDBCTypeConversions 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-name | add 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) |
author: Christian Haul version: $Id: DatabaseAction.java 433543 2006-08-22 06:22:54Z crossley $ See Also: org.apache.cocoon.components.modules.input See Also: org.apache.cocoon.components.modules.output See Also: org.apache.cocoon.components.modules.database See Also: org.apache.cocoon.util.JDBCTypeConversions |
Inner Class :protected static class Column | |
Inner Class :protected static class CacheHelper | |
Inner Class :protected static class LookUpKey | |
Method Summary | |
public Map | act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) Add a record to the database. | public void | configure(Configuration conf) | public void | dispose() | protected void | fillModes(Configuration[] conf, boolean isKey, Map defaultModeNames, Map modeTypes, CacheHelper set) | protected Object[] | getColumnValue(Configuration tableConf, Column column, Map objectModel) | abstract Object[][] | getColumnValues(Configuration tableConf, CacheHelper queryData, Map objectModel) 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. | protected DataSourceComponent | getDataSource(Configuration conf, Parameters parameters) Get the Datasource we need. | protected Configuration | getMode(Configuration conf, String type) Choose a mode configuration based on its name.
Parameters: conf - Configuration (i.e. | protected String | getOutputName(Configuration tableConf, Configuration columnConf) | 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. | abstract protected CacheHelper | getQuery(Configuration table, Map modeTypes, Map defaultModeNames) Get the String representation of the PreparedStatement. | abstract protected boolean | honourAutoIncrement() determine whether autoincrement columns should be honoured by
this operation. | final protected 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, CacheHelper queryData, Object[][] columnValues, int rowIndex, Map results) 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. | protected int | processTable(Configuration table, Connection conn, Map objectModel, Map results, Map modeTypes) | 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. | public void | service(ServiceManager manager) Compose the Actions so that we can select our databases. | protected void | setColumn(PreparedStatement statement, int position, Configuration entry, Object value) 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) 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. | 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. |
DATABASE_MODULE_SELECTOR | final static String DATABASE_MODULE_SELECTOR(Code) | | |
INPUT_MODULE_SELECTOR | final static String INPUT_MODULE_SELECTOR(Code) | | |
OUTPUT_MODULE_SELECTOR | final static String OUTPUT_MODULE_SELECTOR(Code) | | |
dbselector | protected ServiceSelector dbselector(Code) | | |
defaultModeNames | protected Map defaultModeNames(Code) | | |
failOnEmpty | protected boolean failOnEmpty(Code) | | |
firstRow | protected int firstRow(Code) | | |
act | public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception(Code) | | Add a record to the database. This action assumes that
the file referenced by the "descriptor" parameter conforms
to the AbstractDatabaseAction specifications.
|
configure | public void configure(Configuration conf) throws ConfigurationException(Code) | | |
dispose | public void dispose()(Code) | | dispose
|
fillModes | protected void fillModes(Configuration[] conf, boolean isKey, Map defaultModeNames, Map modeTypes, CacheHelper set) throws ConfigurationException(Code) | | Setup parsed attribute configuration object
|
getColumnValue | protected Object[] getColumnValue(Configuration tableConf, Column column, Map objectModel) throws ConfigurationException, ServiceException(Code) | | |
getColumnValues | abstract Object[][] getColumnValues(Configuration tableConf, CacheHelper queryData, Map objectModel) throws ConfigurationException, ServiceException(Code) | | 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
|
getDataSource | protected DataSourceComponent getDataSource(Configuration conf, Parameters parameters) throws ServiceException(Code) | | Get the Datasource we need.
|
getMode | protected Configuration getMode(Configuration conf, String type) throws ConfigurationException(Code) | | Choose a mode configuration based on its name.
Parameters: conf - Configuration (i.e. a column's configuration) that might haveseveral children configurations named "mode". Parameters: type - desired type (i.e. every mode has a typeattribute), find the first mode that has a compatible type.Special mode "all" matches all queried types. configuration that has desired type or type "all" or null. |
getOutputName | protected String getOutputName(Configuration tableConf, Configuration columnConf)(Code) | | compose name for output a long the lines of "table.column"
|
getOutputName | protected String getOutputName(Configuration tableConf, Configuration columnConf, int rowIndex)(Code) | | 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"
|
getQuery | abstract protected CacheHelper getQuery(Configuration table, Map modeTypes, Map defaultModeNames) throws ConfigurationException, ServiceException(Code) | | 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
Parameters: table - the table's configuration object the insert query as a string |
honourAutoIncrement | abstract protected boolean honourAutoIncrement()(Code) | | 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
|
isLargeObject | final protected boolean isLargeObject(String type)(Code) | | Return whether a type is a Large Object (BLOB/CLOB).
|
processRow | abstract protected int processRow(Map objectModel, Connection conn, PreparedStatement statement, String outputMode, Configuration table, CacheHelper queryData, Object[][] columnValues, int rowIndex, Map results) throws SQLException, ConfigurationException, Exception(Code) | | 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
|
processTable | protected int processTable(Configuration table, Connection conn, Map objectModel, Map results, Map modeTypes) throws SQLException, ConfigurationException, Exception(Code) | | Inserts a row or a set of rows into the given table based on the
request parameters
Parameters: table - the table's configuration Parameters: conn - the database connection Parameters: objectModel - the objectModel |
selectMode | abstract protected String selectMode(boolean isAutoIncrement, Map modes)(Code) | | determine which mode to use as default mode
This method is intended to be overridden by classes that
implement other operations e.g. delete
|
service | public void service(ServiceManager manager) throws ServiceException(Code) | | Compose the Actions so that we can select our databases.
|
setColumn | protected void setColumn(PreparedStatement statement, int position, Configuration entry, Object value) throws Exception(Code) | | set a column in a statement using the appropriate JDBC setXXX method.
|
setColumn | protected void setColumn(Map objectModel, String outputMode, Map results, Configuration table, Configuration column, int rowIndex, Object value, PreparedStatement statement, int position) throws Exception(Code) | | 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.
|
setOutput | protected void setOutput(Map objectModel, String outputMode, Map results, Configuration table, Configuration column, int rowIndex, Object value)(Code) | | create a unique name using the getOutputName method and write
the value to the output module and the results map if present.
|
setOutputAttribute | protected void setOutputAttribute(Map objectModel, String outputMode, String key, Object value)(Code) | | Store a key/value pair in the output attributes. We prefix the key
with the name of this class to prevent potential name collisions.
|
Methods inherited from org.apache.cocoon.acting.AbstractComplementaryConfigurableAction | protected Configuration getConfiguration(String descriptor) throws ConfigurationException(Code)(Java Doc) protected Configuration getConfiguration(String descriptor, boolean reloadable) throws ConfigurationException(Code)(Java Doc) protected Configuration getConfiguration(String descriptor, SourceResolver resolver, boolean reloadable) throws ConfigurationException(Code)(Java Doc)
|
|
|