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>