com.raritantechnologies.searchApp.taglibrary
Class BasicSearchFormRenderer

java.lang.Object
  extended bycom.raritantechnologies.searchApp.taglibrary.BasicSearchFormRenderer
All Implemented Interfaces:
IConfigurable, ISearchFormRenderer
Direct Known Subclasses:
BasicInputFormRenderer, BuildTreeSearchFormRenderer, SaveResultsSearchFormRenderer, SearchFormTableRenderer, SimpleVQLSearchFormRenderer

public class BasicSearchFormRenderer
extends java.lang.Object
implements ISearchFormRenderer

Implementation of ISearchFormRenderer that renders a static search form from a <SearchForm> tag in the application XML configuration file.

Acquires set of field IDs and SearchFormField objects from the ConfigurationManager:
   public String getBody( String searchForm, String category, ...)
   {
       ConfigurationManager cMan = ConfigurationManager.getInstance( );
       ISearchFieldMap sfMap     = cMan.getSearchFieldMap( );

       String[] searchFormIDs    = sfMap.getSearchFormIDs( searchForm, category );

       . . .
       // for each search form ID, get a SearchFormField object
       SearchFormField sff      = sfMap.getSearchFormField( searchForm, category, anID );

       // render the SearchFormField as HTML . . .
   }
 
XML Configuration Template:
 <SearchForm name="[ name of search Form ]" category="[ (optional) Associated SearchSource category ]"
    sourceMap="[ name of source map to use (optional) ]"
    formMethod="[ get(default)|post ]"
    includeSessionID="[true|false]"
    includeSubmitButton="[true(default)|false]"
    includeResetButton="[true(default)|false]" 
    submitOnBottom="[true(default)|false - if false submit is on right side ]"
    submitButtonText="[ text in submit button ]"
    submitHandlerName="[ optional name of submit javascript handler ]"
    resetFields="[true|false(default)]"
    tableProps="[ list of properties for the html table ]" >

   <Field ID="AU" type="text" width="50" name="Author" />

   <Field ID="TI" type="text" width="50" name="Title" >
      <FieldOp ID="TIBOOL" type="select" />
   </Field>

   <Field ID="KY" type="text" width="50" name="Keywords" >
      <FieldOp ID="KYBOOL" type="select" />
   </Field>

   <Field ID="PageSize" type="radio" name="Page Size" >
     <Choice value="10" name="10" default="on" />
     <Choice value="20" name="20" />
     <Choice value="50" name="50" />
   </Field>

   <!-- Optional onSubmit javascript handler -->
   <SubmitHandler>

   </SubmitHandler>

  </SearchForm>
 
Generates this HTML (spaces and indents added for clarity):
  <form name="AdvancedSearch" action="results.jsp"  >
    <input type="hidden" name="category" value="lifescience" >
    <input type="hidden" name="searchForm" value="AdvancedSearch" >
    <input type="hidden" name="formType" value="search" >
    <table>
      <tr>
        <td align="right" ><b>Author:</b></td>
        <td><input type="text" name="AU" size="50"  ></td>
        <td> </td>
      </tr>
      <tr>
        <td align="right" ><b>Title:</b></td>
        <td><input type="text" name="TI" size="50"  ></td>
        <td><select name="TIBOOL"  >
              <option value="AND" >all words</option>
              <option value="OR" >any words</option>
              <option value="EXACT" >exact phrase</option>
            </select>
        </td>
      </tr>
      <tr>
        <td align="right" ><b>Keywords:</b></td>
        <td><input type="text" name="KY" size="50"  ></td>
        <td><select name="KYBOOL"  >
              <option value="AND" >all words</option>
              <option value="OR" >any words</option>
              <option value="EXACT" >exact phrase</option>
            </select>
        </td>
      </tr>
      <tr>
        <td align="right" ><b>Page Size:</b></td>
        <td><input type="radio" name="PageSize" value="10" checked > 10  
            <input type="radio" name="PageSize" value="20" > 20  
            <input type="radio" name="PageSize" value="50" > 50  
       </td>
       <td> </td>
     </tr>
     <tr>
       <td><input type="reset" value="Reset" ></td>
       <td><input type="submit" value="Search" ></td>
     </tr>
   </table>
 </form>
 
Which generates this form:
Author:  
Title:
Keywords:
Page Size: 10   20   50   

Developed by Raritan Technologies .

Author:
Ted Sullivan

Field Summary
protected  java.lang.String action
           
protected  java.lang.String afterFormData
           
protected  java.lang.String category
           
protected  java.lang.String displayStyle
           
protected  java.lang.String formInitArgs
           
protected  java.lang.String formMethod
           
protected  java.lang.String formName
           
protected  java.lang.String formType
           
protected  java.util.HashMap hiddenFieldMap
           
protected  java.lang.String hiddenFields
           
protected  boolean includeResetButton
           
protected  boolean includeSearchForm
           
protected  boolean includeSubmitButton
           
protected  java.lang.String initialFields
           
