Class DefaultDroolsRuleConditionsGenerator
java.lang.Object
de.hybris.platform.droolsruleengineservices.compiler.impl.DefaultDroolsRuleConditionsGenerator
- All Implemented Interfaces:
DroolsRuleConditionsGenerator
public class DefaultDroolsRuleConditionsGenerator
extends Object
implements DroolsRuleConditionsGenerator
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classprotected static classprotected static class -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuildDependencies(Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions) protected voidcollectTypeConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, Map<String, RuleIrTypeCondition> typeConditions) protected booleandoesNotContainTargetCustomerConditions(RuleIrGroupCondition ruleIrGroupCondition, DroolsRuleGeneratorContext context, String indentation) protected Stringprotected StringevaluatePatternConditionType(DroolsRuleGeneratorContext context, AbstractRuleIrPatternCondition patternCondition) protected StringevaluatePatternConditionType(DroolsRuleGeneratorContext context, AbstractRuleIrPatternCondition patternCondition, Supplier<String> variablePrefixSupplier) protected RuleIrConditionsByTypeevaluateRuleConditionType(List<RuleIrCondition> conditions) protected voidexpandDependencies(Set<DefaultDroolsRuleConditionsGenerator.Dependency> dependencies) protected Collection<RuleIrCondition>filterOutNonGroupConditions(Collection<RuleIrCondition> conditions) protected RuleIrVariablefindVariable(DroolsRuleGeneratorContext context, String variableName) protected voidfindVariablesOfPatternConditions(Collection<String> variableNames, Collection<RuleIrCondition> conditions) protected voidgenerateBooleanConditions(Map<Boolean, Collection<AbstractRuleIrBooleanCondition>> booleanConditions, StringJoiner conditionsJoiner, String indentation) generateConditions(DroolsRuleGeneratorContext context, String indentation) Generates the conditions for the Drools rule engine.protected StringgenerateConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, RuleIrGroupOperator operator, String conditionPrefix, String indentation) protected voidgenerateExecutableConditions(DroolsRuleGeneratorContext context, List<RuleIrExecutableCondition> executableConditions, StringJoiner conditionsJoiner, String indentation) protected voidgenerateExistsConditions(DroolsRuleGeneratorContext context, List<RuleIrExistsCondition> existsConditions, StringJoiner conditionsJoiner, String indentation) protected voidgenerateGroupConditions(DroolsRuleGeneratorContext context, List<RuleIrGroupCondition> groupConditions, StringJoiner conditionsJoiner, String indentation) protected voidgenerateGroupConditions(List<RuleIrGroupCondition> groupConditions, Function<RuleIrGroupCondition, String> generateConditionsFunction, StringJoiner conditionsJoiner) protected voidgenerateNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, Function<RuleIrNotCondition, String> generateConditionsSupplier, StringJoiner conditionsJoiner) protected voidgenerateNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, StringJoiner conditionsJoiner, String indentation) protected voidgeneratePatternConditions(DroolsRuleGeneratorContext context, Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions, RuleIrGroupOperator groupOperator, StringJoiner conditionsJoiner, String indentation) Generates the required facts check pattern for the rule's LHSGenerates the required type variables for the rule's LHSprotected voidgenerateUniqueFactMatchingCondition(DroolsRuleGeneratorContext context, RuleIrVariable variable, StringBuilder conditionsBuffer, Supplier<String> variablePrefixSupplier) adds additional conditions likethis != $v4_raoto OrderEntryRAO variables.protected StringgenerateWhenConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, RuleIrGroupOperator operator, String conditionPrefix, String indentation) protected voidgenerateWhenGroupConditions(DroolsRuleGeneratorContext context, List<RuleIrGroupCondition> groupConditions, StringJoiner conditionsJoiner, String indentation) protected voidgenerateWhenNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, StringJoiner conditionsJoiner, String indentation) protected voidgenerateWhenPatternConditions(DroolsRuleGeneratorContext context, Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions, RuleIrGroupOperator groupOperator, StringJoiner conditionsJoiner, String indentation) protected Collection<RuleIrCondition>getConditionsInGroups(Collection<? extends RuleIrCondition> conditions) protected ConfigurationServiceprotected DroolsStringUtilsprotected booleanisAnyVariableReferredInAttrRelConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) protected booleanisAnyVariableReferredInConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) protected booleanisAnyVariableReferredInPatternConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) protected booleanisConditionDependentOnOthers(RuleIrCondition condition, Collection<? extends RuleIrCondition> others, Collection<String> definedVariables) protected booleanisVariableTerminal(String variableName, DroolsRuleGeneratorContext context) protected booleanisVariableTerminal(String variableName, Collection<RuleIrCondition> conditions) voidsetConfigurationService(ConfigurationService configurationService) voidsetDroolsRuleValueFormatter(DroolsRuleValueFormatter droolsRuleValueFormatter) voidsetDroolsStringUtils(DroolsStringUtils droolsStringUtils) voidsetExcludedQueryVariableClassNames(List<String> excludedQueryVariableClassNames) voidsetTypesToSkipOperatorEvaluation(List<Class<?>> typesToSkipOperatorEvaluation)
-
Field Details
-
NON_SUPPORTED_CONDITION
- See Also:
-
BUFFER_SIZE
public static final int BUFFER_SIZE- See Also:
-
-
Constructor Details
-
DefaultDroolsRuleConditionsGenerator
public DefaultDroolsRuleConditionsGenerator()
-
-
Method Details
-
generateConditions
Description copied from interface:DroolsRuleConditionsGeneratorGenerates the conditions for the Drools rule engine.- Specified by:
generateConditionsin interfaceDroolsRuleConditionsGenerator- Parameters:
context- - the drools rule generator contextindentation- - the indentation- Returns:
- the String representation
-
generateRequiredFactsCheckPattern
Description copied from interface:DroolsRuleConditionsGeneratorGenerates the required facts check pattern for the rule's LHS- Specified by:
generateRequiredFactsCheckPatternin interfaceDroolsRuleConditionsGenerator- Parameters:
context- - the drools rule generator context- Returns:
- string, containing the check pattern
-
generateRequiredTypeVariables
Description copied from interface:DroolsRuleConditionsGeneratorGenerates the required type variables for the rule's LHS- Specified by:
generateRequiredTypeVariablesin interfaceDroolsRuleConditionsGenerator- Parameters:
context- - the drools rule generator context- Returns:
- string, containing the type variables
-
collectTypeConditions
protected void collectTypeConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, Map<String, RuleIrTypeCondition> typeConditions) -
generateWhenConditions
protected String generateWhenConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, RuleIrGroupOperator operator, String conditionPrefix, String indentation) -
doesNotContainTargetCustomerConditions
protected boolean doesNotContainTargetCustomerConditions(RuleIrGroupCondition ruleIrGroupCondition, DroolsRuleGeneratorContext context, String indentation) -
isConditionDependentOnOthers
protected boolean isConditionDependentOnOthers(RuleIrCondition condition, Collection<? extends RuleIrCondition> others, Collection<String> definedVariables) -
isAnyVariableReferredInConditions
protected boolean isAnyVariableReferredInConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) -
isAnyVariableReferredInPatternConditions
protected boolean isAnyVariableReferredInPatternConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) -
isAnyVariableReferredInAttrRelConditions
protected boolean isAnyVariableReferredInAttrRelConditions(Collection<String> variableNamesToCheck, Collection<? extends RuleIrCondition> others) -
findVariablesOfPatternConditions
protected void findVariablesOfPatternConditions(Collection<String> variableNames, Collection<RuleIrCondition> conditions) -
getConditionsInGroups
protected Collection<RuleIrCondition> getConditionsInGroups(Collection<? extends RuleIrCondition> conditions) -
filterOutNonGroupConditions
protected Collection<RuleIrCondition> filterOutNonGroupConditions(Collection<RuleIrCondition> conditions) -
generateConditions
protected String generateConditions(DroolsRuleGeneratorContext context, List<RuleIrCondition> conditions, RuleIrGroupOperator operator, String conditionPrefix, String indentation) -
evaluateRuleConditionType
-
generateBooleanConditions
protected void generateBooleanConditions(Map<Boolean, Collection<AbstractRuleIrBooleanCondition>> booleanConditions, StringJoiner conditionsJoiner, String indentation) -
generateWhenPatternConditions
protected void generateWhenPatternConditions(DroolsRuleGeneratorContext context, Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions, RuleIrGroupOperator groupOperator, StringJoiner conditionsJoiner, String indentation) -
isVariableTerminal
-
isVariableTerminal
-
generatePatternConditions
protected void generatePatternConditions(DroolsRuleGeneratorContext context, Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions, RuleIrGroupOperator groupOperator, StringJoiner conditionsJoiner, String indentation) -
evaluateAttributeNameAndOperator
-
evaluatePatternConditionType
protected String evaluatePatternConditionType(DroolsRuleGeneratorContext context, AbstractRuleIrPatternCondition patternCondition) -
evaluatePatternConditionType
protected String evaluatePatternConditionType(DroolsRuleGeneratorContext context, AbstractRuleIrPatternCondition patternCondition, Supplier<String> variablePrefixSupplier) -
generateUniqueFactMatchingCondition
protected void generateUniqueFactMatchingCondition(DroolsRuleGeneratorContext context, RuleIrVariable variable, StringBuilder conditionsBuffer, Supplier<String> variablePrefixSupplier) adds additional conditions likethis != $v4_raoto OrderEntryRAO variables. Example:$rao_v5 := OrderEntryRAO(this != $rao_v4, productCode == "478828". This is a performance improvement that reduces matching efforts for drools. Note: If multiple containers define the same set of products / categories this can have a functional impact (i.e. the promotion might not fire) if the containers are supposed to match the same cart entry. Ideally, containers should not contain any overlap in their defined products/categories, but if business needs requires such a setup of containers, this functionality can be turned off by setting the properydroolsruleengineservices.generate.unique.fact.matching.condition=false, followed by recompilation of the promotions.- Parameters:
context-variable-conditionsBuffer-variablePrefixSupplier-
-
generateWhenGroupConditions
protected void generateWhenGroupConditions(DroolsRuleGeneratorContext context, List<RuleIrGroupCondition> groupConditions, StringJoiner conditionsJoiner, String indentation) -
generateGroupConditions
protected void generateGroupConditions(DroolsRuleGeneratorContext context, List<RuleIrGroupCondition> groupConditions, StringJoiner conditionsJoiner, String indentation) -
generateGroupConditions
protected void generateGroupConditions(List<RuleIrGroupCondition> groupConditions, Function<RuleIrGroupCondition, String> generateConditionsFunction, StringJoiner conditionsJoiner) -
generateExistsConditions
protected void generateExistsConditions(DroolsRuleGeneratorContext context, List<RuleIrExistsCondition> existsConditions, StringJoiner conditionsJoiner, String indentation) -
generateNotConditions
protected void generateNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, StringJoiner conditionsJoiner, String indentation) -
generateWhenNotConditions
protected void generateWhenNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, StringJoiner conditionsJoiner, String indentation) -
generateNotConditions
protected void generateNotConditions(DroolsRuleGeneratorContext context, List<RuleIrNotCondition> notConditions, Function<RuleIrNotCondition, String> generateConditionsSupplier, StringJoiner conditionsJoiner) -
generateExecutableConditions
protected void generateExecutableConditions(DroolsRuleGeneratorContext context, List<RuleIrExecutableCondition> executableConditions, StringJoiner conditionsJoiner, String indentation) -
findVariable
-
buildDependencies
protected Set<DefaultDroolsRuleConditionsGenerator.Dependency> buildDependencies(Map<String, Collection<AbstractRuleIrPatternCondition>> patternConditions) -
expandDependencies
protected void expandDependencies(Set<DefaultDroolsRuleConditionsGenerator.Dependency> dependencies) -
getDroolsRuleValueFormatter
-
setDroolsRuleValueFormatter
-
getExcludedQueryVariableClassNames
-
setExcludedQueryVariableClassNames
-
getTypesToSkipOperatorEvaluation
-
setTypesToSkipOperatorEvaluation
-
getConfigurationService
-
setConfigurationService
-
getDroolsStringUtils
-
setDroolsStringUtils
-