[jboss-svn-commits] JBL Code SVN: r18906 - in labs/jbossrules/branches/4.0.x: drools-compiler/src/test/resources/org/drools/integrationtests and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 12 20:25:01 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-03-12 20:25:01 -0400 (Wed, 12 Mar 2008)
New Revision: 18906

Added:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/big_decimal_and_literal.drl
Modified:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
   labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/spi/FieldValue.java
Log:
JBRULES-1428 Big number support (proper co-ercion)

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -27,6 +27,7 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -631,7 +632,7 @@
 
 		assertEquals(1, list.size());
 	}
-	
+
 	// @FIXME
 	public void FIXME_testBigDecimalWithFromAndEval() throws Exception {
 	    String rule = "package org.test;\n";
@@ -642,7 +643,7 @@
 	    rule += "then\n";
 	    rule += "    System.out.println(\"OK!\");\n";
 	    rule += "end";
-	    
+
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new StringReader( rule ));
         final Package pkg = builder.getPackage();
@@ -651,9 +652,9 @@
         ruleBase.addPackage(pkg);
         final StatefulSession session = ruleBase.newStatefulSession();
         session.fireAllRules();
-        
+
 	}
-	
+
     public void testMVELConsequenceWithMapsAndArrays() throws Exception {
         String rule = "package org.test;\n";
         rule += "import java.util.ArrayList\n";
@@ -670,7 +671,7 @@
         rule += "    System.out.println(m[\"content\"][0]);\n";
         rule += "    list.add(m[\"content\"][0]);\n";
         rule += "end";
-        
+
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new StringReader( rule ));
         final Package pkg = builder.getPackage();
@@ -681,11 +682,35 @@
         List list = new ArrayList();
         session.setGlobal( "list", list );
         session.fireAllRules();
-        
+
         assertEquals( 1, list.size() );
-        assertEquals( "first", list.get( 0 ) );                        
-    }	
+        assertEquals( "first", list.get( 0 ) );
+    }
 