protected  java.lang.String onSubmitHandler
           
protected  java.util.HashMap operatorMap
           
protected  java.util.HashMap scriptMap
           
protected  java.lang.String sourceMapName
           
protected  boolean submitButtonOnBottom
           
protected  java.lang.String submitButtonText
           
protected  java.lang.String submitHandlerName
           
protected  java.lang.String targetFrame
           
 
Fields inherited from interface com.raritantechnologies.searchApp.taglibrary.ISearchFormRenderer
CLEAR, PAGE, PAGE_NUM, PAGE_SIZE, RESET, SEARCH
 
Constructor Summary
BasicSearchFormRenderer()
           
BasicSearchFormRenderer(org.w3c.dom.Element elem)
           
 
Method Summary
 void addAfterFormData(java.lang.String afterFormData)
           
 void addFormScript(java.lang.String scriptName, java.lang.String script)
          Adds a section of javascript to the form.
 void addHiddenField(java.lang.String fieldName, java.lang.String fieldValue)
          Adds a hidden field to the form.
 void addHiddenFields(java.lang.String hiddenFields)
          addHiddenFields: format is name:value,name:value
 void addPersistentFields(java.lang.String formName, RaritanPageContext pageContext)
           
 boolean canUpdateSearchParams()
           
 java.lang.String getActionURL()
           
 java.lang.String getBody(java.lang.String searchFormName, java.lang.String categoryName, java.lang.String initialFields, java.lang.String hiddenFields, java.lang.String action, java.lang.String formInitArgs, RaritanPageContext pageContext)
          Main search form generation method.
 java.lang.String getCategory()
           
 java.lang.String getFormInitArgs()
           
 java.lang.String getFormMethod()
           
 java.lang.String getFormName()
           
protected  java.lang.StringBuffer getFormStart(java.lang.String searchFormName, java.lang.String categoryName, java.lang.String initialFields, java.lang.String hiddenFields, java.lang.String action, java.lang.String target, java.lang.String formInitArgs, RaritanPageContext pageContext, boolean renderHidden)
           
 java.lang.String getFormType()
           
 java.lang.String getHiddenFields()
           
 java.lang.String getInitialFields()
           
 java.lang.String getOnSubmitHandler(java.lang.String sessionID)
           
 java.lang.String getSubmitHandlerName()
           
 void initialize(org.w3c.dom.Element elem)
          Adds configurable properties to the renderer.
protected  void renderHiddenFields(java.lang.StringBuffer strbuf)
           
protected  void renderScripts(java.lang.StringBuffer strbuf)
           
 void setFormMethod(java.lang.String fMethod)
          sets the form method ( "get" or "post" )
 void setFormName(java.lang.String formName)
          sets the form name - used as a key field in session data management so this should be unique within an application.
 void setFormType(java.lang.String formType)
          Used for new search, paging, search within results, re-sort, whatever?
 void setOnSubmitHandler(java.lang.String onSubmitHandler)
           
 void setSubmitHandlerName(java.lang.String submitHandlerName)
           
 void updateSearchParams(RaritanPageContext pageContext, OrderedMap searchParams)
          "callback" loop: SearchFormRenderer responsible for converting requests into one or more query maps.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

formName

protected java.lang.String formName

operatorMap

protected java.util.HashMap operatorMap

hiddenFieldMap

protected java.util.HashMap hiddenFieldMap

scriptMap

protected java.util.HashMap scriptMap

formType

protected java.lang.String formType

formMethod

protected java.lang.String formMethod

displayStyle

protected java.lang.String displayStyle

category

protected java.lang.String category

sourceMapName

protected java.lang.String sourceMapName

initialFields

protected java.lang.String initialFields

hiddenFields

protected java.lang.String hiddenFields

action

protected java.lang.String action

targetFrame

protected java.lang.String targetFrame

formInitArgs

protected java.lang.String formInitArgs

onSubmitHandler

protected java.lang.String onSubmitHandler

submitHandlerName

protected java.lang.String submitHandlerName

includeSubmitButton

protected boolean includeSubmitButton

submitButtonOnBottom

protected boolean submitButtonOnBottom

includeResetButton

protected boolean includeResetButton

includeSearchForm

protected boolean includeSearchForm

submitButtonText

protected java.lang.String submitButtonText

afterFormData

protected java.lang.String afterFormData
Constructor Detail

BasicSearchFormRenderer

public BasicSearchFormRenderer()

BasicSearchFormRenderer

public BasicSearchFormRenderer(org.w3c.dom.Element elem)
Method Detail

setFormType

public void setFormType(java.lang.String formType)
Description copied from interface: ISearchFormRenderer
Used for new search, paging, search within results, re-sort, whatever?

Specified by:
setFormType in interface ISearchFormRenderer

getFormType

public java.lang.String getFormType()
Specified by:
getFormType in interface ISearchFormRenderer

setFormMethod

public void setFormMethod(java.lang.String fMethod)
Description copied from interface: ISearchFormRenderer
sets the form method ( "get" or "post" )

