Search in sources :

Example 36 with BetaNodeFieldConstraint

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

the class TripleBetaConstraintsTest method testOneIndxed.

@Test
public void testOneIndxed() {
    BetaNodeFieldConstraint constraint0 = getConstraint("cheeseType0", Operator.EQUAL, "type", Cheese.class);
    BetaNodeFieldConstraint constraint1 = getConstraint("cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class);
    BetaNodeFieldConstraint constraint3 = getConstraint("cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class);
    BetaNodeFieldConstraint[] constraints = new BetaNodeFieldConstraint[] { constraint0, constraint1, constraint3 };
    checkBetaConstraints(constraints, TripleBetaConstraints.class);
    constraint0 = getConstraint("cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class);
    constraint1 = getConstraint("cheeseType1", Operator.EQUAL, "type", Cheese.class);
    constraint3 = getConstraint("cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class);
    constraints = new BetaNodeFieldConstraint[] { constraint0, constraint1, constraint3 };
    checkBetaConstraints(constraints, TripleBetaConstraints.class);
    constraint0 = getConstraint("cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class);
    constraint1 = getConstraint("cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class);
    constraint3 = getConstraint("cheeseType2", Operator.EQUAL, "type", Cheese.class);
    constraints = new BetaNodeFieldConstraint[] { constraint0, constraint1, constraint3 };
    checkBetaConstraints(constraints, TripleBetaConstraints.class);
}
Also used : Cheese(org.drools.core.test.model.Cheese) BetaNodeFieldConstraint(org.drools.core.spi.BetaNodeFieldConstraint) Test(org.junit.Test)

Example 37 with BetaNodeFieldConstraint

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

the class SingleBetaConstraintsTest method testNotIndexedForComparison.

@Test
public void testNotIndexedForComparison() {
    BetaNodeFieldConstraint constraint0 = getConstraint("cheeseType0", Operator.LESS, "type", Cheese.class);
    BetaNodeFieldConstraint[] constraints = new BetaNodeFieldConstraint[] { constraint0 };
    checkBetaConstraints(constraints, SingleBetaConstraints.class, NodeTypeEnums.JoinNode);
}
Also used : BetaNodeFieldConstraint(org.drools.core.spi.BetaNodeFieldConstraint) Test(org.junit.Test)

Example 38 with BetaNodeFieldConstraint

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

the class SingleBetaConstraintsTest method testIndexedForComparison.

@Test
public void testIndexedForComparison() {
    BetaNodeFieldConstraint constraint0 = getConstraint("cheeseType0", Operator.LESS, "type", Cheese.class);
    BetaNodeFieldConstraint[] constraints = new BetaNodeFieldConstraint[] { constraint0 };
    checkBetaConstraints(constraints, SingleBetaConstraints.class, NodeTypeEnums.ExistsNode);
}
Also used : BetaNodeFieldConstraint(org.drools.core.spi.BetaNodeFieldConstraint) Test(org.junit.Test)

Example 39 with BetaNodeFieldConstraint

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

the class IndexUtil method swap.

private static void swap(BetaNodeFieldConstraint[] constraints, int p1, int p2) {
    if (p1 != p2) {
        BetaNodeFieldConstraint temp = constraints[p2];
        constraints[p2] = constraints[p1];
        constraints[p1] = temp;
    }
}
Also used : BetaNodeFieldConstraint(org.drools.core.spi.BetaNodeFieldConstraint)

Example 40 with BetaNodeFieldConstraint

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

the class IndexUtil method compositeAllowed.

public static boolean compositeAllowed(BetaNodeFieldConstraint[] constraints, short betaNodeType) {
    // 1) If there is 1 or more unification restrictions it cannot be composite
    // 2) Ensures any non unification restrictions are first
    int firstUnification = -1;
    int firstNonUnification = -1;
    for (int i = 0, length = constraints.length; i < length; i++) {
        if (isIndexable(constraints[i], betaNodeType)) {
            final boolean isUnification = ((IndexableConstraint) constraints[i]).isUnification();
            if (isUnification && firstUnification == -1) {
                firstUnification = i;
            } else if (!isUnification && firstNonUnification == -1) {
                firstNonUnification = i;
            }
        }
        if (firstUnification != -1 && firstNonUnification != -1) {
            break;
        }
    }
    if (firstNonUnification != -1 && firstNonUnification > 0) {
        // Make sure a nonunification indexable constraint is first
        swap(constraints, 0, firstNonUnification);
    }
    return (firstUnification == -1);
}
Also used : IndexableConstraint(org.drools.core.rule.IndexableConstraint) BetaNodeFieldConstraint(org.drools.core.spi.BetaNodeFieldConstraint) Constraint(org.drools.core.spi.Constraint) MvelConstraint(org.drools.core.rule.constraint.MvelConstraint) IndexableConstraint(org.drools.core.rule.IndexableConstraint)

Aggregations

BetaNodeFieldConstraint (org.drools.core.spi.BetaNodeFieldConstraint)43 Test (org.junit.Test)28 MvelConstraint (org.drools.core.rule.constraint.MvelConstraint)8 IndexableConstraint (org.drools.core.rule.IndexableConstraint)7 Cheese (org.drools.core.test.model.Cheese)6 ArrayList (java.util.ArrayList)5 Constraint (org.drools.core.spi.Constraint)5 BetaConstraints (org.drools.core.common.BetaConstraints)4 MutableTypeConstraint (org.drools.core.rule.MutableTypeConstraint)4 RuleBaseConfiguration (org.drools.core.RuleBaseConfiguration)3 BetaMemory (org.drools.core.reteoo.BetaMemory)3 AlphaNodeFieldConstraint (org.drools.core.spi.AlphaNodeFieldConstraint)3 TupleIndexHashTable (org.drools.core.util.index.TupleIndexHashTable)3 TupleList (org.drools.core.util.index.TupleList)3 List (java.util.List)2 InternalFactHandle (org.drools.core.common.InternalFactHandle)2 SingleBetaConstraints (org.drools.core.common.SingleBetaConstraints)2 TupleStartEqualsConstraint (org.drools.core.common.TupleStartEqualsConstraint)2 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)2 AccumulateNode (org.drools.core.reteoo.AccumulateNode)2