MainJavadocExample
DynamicSourceMap Demo

The DynamicSourceMap is used in the Raritan Federated demo application to automatically select sources for a user based on the user's role.


XML Configuration for this example:
SourceMap configuration:
  <!-- ============================================================================= -->
  <!--                             Dynamic Source Map                                -->
  <!-- ============================================================================= -->
  <Object type="DynamicSourceMap" name="UserGroupSources" sourceName="UserGroupSources"
          userParamsOnly="true"  >

    <QueryInputMap userNameParam="UserName" />

    <SearchResultMap>
      <ResultParam input="UserGroup" output="UserGroup" />
    </SearchResultMap>

    <!-- Proxy source map -->
    <ProxySourceMap class="com.raritantechnologies.searchApp.sourceMap.BasicSourceMap" paramList="UserGroup"
                    securityManager="default" >

      <SourceMap>
        <params>
          <param name="UserGroup" value="RD" />
        </params>
        <Sources>
          <Source name="Medline" />
          <Source name="Toxline" />
          <Source name="ClinicalTrials" />
       </Sources>
     </SourceMap>

     <SourceMap>
      <params>
        <param name="UserGroup" value="Sales" />
      </params>
       <Sources>
        <Source name="CBSNews" />
        <Source name="BusinessWeek" />
       </Sources>
     </SourceMap>

    </ProxySourceMap>

  </Object>
Search Source for Dynamic source lookup: (Note: this demo uses a simple FlatFileSearchSource, production applications would likely use a search source such as a SQLSearchSource or an LDAPSearchSource):
  <SourceType name="UserGroupSources" type="FlatFileSource"
            sourceFactoryClass="com.raritantechnologies.searchApp.FlatFileSearchSource" 
            queryProcessor="com.raritantechnologies.searchApp.FlatFileSearchSource"
            delimiter="|"
            blankQueryReturnsAll="true"
            refreshInterval="never" >

    <Columns>
      <Column ID="UserName" />
      <Column ID="UserGroup" />
    </Columns>

    <Files>
      <File name="BASE_PATH/WEB-INF/conf/UserGroups/UserGroups.txt" />
    </Files>

  </SourceType>
SearchForm configuration:
    <SearchForm name="DynamicSource" category="UserGroupSources"
         rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormTableRenderer" >

       <SearchElementRenderer rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormRowRenderer" >

          <SearchElementRenderer rendererClass="com.raritantechnologies.searchApp.sourceMap.taglibrary.SourceMapCheckboxSelector"
                             sourceMapName="UserGroupSources"
                             sourceMapType="DynamicSourceMap"
                             cols="4" allKeys="true" />

           <!-- Row 2: Keywords: -->
          <SearchElementRenderer 
                  rendererClass="com.raritantechnologies.searchApp.taglibrary.SearchFormColumnRenderer" >
            <SearchElementRenderer 
                  rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.LabelElementRenderer"
                  label="Keywords"  halign = "left" valign = "center" class= "" width="50"  useTable="false" />
 
            <SearchElementRenderer 
             rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.TextInputElementRenderer"
             fieldID="KY"  width="50"  initClear="false"  initFrom="request" />

        </SearchElementRenderer>

       <SearchElementRenderer 
           rendererClass="com.raritantechnologies.quickstart.taglibrary.forms.SubmitButtonElement"
           submitText="Search" />

      </SearchElementRenderer>

    </SearchForm>