[jboss-svn-commits] JBL Code SVN: r7158 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: base/evaluators common spi util
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 26 21:12:50 EDT 2006
Author: tirelli
Date: 2006-10-26 21:12:32 -0400 (Thu, 26 Oct 2006)
New Revision: 7158
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FactTemplateFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java
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/LongFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/FactHandleIndexHashTable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/TupleIndexHashTable.java
Log:
JBRULES-527: adding primitive support to indexing
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ArrayFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -101,9 +101,21 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "Array ==";
}
+
}
static class ArrayNotEqualEvaluator extends BaseEvaluator {
@@ -124,7 +136,7 @@
final Object value1 = extractor.getValue( object1 );
final Object value2 = object2.getValue();
if ( value1 == null ) {
- return value2 == null;
+ return value2 != null;
}
return !value1.equals( value2 );
}
@@ -133,7 +145,7 @@
final Object left) {
final Object value = context.declaration.getExtractor().getValue( left );
if ( value == null ) {
- return ((ObjectVariableContextEntry) context).right == null;
+ return ((ObjectVariableContextEntry) context).right != null;
}
return !value.equals( ((ObjectVariableContextEntry) context).right );
}
@@ -142,11 +154,22 @@
final Object right) {
final Object value = context.extractor.getValue( right );
if ( ((ObjectVariableContextEntry) context).left == null ) {
- return value == null;
+ return value != null;
}
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 != null;
+ }
+ return !value1.equals( value2 );
+ }
+
public String toString() {
return "Array !=";
}
@@ -169,36 +192,36 @@
final FieldValue object2) {
final Object value = object2.getValue();
final Object[] array = (Object[]) extractor.getValue( object1 );
-
- if ( Arrays.binarySearch( array,
- value ) == -1 ) {
- return false;
- }
- return true;
+ return Arrays.binarySearch( array,
+ value ) != -1;
}
public boolean evaluateCachedRight(final VariableContextEntry context,
final Object left) {
final Object value = context.declaration.getExtractor().getValue( left );
final Object[] array = (Object[]) ((ObjectVariableContextEntry) context).right;
- if ( Arrays.binarySearch( array,
- value ) == -1 ) {
- return false;
- }
- return true;
+ return Arrays.binarySearch( array,
+ value ) != -1;
}
public boolean evaluateCachedLeft(final VariableContextEntry context,
final Object right) {
final Object value = ((ObjectVariableContextEntry) context).left;
final Object[] array = (Object[]) context.extractor.getValue( right );
- if ( Arrays.binarySearch( array,
- value ) == -1 ) {
- return false;
- }
- return true;
+ return Arrays.binarySearch( array,
+ value ) != -1;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value = extractor.getValue( object2 );
+ final Object[] array = (Object[]) extractor.getValue( object1 );
+
+ return Arrays.binarySearch( array,
+ value ) != -1 ;
+ }
+
public String toString() {
return "Array contains";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -103,9 +103,21 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "BigDecimal ==";
}
+
}
static class BigDecimalNotEqualEvaluator extends BaseEvaluator {
@@ -149,6 +161,17 @@
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 != null;
+ }
+ return !value1.equals( value2 );
+ }
+
public String toString() {
return "BigDecimal !=";
}
@@ -185,6 +208,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) < 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigDecimal comp = (BigDecimal) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) < 0;
+ }
+
public String toString() {
return "BigDecimal <";
}
@@ -221,6 +251,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) <= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigDecimal comp = (BigDecimal) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) <= 0;
+ }
+
public String toString() {
return "BigDecimal <=";
}
@@ -257,6 +294,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) > 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigDecimal comp = (BigDecimal) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) > 0;
+ }
+
public String toString() {
return "BigDecimal >";
}
@@ -293,6 +337,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) >= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigDecimal comp = (BigDecimal) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) >= 0;
+ }
+
public String toString() {
return "BigDecimal >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -103,6 +103,17 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "BigInteger ==";
}
@@ -149,6 +160,17 @@
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "BigInteger !=";
}
@@ -185,6 +207,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) < 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigInteger comp = (BigInteger) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) < 0;
+ }
+
public String toString() {
return "BigInteger <";
}
@@ -221,6 +250,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) <= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigInteger comp = (BigInteger) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) <= 0;
+ }
+
public String toString() {
return "BigInteger <=";
}
@@ -257,6 +293,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) > 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigInteger comp = (BigInteger) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) > 0;
+ }
+
public String toString() {
return "BigInteger >";
}
@@ -293,6 +336,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) >= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final BigInteger comp = (BigInteger) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) >= 0;
+ }
+
public String toString() {
return "BigInteger >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BooleanFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -80,9 +80,16 @@
return context.extractor.getBooleanValue( object2 ) == ((BooleanVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getBooleanValue( object1 ) == extractor.getBooleanValue( object2 );
+ }
+
public String toString() {
return "Boolean ==";
}
+
}
static class BooleanNotEqualEvaluator extends BaseEvaluator {
@@ -113,6 +120,12 @@
return context.extractor.getBooleanValue( object2 ) != ((BooleanVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getBooleanValue( object1 ) != extractor.getBooleanValue( object2 );
+ }
+
public String toString() {
return "Boolean !=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ByteFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -88,9 +88,16 @@
return ((LongVariableContextEntry) context).left == context.extractor.getByteValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) == extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte ==";
}
+
}
static class ByteNotEqualEvaluator extends BaseEvaluator {
@@ -121,6 +128,12 @@
return ((LongVariableContextEntry) context).left != context.extractor.getByteValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) != extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte !=";
}
@@ -154,6 +167,12 @@
return context.extractor.getByteValue( right ) < ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) < extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte <";
}
@@ -187,6 +206,12 @@
return context.extractor.getByteValue( right ) <= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) <= extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte <=";
}
@@ -220,6 +245,12 @@
return context.extractor.getByteValue( right ) > ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) > extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte >";
}
@@ -253,6 +284,12 @@
return context.extractor.getByteValue( right ) >= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getByteValue( object1 ) >= extractor.getByteValue( object2 );
+ }
+
public String toString() {
return "Byte >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/CharacterFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -88,6 +88,12 @@
return ((LongVariableContextEntry) context).left == context.extractor.getCharValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) == extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character ==";
}
@@ -121,6 +127,12 @@
return ((LongVariableContextEntry) context).left != context.extractor.getCharValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) != extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character !=";
}
@@ -154,6 +166,12 @@
return context.extractor.getCharValue( right ) <((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) < extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character <";
}
@@ -187,6 +205,12 @@
return context.extractor.getCharValue( right ) <= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) <= extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character <=";
}
@@ -220,6 +244,12 @@
return context.extractor.getCharValue( right ) > ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) > extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character >";
}
@@ -253,6 +283,12 @@
return context.extractor.getCharValue( right ) >= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getCharValue( object1 ) >= extractor.getCharValue( object2 );
+ }
+
public String toString() {
return "Character >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DateFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -131,9 +131,21 @@
return value1.compareTo( getRightDate( value2 ) ) == 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) == 0;
+ }
+
public String toString() {
return "Date ==";
}
+
}
static class DateNotEqualEvaluator extends BaseEvaluator {
@@ -188,6 +200,17 @@
return value1.compareTo( getRightDate( value2 ) ) != 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) != 0;
+ }
+
public String toString() {
return "Date !=";
}
@@ -227,6 +250,17 @@
return getRightDate( value2 ).compareTo( value1 ) < 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) < 0;
+ }
+
public String toString() {
return "Date <";
}
@@ -266,6 +300,17 @@
return getRightDate( value2 ).compareTo( value1 ) <= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) <= 0;
+ }
+
public String toString() {
return "Date <=";
}
@@ -305,6 +350,17 @@
return getRightDate( value2 ).compareTo( value1 ) > 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) > 0;
+ }
+
public String toString() {
return "Date >";
}
@@ -344,6 +400,17 @@
return getRightDate( value2 ).compareTo( value1 ) >= 0;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Date value1 = (Date) extractor.getValue( object1 );
+ final Date value2 = (Date) extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.compareTo( value2 ) >= 0;
+ }
+
public String toString() {
return "Date >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/DoubleFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -91,6 +91,13 @@
return ((DoubleVariableContextEntry) context).left == context.extractor.getDoubleValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) == extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double ==";
}
@@ -127,6 +134,13 @@
return ((DoubleVariableContextEntry) context).left != context.extractor.getDoubleValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) != extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double !=";
}
@@ -163,6 +177,13 @@
return context.extractor.getDoubleValue( right ) < ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) < extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double <";
}
@@ -199,6 +220,13 @@
return context.extractor.getDoubleValue( right ) <= ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) <= extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double <=";
}
@@ -235,6 +263,13 @@
return context.extractor.getDoubleValue( right ) > ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) > extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double >";
}
@@ -271,6 +306,13 @@
return context.extractor.getDoubleValue( right ) >= ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getDoubleValue( object1 ) >= extractor.getDoubleValue( object2 );
+ }
+
public String toString() {
return "Double >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FactTemplateFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FactTemplateFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FactTemplateFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -82,17 +82,6 @@
return value1.equals( value2 );
}
- public boolean evaluate(final FieldValue object1,
- final Extractor extractor,
- final Object object2) {
- final Object value1 = object1.getValue();
- final Object value2 = extractor.getValue( object2 );
- if ( value1 == null ) {
- return value2 == null;
- }
- return value1.equals( value2 );
- }
-
public boolean evaluateCachedRight(final VariableContextEntry context,
final Object left) {
final Object value = context.declaration.getExtractor().getValue( left );
@@ -111,9 +100,21 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "FactTemplate ==";
}
+
}
static class FactTemplateNotEqualEvaluator extends BaseEvaluator {
@@ -139,17 +140,6 @@
return !value1.equals( value2 );
}
- public boolean evaluate(final FieldValue object1,
- final Extractor extractor,
- final Object object2) {
- final Object value1 = object1.getValue();
- final Object value2 = extractor.getValue( object2 );
- if ( value1 == null ) {
- return value2 != null;
- }
- return !value1.equals( value2 );
- }
-
public boolean evaluateCachedRight(final VariableContextEntry context,
final Object left) {
final Object value = context.declaration.getExtractor().getValue( left );
@@ -168,6 +158,17 @@
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 != null;
+ }
+ return !value1.equals( value2 );
+ }
+
public String toString() {
return "FactTemplate !=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/FloatFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -89,6 +89,13 @@
return ((DoubleVariableContextEntry) context).left == context.extractor.getFloatValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) == extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float ==";
}
@@ -125,6 +132,13 @@
return ((DoubleVariableContextEntry) context).left != context.extractor.getFloatValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) != extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float !=";
}
@@ -161,6 +175,13 @@
return context.extractor.getFloatValue( right ) < ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) < extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float <";
}
@@ -197,6 +218,13 @@
return context.extractor.getFloatValue( right ) <= ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) <= extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float <=";
}
@@ -233,6 +261,13 @@
return context.extractor.getFloatValue( right ) > ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) > extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float >";
}
@@ -269,6 +304,13 @@
return context.extractor.getFloatValue( right ) >= ((DoubleVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ // TODO: we are not handling delta right now... maybe we should
+ return extractor.getFloatValue( object1 ) >= extractor.getFloatValue( object2 );
+ }
+
public String toString() {
return "Float >=";
}
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-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/IntegerFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -88,6 +88,12 @@
return context.extractor.getIntValue( object2 ) == ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) == extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer ==";
}
@@ -122,6 +128,12 @@
return context.extractor.getIntValue( object2 ) != ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) != extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer !=";
}
@@ -155,6 +167,12 @@
return context.extractor.getIntValue( right ) < ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) < extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer <";
}
@@ -188,6 +206,12 @@
return context.extractor.getIntValue( right ) <= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) <= extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer <=";
}
@@ -221,6 +245,12 @@
return context.extractor.getIntValue( right ) > ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) > extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer >";
}
@@ -254,6 +284,12 @@
return context.extractor.getIntValue( right ) >= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getIntValue( object1 ) >= extractor.getIntValue( object2 );
+ }
+
public String toString() {
return "Integer >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/LongFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -88,6 +88,12 @@
return ((LongVariableContextEntry) context).left == context.extractor.getLongValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) == extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long ==";
}
@@ -121,6 +127,12 @@
return ((LongVariableContextEntry) context).left != context.extractor.getLongValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) != extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long !=";
}
@@ -154,6 +166,12 @@
return context.extractor.getLongValue( right ) < ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) < extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long <";
}
@@ -187,6 +205,12 @@
return context.extractor.getLongValue( right ) <= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) <= extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long <=";
}
@@ -220,6 +244,12 @@
return context.extractor.getLongValue( right ) > ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) > extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long >";
}
@@ -253,6 +283,12 @@
return context.extractor.getLongValue( right ) >= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getLongValue( object1 ) >= extractor.getLongValue( object2 );
+ }
+
public String toString() {
return "Long >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ObjectFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -118,6 +118,17 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "Object ==";
}
@@ -165,6 +176,17 @@
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 != null;
+ }
+ return !value1.equals( value2 );
+ }
+
public String toString() {
return "Object !=";
}
@@ -198,6 +220,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) < 0;
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Comparable comp = (Comparable) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) < 0;
+ }
+
public String toString() {
return "Object <";
}
@@ -234,6 +263,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) <= 0;
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Comparable comp = (Comparable) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) <= 0;
+ }
+
public String toString() {
return "Object <=";
}
@@ -270,6 +306,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) > 0;
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Comparable comp = (Comparable) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) > 0;
+ }
+
public String toString() {
return "Object >";
}
@@ -306,6 +349,13 @@
return comp.compareTo( ((ObjectVariableContextEntry) context).left ) >= 0;
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Comparable comp = (Comparable) extractor.getValue( object1 );
+ return comp.compareTo( extractor.getValue( object2 ) ) >= 0;
+ }
+
public String toString() {
return "Object >=";
}
@@ -345,6 +395,14 @@
return col.contains( value );
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Object value = extractor.getValue( object2 );
+ final Collection col = (Collection) extractor.getValue( object1 );
+ return col.contains( value );
+ }
+
public String toString() {
return "Object contains";
}
@@ -384,6 +442,14 @@
return !col.contains( value );
}
+ public boolean evaluate(final Extractor extractor,
+ final Object object1,
+ final Object object2) {
+ final Object value = extractor.getValue( object2 );
+ final Collection col = (Collection) extractor.getValue( object1 );
+ return !col.contains( value );
+ }
+
public String toString() {
return "Object excludes";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/ShortFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -88,6 +88,12 @@
return ((LongVariableContextEntry) context).left == context.extractor.getShortValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) == extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Short ==";
}
@@ -121,6 +127,12 @@
return ((LongVariableContextEntry) context).left != context.extractor.getShortValue( right );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) != extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Short !=";
}
@@ -154,6 +166,12 @@
return context.extractor.getShortValue( right ) < ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) < extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Short <";
}
@@ -187,6 +205,12 @@
return context.extractor.getShortValue( right ) <= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) <= extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Boolean <=";
}
@@ -220,6 +244,12 @@
return context.extractor.getShortValue( right ) > ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) > extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Short >";
}
@@ -253,6 +283,12 @@
return context.extractor.getShortValue( right ) >= ((LongVariableContextEntry) context).left;
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ return extractor.getShortValue( object1 ) >= extractor.getShortValue( object2 );
+ }
+
public String toString() {
return "Short >=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/StringFactory.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -102,9 +102,21 @@
return ((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 == null;
+ }
+ return value1.equals( value2 );
+ }
+
public String toString() {
return "String ==";
}
+
}
static class StringNotEqualEvaluator extends BaseEvaluator {
@@ -148,6 +160,17 @@
return !((ObjectVariableContextEntry) context).left.equals( value );
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return value2 != null;
+ }
+ return !value1.equals( value2 );
+ }
+
public String toString() {
return "String !=";
}
@@ -194,6 +217,17 @@
return value.matches( (String) ((ObjectVariableContextEntry) context).left);
}
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2) {
+ final Object value1 = extractor.getValue( object1 );
+ final Object value2 = extractor.getValue( object2 );
+ if ( value1 == null ) {
+ return false;
+ }
+ return ((String) value1).matches( (String) value2 );
+ }
+
public String toString() {
return "String !=";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -185,7 +185,8 @@
final Constraint constraint = (Constraint) entry.getObject();
final VariableConstraint variableConstraint = (VariableConstraint) constraint;
final FieldIndex index = new FieldIndex( variableConstraint.getFieldExtractor(),
- variableConstraint.getRequiredDeclarations()[0] );
+ variableConstraint.getRequiredDeclarations()[0],
+ variableConstraint.getEvaluator());
list.add( index );
entry = (LinkedListEntry) entry.getNext();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Evaluator.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -46,6 +46,10 @@
public boolean evaluate(Extractor extractor,
Object object1,
FieldValue value);
+
+ public boolean evaluate(Extractor extractor,
+ Object object1,
+ Object object2);
public boolean evaluateCachedLeft(VariableContextEntry context,
Object object1);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -8,6 +8,7 @@
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.ReteTuple;
import org.drools.rule.Declaration;
+import org.drools.spi.Evaluator;
import org.drools.spi.FieldExtractor;
public abstract class AbstractHashTable
@@ -72,7 +73,7 @@
next = entry.getNext();
final int index = indexOf( entry.hashCode(),
- newTable.length );
+ newTable.length );
entry.setNext( newTable[index] );
newTable[index] = entry;
@@ -179,7 +180,9 @@
public abstract Entry getBucket(Object object);
- public interface ObjectComparator extends Serializable {
+ public interface ObjectComparator
+ extends
+ Serializable {
public int hashCodeOf(Object object);
public int rehash(int hashCode);
@@ -242,6 +245,8 @@
public static class InstanceEquals
implements
ObjectComparator {
+
+ private static final long serialVersionUID = 1835792402650440794L;
public static ObjectComparator INSTANCE = new InstanceEquals();
public static ObjectComparator getInstance() {
@@ -273,6 +278,8 @@
public static class EqualityEquals
implements
ObjectComparator {
+
+ private static final long serialVersionUID = 8004812231695147987L;
public static ObjectComparator INSTANCE = new EqualityEquals();
public static ObjectComparator getInstance() {
@@ -297,9 +304,9 @@
public boolean equal(final Object object1,
final Object object2) {
- if ( object1 == null ) {
- return object2 == null;
- }
+ if ( object1 == null ) {
+ return object2 == null;
+ }
return object1.equals( object2 );
}
}
@@ -307,6 +314,9 @@
public static class FactEntry
implements
Entry {
+
+ private static final long serialVersionUID = 1776798977330980128L;
+
public InternalFactHandle handle;
public int hashCode;
@@ -356,13 +366,15 @@
return (object == this) || (this.handle == ((FactEntry) object).handle);
}
}
-
+
public static class FieldIndex {
public FieldExtractor extractor;
public Declaration declaration;
+ public Evaluator evaluator;
public FieldIndex(final FieldExtractor extractor,
- final Declaration declaration) {
+ final Declaration declaration,
+ final Evaluator evaluator) {
super();
this.extractor = extractor;
this.declaration = declaration;
@@ -375,8 +387,12 @@
public FieldExtractor getExtractor() {
return this.extractor;
}
+
+ public Evaluator getEvaluator() {
+ return this.evaluator;
+ }
}
-
+
public static interface Index {
public int hashCodeOf(ReteTuple tuple);
@@ -387,200 +403,176 @@
public boolean equal(ReteTuple tuple1,
ReteTuple tuple2);
-
+
public boolean equal(Object object1,
- Object object2);
+ Object object2);
}
public static class SingleIndex
implements
Index {
- private FieldExtractor extractor;
- private Declaration declaration;
- private int startResult;
+ private FieldExtractor extractor;
+ private Declaration declaration;
+ private Evaluator evaluator;
- private ObjectComparator comparator;
+ private int startResult;
public SingleIndex(final FieldIndex[] indexes,
- final int startResult,
- final ObjectComparator comparator) {
+ final int startResult) {
this.startResult = startResult;
this.extractor = indexes[0].extractor;
this.declaration = indexes[0].declaration;
+ this.evaluator = indexes[0].evaluator;
- this.comparator = comparator;
}
public int hashCodeOf(final Object object) {
int hashCode = this.startResult;
hashCode = TupleIndexHashTable.PRIME * hashCode + this.extractor.getHashCode( object );
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public int hashCodeOf(final ReteTuple tuple) {
int hashCode = this.startResult;
hashCode = TupleIndexHashTable.PRIME * hashCode + this.declaration.getHashCode( tuple.get( this.declaration ).getObject() );
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public boolean equal(final Object object1,
final ReteTuple tuple) {
- final Object value1 = this.extractor.getValue( object1 );
- final Object value2 = this.declaration.getValue( tuple.get( this.declaration ).getObject() );
+ final Object object2 = tuple.get( this.declaration ).getObject();
- return this.comparator.equal( value1,
- value2 );
+ return this.evaluator.evaluate( this.extractor,
+ object1,
+ object2 );
}
-
+
public boolean equal(final Object object1,
final Object object2) {
- final Object value1 = this.extractor.getValue( object1 );
- final Object value2 = this.extractor.getValue( object2 );
+ return this.evaluator.evaluate( this.extractor,
+ object1,
+ object2 );
+ }
- return this.comparator.equal( value1,
- value2 );
- }
-
public boolean equal(final ReteTuple tuple1,
final ReteTuple tuple2) {
- final Object value1 = this.declaration.getValue( tuple1.get( this.declaration ).getObject() );
- final Object value2 = this.declaration.getValue( tuple2.get( this.declaration ).getObject() );
- return this.comparator.equal( value1,
- value2 );
+ final Object object1 = tuple1.get( this.declaration ).getObject();
+ final Object object2 = tuple2.get( this.declaration ).getObject();
+ return this.evaluator.evaluate( this.extractor,
+ object1,
+ object2 );
}
+
+ public int rehash(int h) {
+ h += ~(h << 9);
+ h ^= (h >>> 14);
+ h += (h << 4);
+ h ^= (h >>> 10);
+ return h;
+ }
+
}
public static class DoubleCompositeIndex
implements
Index {
- private FieldIndex index0;
- private FieldIndex index1;
+ private FieldIndex index0;
+ private FieldIndex index1;
- private int startResult;
+ private int startResult;
- private ObjectComparator comparator;
-
public DoubleCompositeIndex(final FieldIndex[] indexes,
- final int startResult,
- final ObjectComparator comparator) {
+ final int startResult) {
this.startResult = startResult;
this.index0 = indexes[0];
this.index1 = indexes[1];
- this.comparator = comparator;
}
public int hashCodeOf(final Object object) {
int hashCode = this.startResult;
- int hash = this.index0.extractor.getHashCode( object );
- hashCode = TupleIndexHashTable.PRIME * hashCode + hash;
+ hashCode = TupleIndexHashTable.PRIME * hashCode + this.index0.extractor.getHashCode( object );
+ hashCode = TupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( object );
- hash = this.index1.extractor.getHashCode( object );
- hashCode = TupleIndexHashTable.PRIME * hashCode + hash;
-
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public int hashCodeOf(final ReteTuple tuple) {
int hashCode = this.startResult;
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index0.declaration.getHashCode( tuple.get( this.index0.declaration ).getObject() );
-
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( tuple.get( this.index1.declaration ).getObject() );
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public boolean equal(final Object object1,
final ReteTuple tuple) {
- Object value1 = this.index0.extractor.getValue( object1 );
- Object value2 = this.index0.declaration.getValue( tuple.get( this.index0.declaration ).getObject() );
+ Object object12 = tuple.get( this.index0.declaration ).getObject();
+ Object object22 = tuple.get( this.index1.declaration ).getObject();
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index1.extractor.getValue( object1 );
- value2 = this.index1.declaration.getValue( tuple.get( this.index1.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object1,
+ object12 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object1,
+ object22 );
}
public boolean equal(final ReteTuple tuple1,
final ReteTuple tuple2) {
- Object value1 = this.index0.declaration.getValue( tuple1.get( this.index0.declaration ).getObject() );
- Object value2 = this.index0.declaration.getValue( tuple2.get( this.index0.declaration ).getObject() );
+ Object object11 = tuple1.get( this.index0.declaration ).getObject();
+ Object object12 = tuple2.get( this.index0.declaration ).getObject();
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
+ Object object21 = tuple1.get( this.index1.declaration ).getObject();
+ Object object22 = tuple2.get( this.index1.declaration ).getObject();
- value1 = this.index1.declaration.getValue( tuple1.get( this.index1.declaration ).getObject() );
- value2 = this.index1.declaration.getValue( tuple2.get( this.index1.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object11,
+ object12 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object21,
+ object22 );
}
-
+
public boolean equal(final Object object1,
final Object object2) {
- Object value1 = this.index0.extractor.getValue( object1 );
- Object value2 = this.index0.extractor.getValue( object2 );
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object1,
+ object2 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object1,
+ object2 );
+ }
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index1.extractor.getValue( object1 );
- value2 = this.index1.extractor.getValue( object2 );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
- }
+ public int rehash(int h) {
+ h += ~(h << 9);
+ h ^= (h >>> 14);
+ h += (h << 4);
+ h ^= (h >>> 10);
+ return h;
+ }
}
public static class TripleCompositeIndex
implements
Index {
- private FieldIndex index0;
- private FieldIndex index1;
- private FieldIndex index2;
+ private FieldIndex index0;
+ private FieldIndex index1;
+ private FieldIndex index2;
private int startResult;
- private ObjectComparator comparator;
-
public TripleCompositeIndex(final FieldIndex[] indexes,
- final int startResult,
- final ObjectComparator comparator) {
+ final int startResult) {
this.startResult = startResult;
this.index0 = indexes[0];
this.index1 = indexes[1];
this.index2 = indexes[2];
- this.comparator = comparator;
}
public int hashCodeOf(final Object object) {
@@ -590,7 +582,7 @@
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index1.extractor.getHashCode( object );;
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index2.extractor.getHashCode( object );;
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public int hashCodeOf(final ReteTuple tuple) {
@@ -600,94 +592,60 @@
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index1.declaration.getHashCode( tuple.get( this.index1.declaration ).getObject() );
hashCode = TupleIndexHashTable.PRIME * hashCode + this.index2.declaration.getHashCode( tuple.get( this.index2.declaration ).getObject() );
- return this.comparator.rehash( hashCode );
+ return rehash( hashCode );
}
public boolean equal(final Object object1,
final ReteTuple tuple) {
- Object value1 = this.index0.extractor.getValue( object1 );
- Object value2 = this.index0.declaration.getValue( tuple.get( this.index0.declaration ).getObject() );
+ Object object12 = tuple.get( this.index0.declaration ).getObject();
+ Object object22 = tuple.get( this.index1.declaration ).getObject();
+ Object object32 = tuple.get( this.index2.declaration ).getObject();
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index1.extractor.getValue( object1 );
- value2 = this.index1.declaration.getValue( tuple.get( this.index1.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index2.extractor.getValue( object1 );
- value2 = this.index2.declaration.getValue( tuple.get( this.index2.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object1,
+ object12 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object1,
+ object22 ) && this.index2.evaluator.evaluate( this.index2.extractor,
+ object1,
+ object32 );
}
public boolean equal(final ReteTuple tuple1,
final ReteTuple tuple2) {
- Object value1 = this.index0.declaration.getValue( tuple1.get( this.index0.declaration ).getObject() );
- Object value2 = this.index0.declaration.getValue( tuple2.get( this.index0.declaration ).getObject() );
+ Object object11 = tuple1.get( this.index0.declaration ).getObject();
+ Object object12 = tuple2.get( this.index0.declaration ).getObject();
+ Object object21 = tuple1.get( this.index1.declaration ).getObject();
+ Object object22 = tuple2.get( this.index1.declaration ).getObject();
+ Object object31 = tuple1.get( this.index2.declaration ).getObject();
+ Object object32 = tuple2.get( this.index2.declaration ).getObject();
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index1.declaration.getValue( tuple1.get( this.index1.declaration ).getObject() );
- value2 = this.index1.declaration.getValue( tuple2.get( this.index1.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index2.declaration.getValue( tuple1.get( this.index2.declaration ).getObject() );
- value2 = this.index2.declaration.getValue( tuple2.get( this.index2.declaration ).getObject() );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object11,
+ object12 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object21,
+ object22 ) && this.index2.evaluator.evaluate( this.index2.extractor,
+ object31,
+ object32 );
}
-
+
public boolean equal(final Object object1,
final Object object2) {
- Object value1 = this.index0.extractor.getValue( object1 );
- Object value2 = this.index0.extractor.getValue( object2 );
+ return this.index0.evaluator.evaluate( this.index0.extractor,
+ object1,
+ object2 ) && this.index1.evaluator.evaluate( this.index1.extractor,
+ object1,
+ object2 ) && this.index2.evaluator.evaluate( this.index2.extractor,
+ object1,
+ object2 );
+ }
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
+ public int rehash(int h) {
+ h += ~(h << 9);
+ h ^= (h >>> 14);
+ h += (h << 4);
+ h ^= (h >>> 10);
+ return h;
+ }
- value1 = this.index1.extractor.getValue( object1 );
- value2 = this.index1.extractor.getValue( object2 );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- value1 = this.index2.extractor.getValue( object1 );
- value2 = this.index2.extractor.getValue( object2 );
-
- if ( !this.comparator.equal( value1,
- value2 ) ) {
- return false;
- }
-
- return true;
- }
- }
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/FactHandleIndexHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/FactHandleIndexHashTable.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/FactHandleIndexHashTable.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -6,13 +6,13 @@
import org.drools.common.InternalFactHandle;
import org.drools.reteoo.FactHandleMemory;
import org.drools.reteoo.ReteTuple;
-import org.drools.rule.Declaration;
-import org.drools.spi.FieldExtractor;
-import org.drools.util.ObjectHashMap.ObjectEntry;
public class FactHandleIndexHashTable extends AbstractHashTable
implements
FactHandleMemory {
+
+ private static final long serialVersionUID = -6033183838054653227L;
+
public static final int PRIME = 31;
private int startResult;
@@ -37,7 +37,7 @@
this.startResult = FactHandleIndexHashTable.PRIME;
for ( int i = 0, length = index.length; i < length; i++ ) {
- this.startResult += FactHandleIndexHashTable.PRIME * this.startResult + index[i].getExtractor().getIndex();
+ this.startResult = FactHandleIndexHashTable.PRIME * this.startResult + index[i].getExtractor().getIndex();
}
switch ( index.length ) {
@@ -45,18 +45,15 @@
throw new IllegalArgumentException( "FieldIndexHashTable cannot use an index[] of length 0" );
case 1 :
this.index = new SingleIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult);
break;
case 2 :
this.index = new DoubleCompositeIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult );
break;
case 3 :
this.index = new TripleCompositeIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult );
break;
default :
throw new IllegalArgumentException( "FieldIndexHashTable cannot use an index[] of length great than 3" );
@@ -250,6 +247,8 @@
public static class FieldIndexEntry
implements
Entry {
+
+ private static final long serialVersionUID = -577270475161063671L;
private Entry next;
private FactEntry first;
private final int hashCode;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/TupleIndexHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/TupleIndexHashTable.java 2006-10-27 01:03:45 UTC (rev 7157)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/TupleIndexHashTable.java 2006-10-27 01:12:32 UTC (rev 7158)
@@ -4,17 +4,15 @@
package org.drools.util;
import org.drools.common.InternalFactHandle;
-import org.drools.reteoo.FactHandleMemory;
import org.drools.reteoo.ReteTuple;
import org.drools.reteoo.TupleMemory;
-import org.drools.rule.Column;
-import org.drools.rule.Declaration;
-import org.drools.spi.FieldExtractor;
-import org.drools.util.ObjectHashMap.ObjectEntry;
public class TupleIndexHashTable extends AbstractHashTable
implements
TupleMemory {
+
+ private static final long serialVersionUID = -6214772340195061306L;
+
public static final int PRIME = 31;
private int startResult;
@@ -47,18 +45,15 @@
throw new IllegalArgumentException( "FieldIndexHashTable cannot use an index[] of length 0" );
case 1 :
this.index = new SingleIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult);
break;
case 2 :
this.index = new DoubleCompositeIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult);
break;
case 3 :
this.index = new TripleCompositeIndex( index,
- this.startResult,
- this.comparator );
+ this.startResult);
break;
default :
throw new IllegalArgumentException( "FieldIndexHashTable cannot use an index[] of length great than 3" );
@@ -243,6 +238,8 @@
public static class FieldIndexEntry
implements
Entry {
+
+ private static final long serialVersionUID = 8160842495541574574L;
private Entry next;
private ReteTuple first;
private final int hashCode;
More information about the jboss-svn-commits
mailing list