org.apache.cocoon.acting.modular
Class DatabaseQueryAction

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.acting.AbstractAction
          extended by org.apache.cocoon.acting.AbstractConfigurableAction
              extended by org.apache.cocoon.acting.ConfigurableServiceableAction
                  extended by org.apache.cocoon.acting.AbstractComplementaryConfigurableAction
                      extended by org.apache.cocoon.acting.modular.DatabaseAction
                          extended by org.apache.cocoon.acting.modular.DatabaseQueryAction
All Implemented Interfaces:
Disposable, Component, Configurable, LogEnabled, Serviceable, ThreadSafe, Action

public class DatabaseQueryAction
extends DatabaseAction

Executes an arbitrary query. The query is associated with a table and selected through the others mode. All keys and values are set in order of appearance, starting with keys, thus the query needs to have as many placeholders for prepared statement parameters. If it is an update query, the number of affected rows is returned to the sitemap.

 <table name="example">
   <queries>
      <query mode="one">update example set count=count+1 where id=?</query>
      <query mode="two">select count, name from example where id=?</query>
   </queries>
   <keys>
     <key name="id"/>
   </keys>
   <values/>
 </table>

Version:
CVS $Id: DatabaseQueryAction.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Christian Haul

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.cocoon.acting.modular.DatabaseAction
DatabaseAction.CacheHelper, DatabaseAction.Column, DatabaseAction.LookUpKey
 
Field Summary
 
Fields inherited from class org.apache.cocoon.acting.modular.DatabaseAction
cachedQueryData, dbselector, defaultModeNames, failOnEmpty, firstRow, 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
DatabaseQueryAction()
           
 
Method Summary
protected  Object[][] getColumnValues(Configuration tableConf, DatabaseAction.CacheHelper queryData, Map objectModel)
          Fetch all values for all columns that are needed to do the database operation.
protected  DatabaseAction.CacheHelper getQuery(Configuration table, Map modeTypes, Map defaultModeNames)
          Get the String representation of the PreparedStatement.
protected  boolean honourAutoIncrement()
          determine whether autoincrement columns should be honoured by this operation.
protected  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  String selectMode(boolean isAutoIncrement, Map modes)
          determine which mode to use as default mode here: SELECT highly specific to operation INSERT / UPDATE / DELETE / SELECT
 
Methods inherited from class org.apache.cocoon.acting.modular.DatabaseAction
act, configure, dispose, fillModes, getColumnValue, getDataSource, getMode, getOutputName, getOutputName, isLargeObject, processTable, service, setColumn, setColumn, setOutput, setOutputAttribute
 
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
 

Constructor Detail

DatabaseQueryAction

public DatabaseQueryAction()
Method Detail

selectMode

protected String selectMode(boolean isAutoIncrement,
                            Map modes)
determine which mode to use as default mode here: SELECT highly specific to operation INSERT / UPDATE / DELETE / SELECT

Specified by:
selectMode in class DatabaseAction

honourAutoIncrement

protected boolean honourAutoIncrement()
determine whether autoincrement columns should be honoured by this operation. This is usually snsible only for INSERTs.

Specified by:
honourAutoIncrement in class DatabaseAction

getQuery

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.

Specified by:
getQuery in class DatabaseAction
Parameters:
table - the table's configuration object
Returns:
the insert query as a string
Throws:
ConfigurationException
ServiceException

getColumnValues

protected 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.

Throws:
ConfigurationException
ServiceException

processRow

protected 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
set all necessary ?s and execute the query

Specified by:
processRow in class DatabaseAction
Throws:
SQLException
ConfigurationException
Exception


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.