Specified by:
setFormMethod in interface ISearchFormRenderer

getFormMethod

public java.lang.String getFormMethod()
Specified by:
getFormMethod in interface ISearchFormRenderer

initialize

public void initialize(org.w3c.dom.Element elem)
Adds configurable properties to the renderer.

Specified by:
initialize in interface ISearchFormRenderer

getBody

public java.lang.String getBody(java.lang.String searchFormName,
                                java.lang.String categoryName,
                                java.lang.String initialFields,
                                java.lang.String hiddenFields,
                                java.lang.String action,
                                java.lang.String formInitArgs,
                                RaritanPageContext pageContext)
Description copied from interface: ISearchFormRenderer
Main search form generation method. Creates a <form ...> ... </form> HTML fragment.

Specified by:
getBody in interface ISearchFormRenderer
Parameters:
searchFormName - Name of search form - Used to lookup a configuration element from application config. Sets the name="" attribute of the HTML form.
categoryName - Category of this search form (used for Source Map applications).
initialFields - Additional search form input fields - assumed to be HTML.
hiddenFields - List of hidden field name=value pairs.
action - Action URL (e.g. JSP or ASP page)
formInitArgs - Initial arguments to be passed in the <form> tag.
pageContext - Wraps the current page context. Contains session ID, session data HTTP request parameters. Can be used to set initial field values.

getFormStart

protected java.lang.StringBuffer getFormStart(java.lang.String searchFormName,
                                              java.lang.String categoryName,
                                              java.lang.String initialFields,
                                              java.lang.String hiddenFields,
                                              java.lang.String action,
                                              java.lang.String target,
                                              java.lang.String formInitArgs,
                                              RaritanPageContext pageContext,
                                              boolean renderHidden)

addPersistentFields

public void addPersistentFields(java.lang.String formName,
                                RaritanPageContext pageContext)

addHiddenFields

public void addHiddenFields(java.lang.String hiddenFields)
addHiddenFields: format is name:value,name:value


addHiddenField

public void addHiddenField(java.lang.String fieldName,
                           java.lang.String fieldValue)
Description copied from interface: ISearchFormRenderer
Adds a hidden field to the form.

Specified by:
addHiddenField in interface ISearchFormRenderer

renderHiddenFields

protected void renderHiddenFields(java.lang.StringBuffer strbuf)

setFormName

public void setFormName(java.lang.String formName)
Description copied from interface: ISearchFormRenderer
sets the form name - used as a key field in session data management so this should be unique within an application.

Specified by:
setFormName in interface ISearchFormRenderer

getFormName

public java.lang.String getFormName()
Specified by:
getFormName in interface ISearchFormRenderer

getCategory

public java.lang.String getCategory()
Specified by:
getCategory in interface ISearchFormRenderer

getInitialFields

public java.lang.String getInitialFields()
Specified by:
getInitialFields in interface ISearchFormRenderer

getHiddenFields

public java.lang.String getHiddenFields()
Specified by:
getHiddenFields in interface ISearchFormRenderer

getActionURL

public java.lang.String getActionURL()
Specified by:
getActionURL in interface ISearchFormRenderer

getFormInitArgs

public java.lang.String getFormInitArgs()
Specified by:
getFormInitArgs in interface ISearchFormRenderer

addFormScript

public void addFormScript(java.lang.String scriptName,
                          java.lang.String script)
Description copied from interface: ISearchFormRenderer
Adds a section of javascript to the form. The script should NOT be enclosed by a <script> </script> tag.

Specified by:
addFormScript in interface ISearchFormRenderer

renderScripts

protected void renderScripts(java.lang.StringBuffer strbuf)

setOnSubmitHandler

public void setOnSubmitHandler(java.lang.String onSubmitHandler)
Specified by:
setOnSubmitHandler in interface ISearchFormRenderer

getOnSubmitHandler

public java.lang.String getOnSubmitHandler(java.lang.String sessionID)
Specified by:
getOnSubmitHandler in interface ISearchFormRenderer

setSubmitHandlerName

public void setSubmitHandlerName(java.lang.String submitHandlerName)
Specified by:
setSubmitHandlerName in interface ISearchFormRenderer

getSubmitHandlerName

public java.lang.String getSubmitHandlerName()
Specified by:
getSubmitHandlerName in interface ISearchFormRenderer

canUpdateSearchParams

public boolean canUpdateSearchParams()
Specified by:
canUpdateSearchParams in interface ISearchFormRenderer

updateSearchParams

public void updateSearchParams(RaritanPageContext pageContext,
                               OrderedMap searchParams)
Description copied from interface: ISearchFormRenderer
"callback" loop: SearchFormRenderer responsible for converting requests into one or more query maps.

Specified by:
updateSearchParams in interface ISearchFormRenderer

addAfterFormData

public void addAfterFormData(java.lang.String afterFormData)
Specified by:
addAfterFormData in interface ISearchFormRenderer