com.raritantechnologies.rql.topic.taglibrary
Class TopicSearchFormRenderer

java.lang.Object
  extended bycom.raritantechnologies.rql.topic.taglibrary.TopicSearchFormRenderer
All Implemented Interfaces:
IConfigurable, ISearchFormRenderer

public class TopicSearchFormRenderer
extends java.lang.Object
implements ISearchFormRenderer

Creates / Manages dynamic advanced query forms based on the Topic object model.

Can render and then manipulate an advanced query string as an Advanced Search Form.

Uses an ITopicParser to convert the query string into a Topic tree. Maps the Topic Tree to a set of search form elements. (fieldName:fieldValue) and (fieldName:(field values))

Persistence:Uses file I/O to save and restore the query rule in XML form. To save the current Query Rule, the internal query rule object is first transformed into an RQLMap (OrderedMap) which is in turn transformed to XML by an XMLQueryParser. Restoring the query rule from a file follows an inverse process, the XML is transformed to an RQLMap by the XMLQueryParser.createQuery( ) method XML Configuration Template:

  <SearchForm name="[ search form name ]" category="[ associated SourceMap category ]"
                 rendererClass="com.raritantechnologies.rql.topic.taglibrary.TopicSearchFormRenderer"
                 formCacheName="[ key for session cache of intermediate form object ]"
                 textInputSize="[ size of text input box ]"
                 saveTopicCommand="[ request command that will cause the current QueryRule to be saved ]"
                 loadTopicCommand="[  ]"
                 clearTopicCommand="[  ]"
                 addFreeTextField="[ true(default)|false ]"
                 freeTextDisplayName="[ name of Free Text field in field dropdown list ]"
                 freeTextFieldName="[ name of free text field ID (e.g. "query" ) ]" >

    <!-- Additional SearchElementRenderer(s) to be added to the SearchForm -->
    <SearchElementRenderer class="[ class of com.raritantechnologies.searchApp.taglibrary.ISearchElementRenderer ]"
                              position="[ TOP | BOTTOM ]" >

    </SearchElementRenderer>

    <!-- Alternate Submit Renderer. These will be rendered instead of the standard submit button -->
    <!-- For multiple submit elements, use a SearchFormRowRenderer or SearchFormColumnRenderer -->
    <SubmitElementRenderer class="[ class of com.raritantechnologies.searchApp.taglibrary.ISearchElementRenderer ]" >

    </SubmitElementRenderer>

    <HiddenParameters>
       <Param ID="[ name of request parameter that should be preserved as a hidden field ]" />
    </HiddenParameters>

    <!-- ==================================================================== -->
    <!--   QuerySource: Handles Query Rule Persistence (retrieval)            -->
    <!-- ==================================================================== -->
    <QuerySource>

      <!-- ========================================================== -->
      <!--  Parameter mappings for QueryResultBean search             -->
      <!-- ========================================================== -->
      <QueryParams>

        <!-- Fixed Params -->
        <Param ID="[ parameter in query ]" value="[ value of fixed parameter ]" />

        <!-- Request Params -->
        <Param requestField="[ name of parameter in http request ]" queryField="[ name of field in QueryResultSetReader search ]" />

      </QueryParams>

      <QueryResultReader class="[ class of com.raritantechnologies.searchApp.query.IQueryResultSetReader ]" >

      </QueryResultReader>

    </QuerySource>

    <!-- ==================================================================== -->
    <!--  OutputSource: Handles Query Rule persistence: (storage)             -->
    <!-- ==================================================================== -->
    <OutputSource queryNameParam="[ name of request parameter that provides QueryResultBean 'name' ]"
                     documentClassifier="[ name of DocumentClassifier to update ]" >

      <!-- ========================================================== -->
      <!--  Parameter mappings for QueryResultBean adhoc parameters   -->
      <!-- ========================================================== -->
      <AdhocParams>

        <!-- Fixed Params -->
        <Param ID="[ parameter in query ]" value="[ value of fixed parameter ]" />

        <!-- Request Params -->
        <Param requestField="[ name of parameter in http request ]" adhocField="[ name of field in QueryResultSetReader search ]" />

      </AdhocParams>

      <QueryResultWriter class="[ class of com.raritantechnologies.searchApp.query.IQueryResultSetWriter ]" >

      </QueryResultWriter>

    </OutputSource>

  </SearchForm>
 

