atg.droplet.sql
Class SQLQueryRange

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.nucleus.TimedOperationService
              extended by atg.nucleus.servlet.ServletService
                  extended by atg.nucleus.servlet.HttpServletService
                      extended by atg.servlet.DynamoServlet
                          extended by atg.droplet.Range
                              extended by atg.droplet.sql.SQLQueryRange
All Implemented Interfaces:
NameContextBindingListener, NameContextElement, NameResolver, AdminableService, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, atg.nucleus.logging.VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, ParameterServlet, java.util.EventListener, javax.servlet.Servlet

public class SQLQueryRange
extends Range

This servlet executes a SQL query and renders its output parameter for each element returned by the query. The query can either be specified as a reference to an SQLQuery bean, or it can be specified inline with parameters.

For each row returned by the query, we set the following parameters:

index
The 0-based index of the returned row
count
The 1-based number of the returned row
element
A dynamic bean that has properties for accessing the values returned in the result set. You can access the values either by name or by column index. The name refers to either the column name or the column alias if one was used in the query. To access values by name, you say: "element.name". To access values by column index, you say: element.columns[i] where "i" is the 0-based index of the returned column.

As mentioned before, there are two ways that you can specify a query to the SQLQueryForEach droplet. You can refer to an existing SQLQuery bean using the queryBean parameter. For example, you might say:

   <param name="queryBean" value="bean:/mySite/MySQLQuery">
 

Alternatively, you can specify the SQL directly in the jhtml file with the querySQL parameter. In this case, you also have to specify the values of the "dataSource" and "transactionManager" parameters. Thus your droplet declaration would include the following parameters:

   <param name="myAge" value="bean:MyUser.age">
   <param name="querySQL" value="select * from person where age=:myAge">
   <param name="dataSource" value="bean:/atg/dynamo/service/jdbc/JTDataSource">>
   <param name="transactionManager" value="bean:/atg/dynamo/transaction/TransactionManager">>
 
The values for the ":name" constructs in your query are taken from the parameters in your request. Two input parameters lets you control which subset of elements in the returned query that are displayed. They are:
start
Specifies the starting index (1-based). For example, to start at the beginning of the array, set start to 1. If start points past the end of the array, the empty parameter will be rendered.
howMany
Specifies the number of items in the array set to display. If the combination of start and howMany point past the end of the array, rendering stops after the end of the array is reached.
You can also define a set of output parameters which you can use to control the formatting for the returned results:
outputStart
This parameter is rendered before any output tags if the array is not empty.
outputEnd
This parameter is rendered after all output tags if the array is not empty.
output
This parameter is rendered for once for each element in the array.
empty
This optional parameter is rendered if the array contains no elements.
error
This optional parameter is rendered if there was an error executing the query.
These parameters are set when rendering the "output" parameters. They allow you to build links to render the next and previous set of elements.
end
This parameter is set before any of the output parameters are rendered. It indicates the (1-based) count of the last element in the current array set.
size
This parameter is set before any of the output parameters are rendered. It indicates the number of elements in the full array.
hasPrev
This parameter is set to true or false before any of the output parameters are rendered. It indicates whether there are any array items before the current array set.
prevStart
This parameter is set before any of the output parameters are rendered, and only if hasPrev is true. It indicates the value of start that should be used to display the previous array set.
prevEnd
This parameter is set before any of the output parameters are rendered, and only if hasPrev is true. It indicates the (1-based) count of the last element in the previous array set.
prevHowMany
This parameter is set before any of the output parameters are rendered, and only if hasPrev is true. It indicates the number of elements in the previous array set.
hasNext
This parameter is set to true or false before any of the output parameters are rendered. It indicates whether there are any array items after the current array set.
nextStart
This parameter is set before any of the output parameters are rendered, and only if hasNext is true. It indicates the value of start that should be used to display the next array set.
nextEnd
This parameter is set before any of the output parameters are rendered, and only if hasNext is true. It indicates the (1-based) count of the last element in the next array set.
nextHowMany
This parameter is set before any of the output parameters are rendered, and only if hasNext is true. It indicates the number of elements in the next array set.


Field Summary
static java.lang.String CLASS_VERSION
           
 
Fields inherited from class atg.droplet.Range
ARRAY, COUNT, ELEMENT, ELEMENT_NAME, EMPTY, END, HAS_NEXT, HAS_PREV, HOW_MANY, INDEX, INDEX_NAME, KEY, NEXT_END, NEXT_HOW_MANY, NEXT_START, OUTPUT, OUTPUT_END, OUTPUT_START, PREV_END, PREV_HOW_MANY, PREV_START, SIZE, START
 
Fields inherited from class atg.servlet.DynamoServlet
mAllowCleanupRequest, mParameters
 
Fields inherited from class atg.nucleus.servlet.ServletService
SERVLET_INFO_KEY
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
SQLQueryRange()
           
 
Method Summary
 java.lang.Object getArray(DynamoHttpServletRequest pReq)
          Returns the enumeration from the SQLQuery that contains the elements in the result set
 void service(DynamoHttpServletRequest pReq, DynamoHttpServletResponse pRes)
          Renders the list of items retrieved by the query
 
Methods inherited from class atg.droplet.Range
serviceArray, serviceCollection, serviceDictionary, serviceEnumeration, serviceIterator, serviceList, serviceMap, setPrevNextParameters
 
Methods inherited from class atg.servlet.DynamoServlet
doDelete, doGet, doPost, doPut, getParameter, getParameters, getServletContext, service, service, setParameter
 
Methods inherited from class atg.nucleus.servlet.ServletService
destroy, getServletConfig, getServletInfo, init, setServletInfo
 
Methods inherited from class atg.nucleus.TimedOperationService
getAverageRequestHandlingTime, getHandledRequestCount, getRequestStartTime, getTotalRequestHandlingTime, isKeepingStatistics, notifyHandledRequest, resetStatistics, setKeepingStatistics
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Constructor Detail

SQLQueryRange

public SQLQueryRange()
Method Detail

getArray

public java.lang.Object getArray(DynamoHttpServletRequest pReq)
Returns the enumeration from the SQLQuery that contains the elements in the result set

Overrides:
getArray in class Range

service

public void service(DynamoHttpServletRequest pReq,
                    DynamoHttpServletResponse pRes)
             throws javax.servlet.ServletException,
                    java.io.IOException
Renders the list of items retrieved by the query

Overrides:
service in class Range
Parameters:
pReq - the request to be processed
pRes - the response object for this request
Throws:
javax.servlet.ServletException - if an application specific error occurred processing this request
java.io.IOException - if an error occurred reading data from the request or writing data to the response