+	public void testBigDecimalIntegerLiteral() throws Exception {
+
+		final PackageBuilder builder = new PackageBuilder();
+		builder.addPackageFromDrl(new InputStreamReader(getClass()
+				.getResourceAsStream("big_decimal_and_literal.drl")));
+		final Package pkg = builder.getPackage();
+
+		final RuleBase ruleBase = getRuleBase();
+		ruleBase.addPackage(pkg);
+		final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+		final List list = new ArrayList();
+		workingMemory.setGlobal("list", list);
+
+		final PersonInterface bill = new Person("bill", null, 12);
+		bill.setBigDecimal(new BigDecimal("42"));
+		bill.setBigInteger(new BigInteger("42"));
+
+		workingMemory.insert(bill);
+		workingMemory.fireAllRules();
+
+		assertEquals(6, list.size());
+	}
+
 	public void testCell() throws Exception {
 		final Cell cell1 = new Cell(9);
 		final Cell cell = new Cell(0);
@@ -2824,7 +2849,7 @@
         final List results = new ArrayList();
         session.setGlobal( "results",
                                  results );
-        
+
         Map map = new HashMap();
         map.put( "content", "hello ;=" );
         session.insert( map );
@@ -3954,7 +3979,7 @@
 		// builder2.addPackageFromDrl( new InputStreamReader(
 		// getClass().getResourceAsStream( "test_FinalClass2.drl" ) ) );
 		// ruleBase.addPackage( builder2.getPackage() );
-		//        
+		//
 		// // it will automatically fire the rule
 		// assertEquals( 2,
 		// list.size() );

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/big_decimal_and_literal.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/big_decimal_and_literal.drl	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/big_decimal_and_literal.drl	2008-03-13 00:25:01 UTC (rev 18906)
@@ -0,0 +1,53 @@
+package org.drools.test
+
+import org.drools.Person;
+import java.math.BigDecimal;
+
+global java.util.List list;
+
+rule "BigDec"
+
+	when
+		p: Person(bigDecimal < 100.01)
+	then
+		list.add( p );
+end
+
+rule "BigInt"
+	when
+		p: Person(bigInteger < 100.1)
+	then
+		list.add( p );
+end
+
+rule "BigDec2"
+
+	when
+		p: Person(bigDecimal == 42)
+	then
+		list.add( p );
+end
+
+rule "BigInt2"
+	when
+		p: Person(bigInteger == 42)
+	then
+		list.add( p );
+end
+
+rule "BigDec3"
+
+	when
+		p: Person(bigDecimal != 100)
+	then
+		list.add( p );
+end
+
+rule "BigInt3"
+	when
+		p: Person(bigInteger != 100)
+	then
+		list.add( p );
+end
+
+


Property changes on: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/big_decimal_and_literal.drl
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -2,13 +2,13 @@
 
 /*
  * Copyright 2005 JBoss Inc
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -69,7 +69,7 @@
 
     static class BigDecimalEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalEqualEvaluator();
@@ -83,7 +83,7 @@
                                 final Extractor extractor,
                                 final Object object1, final FieldValue object2) {
             final Object value1 = extractor.getValue( workingMemory, object1 );
-            final Object value2 = object2.getValue();
+            final Object value2 = object2.getBigDecimalValue();
             if ( value1 == null ) {
                 return value2 == null;
             }
@@ -128,7 +128,7 @@
 
     static class BigDecimalNotEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalNotEqualEvaluator();
@@ -142,7 +142,7 @@
                                 final Extractor extractor,
                                 final Object object1, final FieldValue object2) {
             final Object value1 = extractor.getValue( workingMemory, object1 );
-            final Object value2 = object2.getValue();
+            final Object value2 = object2.getBigDecimalValue();
             if ( value1 == null ) {
                 return value2 != null;
             }
@@ -186,7 +186,7 @@
 
     static class BigDecimalLessEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalLessEvaluator();
@@ -203,7 +203,7 @@
                 return false;
             }
             final BigDecimal comp = (BigDecimal) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigDecimal) object2.getValue() ) < 0;
+            return comp.compareTo( (BigDecimal) object2.getBigDecimalValue() ) < 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -242,7 +242,7 @@
 
     static class BigDecimalLessOrEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalLessOrEqualEvaluator();
@@ -259,7 +259,7 @@
                 return false;
             }
             final BigDecimal comp = (BigDecimal) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigDecimal) object2.getValue() ) <= 0;
+            return comp.compareTo( (BigDecimal) object2.getBigDecimalValue() ) <= 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -298,7 +298,7 @@
 
     static class BigDecimalGreaterEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalGreaterEvaluator();
@@ -315,7 +315,7 @@
                 return false;
             }
             final BigDecimal comp = (BigDecimal) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigDecimal) object2.getValue() ) > 0;
+            return comp.compareTo( (BigDecimal) object2.getBigDecimalValue() ) > 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -354,7 +354,7 @@
 
     static class BigDecimalGreaterOrEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long      serialVersionUID = 400L;
         private final static Evaluator INSTANCE         = new BigDecimalGreaterOrEqualEvaluator();
@@ -371,7 +371,7 @@
                 return false;
             }
             final BigDecimal comp = (BigDecimal) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigDecimal) object2.getValue() ) >= 0;
+            return comp.compareTo( (BigDecimal) object2.getBigDecimalValue() ) >= 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -425,7 +425,7 @@
 
     static class BigDecimalNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigDecimalNotMemberOfEvaluator();

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -2,13 +2,13 @@
 
 /*
  * Copyright 2005 JBoss Inc
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -69,7 +69,7 @@
 
     static class BigIntegerEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerEqualEvaluator();
@@ -83,7 +83,7 @@
                                 final Extractor extractor,
                                 final Object object1, final FieldValue object2) {
             final Object value1 = extractor.getValue( workingMemory, object1 );
-            final Object value2 = object2.getValue();
+            final Object value2 = object2.getBigIntegerValue();
             if ( value1 == null ) {
                 return value2 == null;
             }
@@ -127,7 +127,7 @@
 
     static class BigIntegerNotEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerNotEqualEvaluator();
@@ -141,7 +141,7 @@
                                 final Extractor extractor,
                                 final Object object1, final FieldValue object2) {
             final Object value1 = extractor.getValue( workingMemory, object1 );
-            final Object value2 = object2.getValue();
+            final Object value2 = object2.getBigIntegerValue();
             if ( value1 == null ) {
                 return value2 != null;
             }
@@ -185,7 +185,7 @@
 
     static class BigIntegerLessEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerLessEvaluator();
@@ -202,7 +202,7 @@
                 return false;
             }
             final BigInteger comp = (BigInteger) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigInteger) object2.getValue() ) < 0;
+            return comp.compareTo( object2.getBigIntegerValue() ) < 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -241,7 +241,7 @@
 
     static class BigIntegerLessOrEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerLessOrEqualEvaluator();
@@ -258,7 +258,7 @@
                 return false;
             }
             final BigInteger comp = (BigInteger) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigInteger) object2.getValue() ) <= 0;
+            return comp.compareTo( object2.getBigIntegerValue() ) <= 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -297,7 +297,7 @@
 
     static class BigIntegerGreaterEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerGreaterEvaluator();
@@ -314,7 +314,7 @@
                 return false;
             }
             final BigInteger comp = (BigInteger) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigInteger) object2.getValue() ) > 0;
+            return comp.compareTo( object2.getBigIntegerValue() ) > 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -353,7 +353,7 @@
 
     static class BigIntegerGreaterOrEqualEvaluator extends BaseEvaluator {
         /**
-         * 
+         *
          */
         private static final long      serialVersionUID = 400L;
         private final static Evaluator INSTANCE         = new BigIntegerGreaterOrEqualEvaluator();
@@ -370,7 +370,7 @@
                 return false;
             }
             final BigInteger comp = (BigInteger) extractor.getValue( workingMemory, object1 );
