[jboss-svn-commits] JBL Code SVN: r6749 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: base/evaluators reteoo util
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 11 16:27:35 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-10-11 16:27:30 -0400 (Wed, 11 Oct 2006)
New Revision: 6749
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/LinkedList.java
Log:
JBRULES-498 Optimised HashMap implementations
-minor tweaks
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java 2006-10-11 19:54:48 UTC (rev 6748)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java 2006-10-11 20:27:30 UTC (rev 6749)
@@ -71,13 +71,11 @@
}
public boolean evaluate(final Object object1,
- final Object object2) {
-// return ((Integer) object1).intValue() == ((Integer) object2).intValue();
-
+ final Object object2) {
if ( object1 == null ) {
return object2 == null;
}
- return ((Number) object1).equals( object2 );
+ return object1.equals( object2 );
}
public String toString() {
@@ -98,12 +96,11 @@
}
public boolean evaluate(final Object object1,
- final Object object2) {
-// return ((Integer) object1).intValue() != ((Integer) object2).intValue();
+ final Object object2) {
if ( object1 == null ) {
return (object2 != null);
}
- return !((Number) object1).equals( object2 );
+ return !object1.equals( object2 );
}
public String toString() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2006-10-11 19:54:48 UTC (rev 6748)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2006-10-11 20:27:30 UTC (rev 6749)
@@ -242,6 +242,7 @@
BetaMemory memory = null;
if ( constraints != null ) {
+
for ( LinkedListEntry entry = (LinkedListEntry) constraints.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
BetaNodeFieldConstraint constraint = (BetaNodeFieldConstraint) entry.getObject();
if ( constraint.getClass() == VariableConstraint.class ) {
@@ -249,8 +250,11 @@
FieldExtractor extractor = variableConstraint.getFieldExtractor();
Evaluator evaluator = variableConstraint.getEvaluator();
if ( evaluator.getOperator() == Operator.EQUAL ) {
- // remove this entry
- //constraints.remove( entry );
+ // make suret the indexed constraint is first
+ if ( constraints.getFirst() != entry ) {
+ constraints.remove( entry );
+ constraints.insertAfter( null, entry );
+ }
memory = new BetaMemory( new TupleHashTable(),
new FieldIndexHashTable( extractor,
variableConstraint.getRequiredDeclarations()[0] ) );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/LinkedList.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-10-11 19:54:48 UTC (rev 6748)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/LinkedList.java 2006-10-11 20:27:30 UTC (rev 6749)
@@ -145,6 +145,27 @@
return node;
}
+ public void insertAfter(LinkedListNode existingNode, LinkedListNode newNode) {
+ if ( newNode.getPrevious() != null || newNode.getNext() != null ) {
+ //do nothing if this node is already inserted somewhere
+ return;
+ }
+
+ if (existingNode == null ) {
+ // if existing node is null, then insert it as a first node
+ LinkedListNode node = this.firstNode;
+ node.setPrevious( newNode );
+ newNode.setNext( node );
+ this.firstNode = newNode;
+ } else {
+ existingNode.getNext().setPrevious( newNode );
+ newNode.setNext( existingNode.getNext() );
+ existingNode.setNext( newNode );
+ newNode.setPrevious( existingNode );
+ }
+ this.size++;
+ }
+
/**
* Remove the last node from the list. The previous node then becomes the last node. If this is the last
* node then both first and last node references are set to null.
More information about the jboss-svn-commits
mailing list