Developed by Raritan Technologies .

Author:
Ted Sullivan

Nested Class Summary
 class TopicSearchFormRenderer.BooleanField
          Inner class that contains the object model for the search form.
 
Field Summary
static java.lang.String ADD_QUERY
           
static java.lang.String ADD_TOPIC
           
static java.lang.String DELETE_QUERY
           
static java.lang.String MOVE_DOWN
           
static java.lang.String MOVE_UP
           
 
Fields inherited from interface com.raritantechnologies.searchApp.taglibrary.ISearchFormRenderer
CLEAR, PAGE, PAGE_NUM, PAGE_SIZE, RESET, SEARCH
 
Constructor Summary
TopicSearchFormRenderer()
           
 
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(RaritanPageContext pageContext, java.lang.String hiddenFields)
           
 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)
          create/update the advanced search form from inputs and SearchSource properties.
 java.lang.String getCategory()
           
 java.lang.String getFormInitArgs()
           
 java.lang.String getFormMethod()
           
 java.lang.String getFormName()
           
 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)
          Initialize the search form renderer from the application Configuration XML.
 void setBooleanForm(OrderedMap rqlQuery)
           
static void setCachedBooleanField(java.lang.String sessionID, java.lang.String formCacheName, java.lang.String searchSourceName, OrderedMap rqlMapQuery)
          Static method to set the BooleanField object for a session from an RQLMap query (RTI OrderedMap )
 void setFormMethod(java.lang.String formMethod)
          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 pContext, 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

ADD_QUERY

public static final java.lang.String ADD_QUERY
See Also:
Constant Field Values

DELETE_QUERY

public static final java.lang.String DELETE_QUERY
See Also:
Constant Field Values

MOVE_UP

public static final java.lang.String MOVE_UP
See Also:
Constant Field Values

MOVE_DOWN

public static final java.lang.String MOVE_DOWN
See Also:
Constant Field Values

ADD_TOPIC

public static final java.lang.String ADD_TOPIC
See Also:
Constant Field Values
Constructor Detail

TopicSearchFormRenderer

public TopicSearchFormRenderer()
Method Detail

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)
create/update the advanced search form from inputs and SearchSource properties.

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.

addHiddenFields

public void addHiddenFields(RaritanPageContext pageContext,
                            java.lang.String hiddenFields)

initialize

public void initialize(org.w3c.dom.Element elem)
Description copied from interface: ISearchFormRenderer
Initialize the search form renderer from the application Configuration XML.

Specified by:
initialize in interface ISearchFormRenderer

setBooleanForm

public void setBooleanForm(OrderedMap rqlQuery)

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

setFormName

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

Specified by:
setFormName in interface ISearchFormRenderer

getFormName

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

setFormMethod

public void setFormMethod(java.lang.String formMethod)
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

addHiddenField

public void addHiddenField(java.lang.String fieldName,
                           java.lang.String fieldValue)
Adds a hidden field to the form.

Specified by:
addHiddenField in interface ISearchFormRenderer

addFormScript

public void addFormScript(java.lang.String scriptName,
                          java.lang.String script)
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

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

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

setCachedBooleanField

public static void setCachedBooleanField(java.lang.String sessionID,
                                         java.lang.String formCacheName,
                                         java.lang.String searchSourceName,
                                         OrderedMap rqlMapQuery)
Static method to set the BooleanField object for a session from an RQLMap query (RTI OrderedMap )


updateSearchParams

public void updateSearchParams(RaritanPageContext pContext,
                               OrderedMap searchParams)
"callback" loop: SearchFormRenderer responsible for converting requests into one or more query maps.

Specified by:
updateSearchParams in interface ISearchFormRenderer

canUpdateSearchParams

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

addAfterFormData

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