-            return comp.compareTo( (BigInteger) object2.getValue() ) >= 0;
+            return comp.compareTo( object2.getBigIntegerValue() ) >= 0;
         }
 
         public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
@@ -406,7 +406,7 @@
             return "BigInteger >=";
         }
     }
-    
+
     static class BigIntegerMemberOfEvaluator extends BaseMemberOfEvaluator {
 
         private static final long     serialVersionUID = 400L;
@@ -424,7 +424,7 @@
 
     static class BigIntegerNotMemberOfEvaluator extends BaseNotMemberOfEvaluator {
         /**
-         * 
+         *
          */
         private static final long     serialVersionUID = 400L;
         public final static Evaluator INSTANCE         = new BigIntegerNotMemberOfEvaluator();
@@ -438,5 +438,5 @@
             return "BigInteger not memberOf";
         }
     }
-    
+
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/BooleanFieldImpl.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -1,12 +1,12 @@
 /*
  * Copyright 2005 JBoss Inc
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,6 +16,9 @@
 
 package org.drools.base.field;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldValue;
 
@@ -89,7 +92,7 @@
     public int hashCode() {
         return this.value ? 1 : 0;
     }
-    
+
     public boolean isNull() {
         return false;
     }
@@ -113,9 +116,17 @@
     public boolean isCollectionField() {
         return false;
     }
-    
+
     public boolean isStringField() {
         return false;
     }
 
+	public BigDecimal getBigDecimalValue() {
+		throw new RuntimeDroolsException( "Conversion to BigDecimal not supported for type boolean" );
+	}
+
+	public BigInteger getBigIntegerValue() {
+		throw new RuntimeDroolsException( "Conversion to BigInteger not supported for type boolean" );
+	}
+
 }

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/DoubleFieldImpl.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -1,5 +1,8 @@
 package org.drools.base.field;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldValue;
 
@@ -69,7 +72,7 @@
     public int hashCode() {
         return (int) this.value;
     }
-    
+
     public boolean isNull() {
         return false;
     }
@@ -89,7 +92,7 @@
     public boolean isObjectField() {
         return false;
     }
-    
+
     public boolean isCollectionField() {
         return false;
     }
@@ -98,4 +101,12 @@
         return false;
     }
 
+	public BigDecimal getBigDecimalValue() {
+		return new BigDecimal(this.value);
+	}
+
+	public BigInteger getBigIntegerValue() {
+		throw new RuntimeDroolsException( "Conversion to BigInteger not supported for type double" );
+	}
+
 }

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/LongFieldImpl.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -1,5 +1,8 @@
 package org.drools.base.field;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 import org.drools.RuntimeDroolsException;
 import org.drools.spi.FieldValue;
 
@@ -69,7 +72,7 @@
     public int hashCode() {
         return (int) this.value;
     }
-    
+
     public boolean isNull() {
         return false;
     }
@@ -98,4 +101,12 @@
         return false;
     }
 
+	public BigDecimal getBigDecimalValue() {
+		return new BigDecimal(this.value);
+	}
+
+	public BigInteger getBigIntegerValue() {
+		return BigInteger.valueOf(this.value);
+	}
+
 }

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/base/field/ObjectFieldImpl.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -2,13 +2,13 @@
 
 /*
  * Copyright 2005 JBoss Inc
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.util.Collection;
 
 import org.drools.RuntimeDroolsException;
@@ -27,7 +29,7 @@
 
     private static final long serialVersionUID = 400L;
     private final Object      value;
-    
+
     private final boolean     isCollection;
     private final boolean     isNumber;
     private final boolean     isBoolean;
@@ -65,7 +67,7 @@
             return ((Number) this.value).byteValue();
         } else if( isString ) {
             return Byte.valueOf( (String) this.value ).byteValue();
-        } 
+        }
         throw new RuntimeDroolsException( "Conversion to byte not supported for type: " + this.value.getClass() );
     }
 
@@ -142,7 +144,7 @@
             return 0;
         }
     }
-    
+
     public boolean isNull() {
         return value == null;
     }
@@ -162,12 +164,34 @@
     public boolean isObjectField() {
         return true;
     }
-    
+
     public boolean isCollectionField() {
         return this.isCollection;
     }
-    
+
     public boolean isStringField() {
         return this.isString;
     }
+
+	public BigDecimal getBigDecimalValue() {
+		if (this.value instanceof BigDecimal) return (BigDecimal) this.value;
+		if (this.isNumber) {
+			return new BigDecimal(((Number) value).doubleValue());
+		} else if (this.isString) {
+			return new BigDecimal((String) value);
+		}
+		if (this.value == null) return null;
+        throw new RuntimeDroolsException( "Conversion to BigDecimal not supported for type: " + this.value.getClass() );
+	}
+
+	public BigInteger getBigIntegerValue() {
+		if (this.value instanceof BigInteger) return (BigInteger) this.value;
+		if (this.isNumber) {
+			return BigInteger.valueOf(((Number) value).longValue());
+		} else if (this.isString) {
+			return new BigInteger((String) value);
+		}
+		if (this.value == null) return null;
+        throw new RuntimeDroolsException( "Conversion to BigDecimal not supported for type: " + this.value.getClass() );
+	}
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/spi/FieldValue.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/spi/FieldValue.java	2008-03-12 23:17:24 UTC (rev 18905)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/spi/FieldValue.java	2008-03-13 00:25:01 UTC (rev 18906)
@@ -2,13 +2,13 @@
 
 /*
  * Copyright 2005 JBoss Inc
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,6 +17,8 @@
  */
 
 import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
 
 public interface FieldValue
     extends
@@ -24,6 +26,10 @@
 
     public Object getValue();
 
+    public BigDecimal getBigDecimalValue();
+
+    public BigInteger getBigIntegerValue();
+
     public char getCharValue();
 
     public int getIntValue();
@@ -39,7 +45,7 @@
     public double getDoubleValue();
 
     public boolean getBooleanValue();
-    
+
     public boolean isNull();
 
     public boolean isBooleanField();
@@ -55,7 +61,7 @@
      * @return
      */
     public boolean isCollectionField();
-    
+
     public boolean isStringField();
 
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list