com.raritantechnologies.searchApp.formatters
Class NestedResultGenerator

java.lang.Object
  extended bycom.raritantechnologies.searchApp.formatters.NestedResultGenerator
All Implemented Interfaces:
IConfigurable, IFieldFormatter

public class NestedResultGenerator
extends java.lang.Object
implements IFieldFormatter

Generates a nested result set from a set of parallel arrays, multi-value fields or numbered fields.

XML Configuration Template:
   <FieldFormatter formatterClass="com.raritantechnologies.searchApp.formatters.NestedResultGenerator" 
                      nestedFieldName="[name for parent tag of nested result]" 
                      fieldList="[fields to include in the nested result separated by a comma]"
                      arrayPattern="[$ (default) - value to be replaced by a number of the field being processed]" 
                      maxArraySize="[number of occurrences of the array fields]"
                      zeroBased="[false (default) - specifies if field array starts with 0 (true) or 1 (false)]" >
   </FieldFormatter>
   
   

The following example shows how to set things up for a parallel array:

A screen has the following data entry boxes:

Names Title

Steve Accountant
Lucy Manager
Mary Programmer
Bob Analyst
Jeff Networking

The above fields are defined in the configuration xml for the application as follows:

Names_1 Title_1
Names_2 Title_2
Names_3 Title_3
Names_4 Title_4
Names_5 Title_5

By using the following configuration, the class will generate the XML below:

<FieldFormatter formatterClass="com.raritantechnologies.searchApp.formatters.NestedResultGenerator" nestedFieldName="Personnel" fieldList="Names,Title" arrayPattern="$" maxArraySize="5" zeroBased="false" > </FieldFormatter> <Personnel> <ResultSet> <result> <CollectionGroupName><![CDATA[Steve]]></CollectionGroupName> <CollectionList><![CDATA[Accountant]]></CollectionList> </result> <result> <CollectionGroupName><![CDATA[Lucy]]></CollectionGroupName> <CollectionList><![CDATA[Manager]]></CollectionList> </result> <result> <CollectionGroupName><![CDATA[Mary]]></CollectionGroupName> <CollectionList><![CDATA[Programmer]]></CollectionList> </result> <result> <CollectionGroupName><![CDATA[Bob]]></CollectionGroupName> <CollectionList><![CDATA[Analyst]]></CollectionList> </result> <result> <CollectionGroupName><![CDATA[Jeff]]></CollectionGroupName> <CollectionList><![CDATA[Networking]]></CollectionList> </result> </ResultSet> </Personnel>


Developed by Raritan Technologies .

Author:
Ted Sullivan, Ron Pohle

Field Summary
 
Fields inherited from interface com.raritantechnologies.searchApp.IFieldFormatter
TEMPLATE
 
Constructor Summary
NestedResultGenerator()
           
 
Method Summary
 java.lang.String formatField(java.lang.String fieldVal)
          Reformats a field value.
 java.lang.String formatField(java.lang.String sessionID, java.lang.String fieldVal)
          Reformats a field value.
 void formatResultField(IResult res)
          Formats a result field "in place".
 void formatResultField(java.lang.String sessionID, IResult res)
          Formats a result field "in place", incorporating session context.
 java.lang.String getConfigurationXML()
           
 java.lang.String getConfigurationXML(java.lang.String configurationTemplate)
           
 java.lang.String getFieldName()
          Returns the name of the result field that this formatter can reformat.
 void initialize(org.w3c.dom.Element elem)
          Initializes the formatter from configuration XML element.
 IResultSet processFieldList(IResult res)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NestedResultGenerator

public NestedResultGenerator()
Method Detail

formatResultField

public void formatResultField(IResult res)
Description copied from interface: IFieldFormatter
Formats a result field "in place".

Specified by:
formatResultField in interface IFieldFormatter
Parameters:
res - The result object that is to be formatted.

formatResultField

public void formatResultField(java.lang.String sessionID,
                              IResult res)
Description copied from interface: IFieldFormatter
Formats a result field "in place", incorporating session context.

Specified by:
formatResultField in interface IFieldFormatter
Parameters:
sessionID - The session key needed to lookup any session content stored in the session data cache.
res - The result object that is to be formatted.

getFieldName

public java.lang.String getFieldName()
Description copied from interface: IFieldFormatter
Returns the name of the result field that this formatter can reformat.

Specified by:
getFieldName in interface IFieldFormatter

formatField

public java.lang.String formatField(java.lang.String fieldVal)
Description copied from interface: IFieldFormatter
Reformats a field value.

Specified by:
formatField in interface IFieldFormatter
Parameters:
fieldVal - The field value to be reformatted.
Returns:
The reformatted field value.

formatField

public java.lang.String formatField(java.lang.String sessionID,
                                    java.lang.String fieldVal)
Description copied from interface: IFieldFormatter
Reformats a field value.

Specified by:
formatField in interface IFieldFormatter
Parameters:
sessionID - The session key needed to lookup any session content stored in the session data cache.
fieldVal - The field value to be reformatted.
Returns:
The reformatted field value.

initialize

public void initialize(org.w3c.dom.Element elem)
Initializes the formatter from configuration XML element.

Specified by:
initialize in interface IFieldFormatter

getConfigurationXML

public java.lang.String getConfigurationXML()
Specified by:
getConfigurationXML in interface IFieldFormatter

getConfigurationXML

public java.lang.String getConfigurationXML(java.lang.String configurationTemplate)
Specified by:
getConfigurationXML in interface IFieldFormatter

processFieldList

public IResultSet processFieldList(IResult res)