[jboss-svn-commits] JBL Code SVN: r19293 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 28 02:11:35 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-03-28 02:11:35 -0400 (Fri, 28 Mar 2008)
New Revision: 19293
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
Log:
JBRULES-1520 RightTuple merge for asymmetrical Rete propagations
-MemoryVisitor now compiles but is not yet completed
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java 2008-03-28 06:05:08 UTC (rev 19292)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/MemoryVisitor.java 2008-03-28 06:11:35 UTC (rev 19293)
@@ -15,7 +15,6 @@
import org.drools.util.RightTupleIndexHashTable;
import org.drools.util.RightTupleList;
import org.drools.util.ReflectiveVisitor;
-import org.drools.util.RightTupleIndexHashTable.FieldIndexEntry;
public class MemoryVisitor extends ReflectiveVisitor
implements
@@ -126,7 +125,7 @@
try {
final BetaMemory memory = (BetaMemory) this.workingMemory.getNodeMemory( node );
checkObjectHashTable( memory.getRightTupleMemory() );
- checkTupleMemory( memory.getLeftTupleMemory() );
+ checkLeftTupleMemory( memory.getLeftTupleMemory() );
} catch ( final Exception e ) {
e.printStackTrace();
}
@@ -151,7 +150,7 @@
try {
final BetaMemory memory = (BetaMemory) this.workingMemory.getNodeMemory( node );
checkObjectHashTable( memory.getRightTupleMemory() );
- checkTupleMemory( memory.getLeftTupleMemory() );
+ checkLeftTupleMemory( memory.getLeftTupleMemory() );
} catch ( final Exception e ) {
e.printStackTrace();
}
@@ -174,7 +173,7 @@
public void visitTerminalNode(final RuleTerminalNode node) {
System.out.println( indent() + node );
final TerminalNodeMemory memory = (TerminalNodeMemory) this.workingMemory.getNodeMemory( node );
- checkTupleMemory( memory.getTupleMemory() );
+ checkLeftTupleMemory( memory.getTupleMemory() );
}
// private void checkObjectHashMap(final ObjectHashMap map) {
@@ -194,25 +193,18 @@
private void checkObjectHashTable(final RightTupleMemory memory) {
if ( memory instanceof RightTupleList ) {
- checkFactHashTable( (RightTupleList) memory );
+ checkRightTupleList( (RightTupleList) memory );
} else if ( memory instanceof RightTupleIndexHashTable ) {
- checkFieldIndexHashTable( (RightTupleIndexHashTable) memory );
+ checkRightTupleIndexHashTable( (RightTupleIndexHashTable) memory );
} else {
throw new RuntimeException( memory.getClass() + " should not be here" );
}
}
- private void checkFactHashTable(final RightTupleList memory) {
- final Entry[] entries = memory.getTable();
+ private void checkRightTupleList(final RightTupleList memory) {
int count = 0;
- for ( int i = 0, length = entries.length; i < length; i++ ) {
- if ( entries[i] != null ) {
- Entry entry = entries[i];
- while ( entry != null ) {
+ for ( RightTuple rightTuple = memory.getFirst( null ); rightTuple != null; rightTuple = (RightTuple) rightTuple.getNext() ) {
count++;
- entry = entry.getNext();
- }
- }
}
System.out.println( indent() + "FactHashTable: " + memory.size() + ":" + count );
@@ -221,16 +213,16 @@
}
}
- private void checkFieldIndexHashTable(final RightTupleIndexHashTable memory) {
+ private void checkRightTupleIndexHashTable(final RightTupleIndexHashTable memory) {
final Entry[] entries = memory.getTable();
int factCount = 0;
int bucketCount = 0;
for ( int i = 0, length = entries.length; i < length; i++ ) {
if ( entries[i] != null ) {
- FieldIndexEntry fieldIndexEntry = (FieldIndexEntry) entries[i];
- while ( fieldIndexEntry != null ) {
- if ( fieldIndexEntry.getFirst() != null ) {
- Entry entry = fieldIndexEntry.getFirst();
+ RightTupleList rightTupleList = (RightTupleList) entries[i];
+ while ( rightTupleList != null ) {
+ if ( rightTupleList.first != null ) {
+ Entry entry = rightTupleList.first;
while ( entry != null ) {
entry = entry.getNext();
factCount++;
@@ -238,7 +230,7 @@
} else {
System.out.println( "error : fieldIndexHashTable cannot have empty FieldIndexEntry objects" );
}
- fieldIndexEntry = (FieldIndexEntry) fieldIndexEntry.getNext();
+ rightTupleList = (RightTupleList) rightTupleList.getNext();
bucketCount++;
}
}
@@ -261,23 +253,24 @@
}
}
- private void checkTupleMemory(final LeftTupleMemory memory) {
- final Entry[] entries = memory.getTable();
- int count = 0;
- for ( int i = 0, length = entries.length; i < length; i++ ) {
- if ( entries[i] != null ) {
- Entry entry = entries[i];
- while ( entry != null ) {
- count++;
- entry = entry.getNext();
- }
- }
- }
-
- System.out.println( indent() + "TupleMemory: " + memory.size() + ":" + count );
- if ( memory.size() != count ) {
- System.out.println( indent() + "error" );
- }
+ private void checkLeftTupleMemory(final LeftTupleMemory memory) {
+ // @todo need to implement this correctly, as we now have indexed and none indxed tuple memories.
+// final Entry[] entries = memory.getTable();
+// int count = 0;
+// for ( int i = 0, length = entries.length; i < length; i++ ) {
+// if ( entries[i] != null ) {
+// Entry entry = entries[i];
+// while ( entry != null ) {
+// count++;
+// entry = entry.getNext();
+// }
+// }
+// }
+//
+// System.out.println( indent() + "TupleMemory: " + memory.size() + ":" + count );
+// if ( memory.size() != count ) {
+// System.out.println( indent() + "error" );
+// }
}
private String indent() {
More information about the jboss-svn-commits
mailing list