|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
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
public abstract class DatabaseAction
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-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) |
org.apache.cocoon.components.modules.input
,
org.apache.cocoon.components.modules.output
,
org.apache.cocoon.components.modules.database
,
JDBCTypeConversions
Nested Class Summary | |
---|---|
protected static class |
DatabaseAction.CacheHelper
Structure that takes all processed data for a table depending on current default modes |
protected static class |
DatabaseAction.Column
Structure that takes all processed data for one column. |
protected static class |
DatabaseAction.LookUpKey
Structure that takes up both current mode types for database operations and table configuration data. |
Field Summary | |
---|---|
protected HashMap |
cachedQueryData
|
protected ServiceSelector |
dbselector
|
protected Map |
defaultModeNames
|
protected boolean |
failOnEmpty
|
protected int |
firstRow
|
protected String |
pathSeparator
|
Fields inherited from class org.apache.cocoon.acting.ConfigurableServiceableAction |
---|
manager |
Fields inherited from class org.apache.cocoon.acting.AbstractConfigurableAction |
---|
settings |
Fields inherited from class org.apache.cocoon.acting.AbstractAction |
---|
EMPTY_MAP |
Fields inherited from interface org.apache.cocoon.acting.Action |
---|
ROLE |
Constructor Summary | |
---|---|
DatabaseAction()
|
Method Summary | |
---|---|
Map |
act(Redirector redirector,
SourceResolver resolver,
Map objectModel,
String source,
Parameters param)
Add a record to the database. |
void |
configure(Configuration conf)
Configures the Action. |
void |
dispose()
dispose |
protected void |
fillModes(Configuration[] conf,
boolean isKey,
Map defaultModeNames,
Map modeTypes,
DatabaseAction.CacheHelper set)
Setup parsed attribute configuration object |
protected Object[] |
getColumnValue(Configuration tableConf,
DatabaseAction.Column column,
Map objectModel)
|
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. |
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. |
protected abstract DatabaseAction.CacheHelper |
getQuery(Configuration table,
Map modeTypes,
Map defaultModeNames)
Get the String representation of the PreparedStatement. |
protected abstract boolean |
honourAutoIncrement()
determine whether autoincrement columns should be honoured by this operation. |
protected boolean |
isLargeObject(String type)
Return whether a type is a Large Object (BLOB/CLOB). |
protected abstract int |
processRow(Map objectModel,
Connection conn,
PreparedStatement statement,
String outputMode,
Configuration table,
DatabaseAction.CacheHelper queryData,
Object[][] columnValues,
int rowIndex,
Map results)
set all necessary ? |
protected int |
processTable(Configuration table,
Connection conn,
Map objectModel,
Map results,
Map modeTypes)
Inserts a row or a set of rows into the given table based on the request parameters |
protected abstract 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 |
void |
service(ServiceManager manager)
Compose the Actions so that we can select our databases. |
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 |
setColumn(PreparedStatement statement,
int position,
Configuration entry,
Object value)
set a column in a statement using the appropriate JDBC setXXX method. |
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. |
Methods inherited from class org.apache.cocoon.acting.AbstractComplementaryConfigurableAction |
---|
getConfiguration, getConfiguration, getConfiguration |
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled |
---|
enableLogging, getLogger, setupLogger, setupLogger, setupLogger |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected ServiceSelector dbselector
protected Map defaultModeNames
protected final HashMap cachedQueryData
protected String pathSeparator
protected int firstRow
protected boolean failOnEmpty
Constructor Detail |
---|
public DatabaseAction()
Method Detail |
---|
public void configure(Configuration conf) throws ConfigurationException
AbstractConfigurableAction
Configuration
and stores them
them as key (configuration name) and value (configuration value)
in settings
.
configure
in interface Configurable
configure
in class AbstractConfigurableAction
ConfigurationException
public void service(ServiceManager manager) throws ServiceException
service
in interface Serviceable
service
in class ConfigurableServiceableAction
ServiceException
public void dispose()
dispose
in interface Disposable
protected DataSourceComponent getDataSource(Configuration conf, Parameters parameters) throws ServiceException
ServiceException
protected final boolean isLargeObject(String type)
protected void setOutputAttribute(Map objectModel, String outputMode, String key, Object value)
protected int processTable(Configuration table, Connection conn, Map objectModel, Map results, Map modeTypes) throws SQLException, ConfigurationException, Exception
table
- the table's configurationconn
- the database connectionobjectModel
- the objectModel
SQLException
ConfigurationException
Exception
protected Configuration getMode(Configuration conf, String type) throws ConfigurationException
conf
- Configuration (i.e. a column's configuration) that might have
several children configurations named "mode".type
- desired type (i.e. every mode has a type
attribute), find the first mode that has a compatible type.
Special mode "all" matches all queried types.
ConfigurationException
protected String getOutputName(Configuration tableConf, Configuration columnConf)
protected String getOutputName(Configuration tableConf, Configuration columnConf, int rowIndex)
protected Object[] getColumnValue(Configuration tableConf, DatabaseAction.Column column, Map objectModel) throws ConfigurationException, ServiceException
ConfigurationException
ServiceException
protected void fillModes(Configuration[] conf, boolean isKey, Map defaultModeNames, Map modeTypes, DatabaseAction.CacheHelper set) throws ConfigurationException
ConfigurationException
protected void setOutput(Map objectModel, String outputMode, Map results, Configuration table, Configuration column, int rowIndex, Object value)
protected void setColumn(PreparedStatement statement, int position, Configuration entry, Object value) throws Exception
Exception
protected void setColumn(Map objectModel, String outputMode, Map results, Configuration table, Configuration column, int rowIndex, Object value, PreparedStatement statement, int position) throws Exception
Exception
public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters param) throws Exception
act
in interface Action
resolver
- The SourceResolver
in chargeobjectModel
- The Map
with object of the
calling environment which can be used
to select values this controller may need
(ie Request, Response).source
- A source String
to the Actionparam
- The Parameters
for this invocation
Map
object with
sitemap substitution values which can be used
in subsequent elements attributes like src=
using a xpath like expression: src="mydir/{myval}/foo"
If the return value is null the processing inside
the Exception
- Indicates something is totally wrongprotected abstract int processRow(Map objectModel, Connection conn, PreparedStatement statement, String outputMode, Configuration table, DatabaseAction.CacheHelper queryData, Object[][] columnValues, int rowIndex, Map results) throws SQLException, ConfigurationException, Exception
SQLException
ConfigurationException
Exception
protected abstract String selectMode(boolean isAutoIncrement, Map modes)
protected abstract boolean honourAutoIncrement()
protected abstract DatabaseAction.CacheHelper getQuery(Configuration table, Map modeTypes, Map defaultModeNames) throws ConfigurationException, ServiceException
table
- the table's configuration object
ConfigurationException
ServiceException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |