com.raritantechnologies.searchApp.taglibrary
Class DynamicSearchElementRenderer

java.lang.Object
  extended bycom.raritantechnologies.searchApp.taglibrary.DynamicSearchElementRenderer
All Implemented Interfaces:
IConfigurable, ISearchElementRenderer, ISearchMapModifier

public class DynamicSearchElementRenderer
extends java.lang.Object
implements ISearchElementRenderer, ISearchMapModifier

Renders a search element based on a set of request, result, user or search source criteria. Matches these criteria against the current search, result, user or search source parameters. Uses a set of nested search element renderers along with criteria for choosing a renderer based on request/result parameter settings.

Enables context-sensitive switch search elements. Can use to show/hide search elements based on search or result contexts.

XML Configuration Template:
  <SearchElementRenderer 
     rendererClass="com.raritantechnologies.searchApp.taglibrary.DynamicSearchElementRenderer" 
     onMatch="show" > <!-- choices are show/hide default state is opposite -->

   <!-- ============================================================== -->
   <!--   One or more <UseRenderer> tags. A UseRenderer contains two   -->
   <!--   sections. One that defines what request, result or user      -->
   <!--   criteria are used to select a SearchElementRenderer (one of  -->
   <!--   <RequestParams>, <ResultParams> or <UserParams> tags).       -->
   <!--   Each UseRenderer tag also contains a nested                  -->
   <!--   SearchElementRenderer tag that will be used if the selection -->
   <!--   criteria match.                                              -->
   <!-- ============================================================== -->
   <UseRenderer matchIfLoggedIn="[true|false]" >

      <!-- Request Parameters condition or conditions that will activate this search element renderer -->
      <RequestParams includeSessionValues="[ true|false(default) ]" >
        <Param name="taxField_1" exactMatch="[ true|false(default) ]" >
          <ValidValues>  <!-- Any of these values will activate the element renderer -->
             <Value matchType="[ equals|contains|startsWith|endsWith ]" >[ a valid value | NOT_NULL ]</Value>
             <Value>[ alternate value ]</Value>
          </ValidValues>
        </Param>

        <!-- If the above field is valid, check this field (fields are ANDed) -->
        <Param name="[ select_field name ]">
          <Comparator class="[ class of com.raritantechnologies.utils.comparators.IComparator ]" >
          </Comparator>
        </Param>
      </RequestParams>

      <!-- Result parameter condition or conditions that will activate this search element renderer -->
      <ResultParams > <!-- all results must match -->
        <Param name="[ result field name ]"> 
          <ValidValues> <!-- if a result matches any -->
          </ValidValues>
        </Param>

        <!-- If the above field is valid, check this field (fields are ANDed) -->
        <Param name="[ result field name ]">
          <Comparator class="[ class of com.raritantechnologies.utils.comparators.IComparator ]" >
          </Comparator>
        </Param>

      </ResultParams>

      <!-- User attributes (static or based on current preference settings) -->
      <UserParams > <!-- all user attributes must match -->
        <Param name="[ user attribute ]"> 
          <ValidValues> <!-- if a result matches any -->
          </ValidValues>
        </Param>

        <!-- If the above field is valid, check this field (fields are ANDed) -->
        <param name="[ user attribute ]">
          <Comparator class="[ class of com.raritantechnologies.utils.comparators.IComparator ]" >
          </Comparator>
        </param>

      </UserParams>

      <!-- Search Source properties that will activate this search element renderer -->
      <SourceParams sourceRequestParam="[ request param with source name ]" >
        <Param name="[ source attribute ]" >
          <Comparator class="[ class of com.raritantechnologies.utils.comparators.IComparator ]" >
          </Comparator>  
        </Param>
      </SourceParams>

      <!-- Nested SearchElementRenderer to use if the above criterion are matched -->
      <SearchElementRenderer rendererClass ="A real SearchElementRenderer goes here]" >
        <!-- parameters needed by the nested renderer -- >
      </SearchElementRenderer>
    </UseRenderer>

    <UseRenderer>
      <!-- alternative renderer criteria: same as above -->
    </UseRenderer>

    <!-- etc. . . --->

  </SearchElementRenderer>
 

Developed by Raritan Technologies .

Author:
Ted Sullivan

Constructor Summary
DynamicSearchElementRenderer()
           
 
Method Summary
 boolean canUpdateSearchParams()
           
 java.lang.String getBody(ISearchFormRenderer parent, RaritanPageContext pageContext)
          Returns the element html fragment.
 ISearchElementRenderer getRenderer(java.lang.String name)
          Returns ISearchElementRenderer of this render or a nested renderer matching the name given or null if no match is found.
 void initialize(org.w3c.dom.Element elem)
          Initialize renderer-specific parameters from the configuration XML tag.
 boolean isHidden(ISearchFormRenderer parent, RaritanPageContext pageContext)
           
 void setEnable(boolean enabled)
          Enable/Disable the renderer.
 void updateSearchParams(RaritanPageContext pageContext, OrderedMap searchParams)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DynamicSearchElementRenderer

public DynamicSearchElementRenderer()
Method Detail

initialize

public void initialize(org.w3c.dom.Element elem)
Description copied from interface: ISearchElementRenderer
Initialize renderer-specific parameters from the configuration XML tag.

Specified by:
initialize in interface ISearchElementRenderer

setEnable

public void setEnable(boolean enabled)
Description copied from interface: ISearchElementRenderer
Enable/Disable the renderer. Disabled renderers are not included in the html output of an ISearchFormRenderer.

Specified by:
setEnable in interface ISearchElementRenderer

getRenderer

public ISearchElementRenderer getRenderer(java.lang.String name)
Description copied from interface: ISearchElementRenderer
Returns ISearchElementRenderer of this render or a nested renderer matching the name given or null if no match is found.

Specified by:
getRenderer in interface ISearchElementRenderer

getBody

public java.lang.String getBody(ISearchFormRenderer parent,
                                RaritanPageContext pageContext)
Description copied from interface: ISearchElementRenderer
Returns the element html fragment.

Specified by:
getBody in interface ISearchElementRenderer

isHidden

public boolean isHidden(ISearchFormRenderer parent,
                        RaritanPageContext pageContext)
Specified by:
isHidden in interface ISearchElementRenderer

canUpdateSearchParams

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

updateSearchParams

public void updateSearchParams(RaritanPageContext pageContext,
                               OrderedMap searchParams)
Specified by:
updateSearchParams in interface ISearchMapModifier