Search in sources :

Example 21 with Activation

use of org.drools.core.spi.Activation in project drools by kiegroup.

the class BinaryHeapQueue method dequeue.

Activation dequeue(final int index) {
    if (index < 1 || index > this.size) {
        // throw new NoSuchElementException();
        return null;
    }
    final Activation result = this.elements[index];
    if (log.isTraceEnabled()) {
        log.trace("Queue Removed {} {}", result.getQueueIndex(), result);
    }
    setElement(index, this.elements[this.size]);
    this.elements[this.size] = null;
    this.size--;
    if (this.size != 0 && index <= this.size) {
        int compareToParent = 0;
        if (index > 1) {
            compareToParent = compare(this.elements[index], this.elements[index / 2]);
        }
        if (index > 1 && compareToParent > 0) {
            percolateUpMaxHeap(index);
        } else {
            percolateDownMaxHeap(index);
        }
    }
    result.setQueued(false);
    result.setQueueIndex(-1);
    return result;
}
Also used : Activation(org.drools.core.spi.Activation)

Example 22 with Activation

use of org.drools.core.spi.Activation in project drools by kiegroup.

the class BinaryHeapQueue method percolateUpMaxHeap.

/**
 * Percolates element up heap from from the position given by the index.
 * <p>
 * Assume it is a maximum heap.
 *
 * @param index the index of the element to be percolated up
 */
protected void percolateUpMaxHeap(final int index) {
    int hole = index;
    Activation element = elements[hole];
    while (hole > 1 && compare(element, elements[hole / 2]) > 0) {
        // save element that is being pushed down
        // as the element "bubble" is percolated up
        final int next = hole / 2;
        setElement(hole, elements[next]);
        hole = next;
    }
    setElement(hole, element);
}
Also used : Activation(org.drools.core.spi.Activation)

Aggregations

Activation (org.drools.core.spi.Activation)22 RuleAgendaItem (org.drools.core.phreak.RuleAgendaItem)6 Test (org.junit.Test)4 RuleTerminalNode (org.drools.core.reteoo.RuleTerminalNode)3 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Iterator (java.util.Iterator)2 AndDescr (org.drools.compiler.lang.descr.AndDescr)2 GlobalDescr (org.drools.compiler.lang.descr.GlobalDescr)2 PackageDescr (org.drools.compiler.lang.descr.PackageDescr)2 RuleDescr (org.drools.compiler.lang.descr.RuleDescr)2 DefaultKnowledgeHelper (org.drools.core.base.DefaultKnowledgeHelper)2 InternalKnowledgePackage (org.drools.core.definitions.InternalKnowledgePackage)2 RuleImpl (org.drools.core.definitions.rule.impl.RuleImpl)2 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)2 StatefulKnowledgeSessionImpl (org.drools.core.impl.StatefulKnowledgeSessionImpl)2 RuleExecutor (org.drools.core.phreak.RuleExecutor)2 CompositeObjectSinkAdapterTest (org.drools.core.reteoo.CompositeObjectSinkAdapterTest)2 LeftTupleImpl (org.drools.core.reteoo.LeftTupleImpl)2 ObjectTypeConf (org.drools.core.reteoo.ObjectTypeConf)2