com.raritantechnologies.searchApp.database
Class DatabaseInputFormRenderer

java.lang.Object
  extended bycom.raritantechnologies.searchApp.taglibrary.BasicSearchFormRenderer
      extended bycom.raritantechnologies.searchApp.taglibrary.BasicInputFormRenderer
          extended bycom.raritantechnologies.searchApp.database.DatabaseInputFormRenderer
All Implemented Interfaces:
IConfigurable, ISearchFormRenderer

public class DatabaseInputFormRenderer
extends BasicInputFormRenderer

Subclass of BasicInputFormRenderer that retrieves records from one or more RDBMS tables and can update the database on a save action.

XML Configuration Template:
   <SearchForm rendererClass="com.raritantechnologies.searchApp.database.DatabaseInputFormRenderer"
                  databaseConnectionManager="[Database connection manager SystemObject name]"
                  userID="field name pattern that contains User Name ]" >

       <!-- Same format as BasicInputFormRenderer: -->

       <Form action="somepage.jsp" method="post" submitText="Go" />

       <DefaultFieldProperties rows="4" cols="30" maxCols="4" width="[ width of text fields ]" fieldClass="medText"
              thClass="labelCell" tdClass="inputCell"
              extraAttribs="onClick='javascript:saveItem()'" />
      
       <UserPermission name="com.raritantechnologies.security.DBUserPermission" />

       <Submit type="button" name="save" class="medText" value="Save" onClick="saveItem()" >
         <SubmitHandler>
         function saveItem()
         {
            // put the saveItem javascript here...
         }
         </SubmitHandler>
       </Submit>
       <Submit type="button" name="delete" class="medText" value="delete" onClick="deleteItem()" />

       <RequiredFieldHandler type="popup/URL" href="theCheckingURL" popupMessage="the message for required fields" />

       <!-- Fixed fields -->
       <Field ID="[fieldID]" type="[type]" value="[its value ]" />

       <!-- QueryMap:  converts http request into SQL query and is used to set input form -->
       <!-- values from DB table -->
       <QueryMap>

          <SQLFormatter 
                        startBraceChar="[ character to start field name block - default is '{' ]"
                        endBraceChar="[ character to start field name block - default is '}' ]" >

            <!-- =========================================================== -->
            <!-- SQL template that request field values will be inserted     -->
            <!-- into. If this is HTML or XML, the template block should be  -->
            <!-- wrapped in a <!CDATA[  ]]> section.                         -->
            <!-- =========================================================== -->
            <Template>
               SQL template that will have http request values inserted by the PatternRequestFormatter.
            </Template>

          </SQLFormatter>

          <ResultMap>
             <Field ID="[ field in form ]" 
                       fieldType="text|textArea|checkbox|radio|readOnly|readOnlyHidden"
                       fieldName="[ column in DB Result ]"
                       headerClass="[ CSS class to render fieldName ]"
                       fieldClass="[ CSS class to render field value ]"  />

             <Field ID="[ field ID ]"
                       fieldName="[ column in DB result ]"
                       fieldType="custom" >
 
               <SearchElementRenderer class="[ class of com.raritantechnologies.searchApp.taglibrary.ISearchElementRenderer ]" >

               </SearchElementRenderer>

             </Field>
          </ResultMap>

       </QueryMap>


       <!-- One or more SaveActions: to handle updates or inserts, etc... -->
       <SaveAction  queryManager="[query manager SystemObject name]" >

          <!-- Request name/value pair that triggers this SaveAction -->
          <Request param="[ request parameter ]" value="[ value for this action ]" />

          <!-- ==================================================================================== -->
          <!-- One or more PatternRequestFormatters to convert Request parameters into SQL commands -->
          <!-- ==================================================================================== -->
          <SQLTemplates>
            <SQLTemplate>INSERT INTO TABLE_NAME VALUES ( {FiELDNAME}, {FIELDNAME2}, {FIELDNAME3} )

            <ChoiceTemplate>
              <Test>select * from TABLE_NAME where FIELDNAME = {FIELDNAME}</Test>

              <NullTemplates>
                <SQLTemplate>[ SQL Statement to run if test is NULL ]</SQLTemplate>
              </NullTemplates>

              <UpdateTemplates>
                <SQLTemplate>[ SQL Statement to run it test is NOT NULL ]</UseTemplate>
              </UpdateTemplates>

           </ChoiceTemplate>
         </SQLTemplates>
       </SaveAction>

       <!-- SaveAction can also implement the ISaveAction interface: -->
       <SaveAction class="[ class of com.raritantechnologies.searchApp.database.ISaveAction ]" >

       </SaveAction>

   </SearchForm>
 


Nested Class Summary
 
Nested classes inherited from class com.raritantechnologies.searchApp.taglibrary.BasicInputFormRenderer
BasicInputFormRenderer.InputFieldBean, BasicInputFormRenderer.SubmitBean
 
Field Summary
 
