Class PatternOptimizer

    • Constructor Detail

      • PatternOptimizer

        public PatternOptimizer()
    • Method Detail

      • appliesTo

        public abstract boolean appliesTo​(Pattern pattern)
        Ask whether this pattern optimizer is applicable to a particular pattern
        Parameters:
        pattern - the pattern in question
        Returns:
        true if this pattern optimizer is applicable to this pattern
      • process

        public abstract void process​(RuleEE rule,
                                     Pattern pattern,
                                     java.util.Map<Precondition,​java.util.List<RuleEE>> preconditions,
                                     java.util.Map<Characteristic,​Characteristic> characteristics)
        Process a particular pattern, potentially adding to the list of preconditions and characteristics maintained when processing a set of rules
        Parameters:
        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".
      • allocateCharacteristic

        protected Characteristic allocateCharacteristic​(java.util.Map<Characteristic,​Characteristic> characteristics,
                                                        Characteristic newChic)
        Allocate a new characteristic, that is, a property of nodes or other items that may potentially be used in evaluating the preconditions of more than one pattern.
        Parameters:
        characteristics - The set of characteristics to be added to. This maintained as a map from characteristics to characteristics for reasons explained at process(RuleEE, Pattern, Map, Map).
        newChic - a new characteristic to be added to the set.
        Returns:
        the supplied characteristic unless there was already an equivalent characteristic in the set, in which case an equivalent characteristic that should be used in place of the new one.