Class EqualityPatternOptimizer

  • public class EqualityPatternOptimizer
    extends PatternOptimizer
    A PatternOptimizer is an agent responsible for optimizing a particular class of patterns. It has two parts: a meta-pattern which determines which kinds of pattern it recognizes, and an action part which extracts characteristics and preconditions whose evaluation can be shared by all the rules in a rule chain
    • Constructor Detail

      • EqualityPatternOptimizer

        public EqualityPatternOptimizer()
    • Method Detail

      • appliesTo

        public boolean appliesTo​(Pattern pattern)
        Description copied from class: PatternOptimizer
        Ask whether this pattern optimizer is applicable to a particular pattern
        Specified by:
        appliesTo in class PatternOptimizer
        pattern - the pattern in question
        true if this pattern optimizer is applicable to this pattern
      • process

        public void process​(RuleEE rule,
                            Pattern pattern,
                            java.util.Map<Precondition,​java.util.List<RuleEE>> preconditions,
                            java.util.Map<Characteristic,​Characteristic> characteristics)
        Description copied from class: PatternOptimizer
        Process a particular pattern, potentially adding to the list of preconditions and characteristics maintained when processing a set of rules
        Specified by:
        process in class PatternOptimizer
        rule - the rule to be processed
        pattern - the pattern used by this rule
        preconditions - a collection of preconditions maintained for a set of rules
        characteristics - a collection of characteristics maintained for a set of rules. This is maintained as a map from characteristics to characteristics in which the key and the value are always the same; the reason for this curious structure is that when an equivalent characteristic is already present in the map, we want to return the existing characteristic to replace the new one; a Java Set does not have any (efficient) operation to "find the existing value in the set that is equal to X".