Fields inherited from class com.raritantechnologies.searchApp.taglibrary.BasicInputFormRenderer
attributes, cols, fieldClass, itemType, itemTypeField, maxCols, rows, submitBeans, tableProps, tdClass, thClass, trProps, valueMap, width
 
Fields inherited from class com.raritantechnologies.searchApp.taglibrary.BasicSearchFormRenderer
afterFormData, category, displayStyle, formInitArgs, formMethod, formName, hiddenFieldMap, hiddenFields, includeResetButton, includeSearchForm, includeSubmitButton, initialFields, onSubmitHandler, operatorMap, scriptMap, sourceMapName, submitButtonOnBottom, submitButtonText, submitHandlerName, targetFrame
 
Fields inherited from interface com.raritantechnologies.searchApp.taglibrary.ISearchFormRenderer
CLEAR, PAGE, PAGE_NUM, PAGE_SIZE, RESET, SEARCH
 
Constructor Summary
DatabaseInputFormRenderer()
           
 
Method Summary
 java.lang.String getBody(java.lang.String searchFormName, java.lang.String formCategory, java.lang.String initialFields, java.lang.String hiddenFields, java.lang.String action, java.lang.String formInitArgs, RaritanPageContext pageContext)
          Builds the form and table
protected  java.util.List getFields(java.lang.String searchFormName, java.lang.String formCategory, java.lang.String itemType, RaritanPageContext pageContext)
          Reads in the fields from the SearchFieldMap.
protected  java.lang.String getItemID(RaritanPageContext pageContext)
           
protected  java.lang.String getItemType(RaritanPageContext pageContext)
           
 void initialize(org.w3c.dom.Element elem)
          Adds configurable properties to the renderer.
protected  void initValueMap(java.util.List fields, RaritanPageContext pageContext)
          Puts values into the valueMap.
 void runUpdates(RaritanPageContext pageContext)
           
 
Methods inherited from class com.raritantechnologies.searchApp.taglibrary.BasicInputFormRenderer
addToValueMap, createInputFieldBean, getFormStart, getItemIDField, getPopupJScript, noRegularField, processOutputAction
 
Methods inherited from class com.raritantechnologies.searchApp.taglibrary.BasicSearchFormRenderer
addAfterFormData, addFormScript, addHiddenField, addHiddenFields, addPersistentFields, canUpdateSearchParams, getActionURL, getCategory, getFormInitArgs, getFormMethod, getFormName, getFormStart, getFormType, getHiddenFields, getInitialFields, getOnSubmitHandler, getSubmitHandlerName, renderHiddenFields, renderScripts, setFormMethod, setFormName, setFormType, setOnSubmitHandler, setSubmitHandlerName, updateSearchParams
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DatabaseInputFormRenderer

public DatabaseInputFormRenderer()
Method Detail

getBody

public java.lang.String getBody(java.lang.String searchFormName,
                                java.lang.String formCategory,
                                java.lang.String initialFields,
                                java.lang.String hiddenFields,
                                java.lang.String action,
                                java.lang.String formInitArgs,
                                RaritanPageContext pageContext)
Description copied from class: BasicInputFormRenderer
Builds the form and table

Specified by:
getBody in interface ISearchFormRenderer
Overrides:
getBody in class BasicInputFormRenderer
Parameters:
searchFormName - The name of the searchForm in the configuration SearchFieldMap
formCategory - The category of the searchForm
initialFields - Text or fields that will prepend the form. Can be used to include feedback or other information - need not be structured as form fields.
hiddenFields - Pipe ('|') and colon (':') delimited list of hidden field name=value pairs.
action - Form action
formInitArgs - Optional html parameters added to
tag

runUpdates

public void runUpdates(RaritanPageContext pageContext)

getFields

protected java.util.List getFields(java.lang.String searchFormName,
                                   java.lang.String formCategory,
                                   java.lang.String itemType,
                                   RaritanPageContext pageContext)
Description copied from class: BasicInputFormRenderer
Reads in the fields from the SearchFieldMap.

Overrides:
getFields in class BasicInputFormRenderer

initValueMap

protected void initValueMap(java.util.List fields,
                            RaritanPageContext pageContext)
Description copied from class: BasicInputFormRenderer
Puts values into the valueMap. Which puts specific values into the form fields. Subclasses should override this to add dynamic fields (i.e. possibly using lookup methods to get field values).

Overrides:
initValueMap in class BasicInputFormRenderer

getItemID

protected java.lang.String getItemID(RaritanPageContext pageContext)
Overrides:
getItemID in class BasicInputFormRenderer

getItemType

protected java.lang.String getItemType(RaritanPageContext pageContext)
Overrides:
getItemType in class BasicInputFormRenderer

initialize

public void initialize(org.w3c.dom.Element elem)
Description copied from class: BasicSearchFormRenderer
Adds configurable properties to the renderer.

Specified by:
initialize in interface ISearchFormRenderer
Overrides:
initialize in class BasicInputFormRenderer