You can configure the matching rules
for catalog filter conditions. Matching rules connect the data types
of the catalog entry properties, or attribute dictionary attributes
using String, Integer and Float data types. With customization you
can additional matching rules.
Procedure
This example procedure outlines the high-level steps
to create a matching rule, contains
. The conditions
are based on attributes and properties using the String type, the
matches are partial.
- Define the matching rule in the Management Center user
interface:
- LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterAttributeReferenceObjectDefinition.def
- LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterCatentPropertyChildObjectDefinition.def
In these files, find the <wcfPropertyDefinition
propertyName="operator">
.
Append the following code.
<wcfPropertyDefinition propertyName="operator" displayName="${cftCatalogFilterResources.catalogFilterAttributeOperator}" required="true">
……
// This matching rule only applied to String type property or attribute
<PropertyValue displayName="${extCatalogFilterResources.catalogFilterOperatorStringContains}" value="STRING_CONTAINS">
<EnablementCondition conditionId="stringCondition" enablementValue="String" propertyName="attrType" />
</PropertyValue>
</ wcfPropertyDefinition>
- Customize the runtime code to support the new matching
rule. The catalog filter runtime code builds a search expression based
a catalog filter the condition is composed in this expression. Build
a search engine specific expression snippet for the new matching rule.
In summary:
- Create a class such as com.mycompany.catalogfilter.GetContainsStringExpressionCmdImpl that implements the interface com.ibm.commerce.contract.catalogfilter.command.GetConditionExpressionCmd and extends from com.ibm.commerce.command.TaskCommandImpl.
- Implement the logic for building your "contains" condition
expression within performExecute method. The caller calls method setCondition
to condition information including the attribute or property field
name, the matching rule and values in a data object of type com.ibm.commerce.contract.catalogfilter.Condition. Provide
the output to the the caller in the method getExpression (the format
is whose format is search engine specific).
- Using the following SQL statement as a guide, register
the class implementation in the command registry:
insert into CMDREG ("STOREENT_ID", "INTERFACENAME", "DESCRIPTION", "CLASSNAME", "PROPERTIES", "LASTUPDATE", "TARGET", "OPTCOUNTER")
values(0, 'com.ibm.commerce.contract.catalogfilter.command.GetConditionExpressionCmd+STRING_CONTAINS', NULL, 'com.mycompany.catalogfilter.GetContainsStringExpressionCmdImpl', NULL, NULL, 'Local', NULL);