com.ibm.etill.ldbcardcassette
Class LdbCardCassetteQuery.PaymentQuery

com.ibm.etill.ldbcardcassette.LdbCardCassetteQuery.PaymentQuery
Enclosing class:
LdbCardCassetteQuery

public final class LdbCardCassetteQuery.PaymentQuery

A payment query object automatically selects information from the cassette dependent payment table using the same criteria that was used to select information from the framework payment table. It is responsible for building the correct SQL statement, performing the query, and collecting the results. Furthermore, it is responsible for combining the information from each cassette payment extension with the information already gathered for the framework payment.

A query object trades simplicity for efficiency. The simplest technique for acquiring cassette dependent information for each payment would be to perform a SQL Select statement for each framework payment passed to the cassette query object. Instead, this query object performs a single SQL Select statement, joining the cassette dependent payment table with the framework payment table using the same criteria used to select the framework payments passed to the cassette query object.


Inner Class Summary
 class LdbCardCassetteQuery.PaymentQuery.PaymentInfo
          A payment information object contains the information gathered from one row of the cassette dependent payment table.
 
Field Summary
private  java.util.Hashtable objPayments
          This query attribute is a collection of all the information selected from the cassette dependent payment table.
 
Constructor Summary
LdbCardCassetteQuery.PaymentQuery(com.ibm.etill.framework.xdm.PaymentQueryRequest argRequest)
          This constructor is use by the cassette query object when it is asked to service a PaymentQuery request.
 
Method Summary
 void combine(java.util.Vector argFrameworkObjects)
          This method is used by the cassette query object to combine cassette dependent payment information with framework payment information.
protected  java.lang.String fromClause()
          This method is used by this object to construct the From clause for the SQL Select statement to be performed.
protected  int processQueryResults(java.sql.ResultSet argResultSet)
          This method is used by this class to process the results of the SQL Select statement.
protected  java.lang.String selectStatement()
          This method is used by this object to select the appropriate columns for the query.
protected  java.lang.String tableName()
          This method is used by this object to identify the name of the table to be used in the query.
 java.lang.String whereCondition()
          This method is used by this object to construct the Where clause for the SQL Select statement to be performed.
 

Field Detail

objPayments

private java.util.Hashtable objPayments
This query attribute is a collection of all the information selected from the cassette dependent payment table. The key is constructed using the table's primary key columns and the value is an inner payment information object.
Constructor Detail

LdbCardCassetteQuery.PaymentQuery

public LdbCardCassetteQuery.PaymentQuery(com.ibm.etill.framework.xdm.PaymentQueryRequest argRequest)
                                  throws com.ibm.etill.framework.payapi.ETillAbortOperation
This constructor is use by the cassette query object when it is asked to service a PaymentQuery request. During construction, it obtains and collects the cassette dependent payment information using same criteria that was used to obtain the framework payment information.
Parameters:
argRequest - - the PaymentQuery request.
Throws:
ETillAbortOperation - - any error results in this exception.
Method Detail

selectStatement

protected java.lang.String selectStatement()
This method is used by this object to select the appropriate columns for the query.

For this cassette, all columns are selected.

Returns:
- a String that lists the columns to be included in the query's result set.

tableName

protected java.lang.String tableName()
This method is used by this object to identify the name of the table to be used in the query. There are two cases:
  1. The merchant has issued a query for payments and provided payment selection criteria so this query will obtain payment information for the payments selected
  2. The merchant has issued a query for payments within a batch and provided batch selection criteria so this query will obtain payment information for the batches selected

For this cassette, the table name is the name of a cassette dependent view that can be found in the database.

Returns:
- a String containing the owner qualified table name.

fromClause

protected java.lang.String fromClause()
This method is used by this object to construct the From clause for the SQL Select statement to be performed.

For this cassette, the method returns the payment view selected by this object's tableName() method.

Returns:
- The string containing the From clause to be used in the query

whereCondition

public java.lang.String whereCondition()
This method is used by this object to construct the Where clause for the SQL Select statement to be performed.

For this cassette, the payment view selected by this object's tableName() method is designed to use the same Where clause specified in the original request to select the framework payment objects.

Returns:
- The string containing the Where clause to be used in the query

processQueryResults

protected int processQueryResults(java.sql.ResultSet argResultSet)
                           throws com.ibm.etill.framework.payapi.ETillAbortOperation
This method is used by this class to process the results of the SQL Select statement. For each row in the result set, it constructs an inner payment information object and saves it in a collection using the proper payment key.
Parameters:
argResultSet - - The result set produced when the manufactured SQL Select statement was performed.
Returns:
- An integer containing the number of cassette dependent payment information objects in the collection.
Throws:
ETillAbortOperation - - Any error results in this exception.

combine

public void combine(java.util.Vector argFrameworkObjects)
This method is used by the cassette query object to combine cassette dependent payment information with framework payment information. For each framework payment object in the collection provided, it determines if there is a matching cassette payment information object and, if so, asks the cassette payment information object to add its XML fields to the result.
Parameters:
argFrameworkObjects - - a collection of framework payment objects previously selected by the framework while processing the merchant's query request.