[jboss-svn-commits] JBL Code SVN: r12000 - in labs/jbossrules/contrib/apocrif/jbossrules/src: test/java/jbossrules/tests and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun May 20 22:43:05 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-05-20 22:43:05 -0400 (Sun, 20 May 2007)
New Revision: 12000

Modified:
   labs/jbossrules/contrib/apocrif/jbossrules/src/main/java/apocrif/engine/jbossrules/Rif2DrlTranslator.java
   labs/jbossrules/contrib/apocrif/jbossrules/src/test/java/jbossrules/tests/JBossRulesTest.java
   labs/jbossrules/contrib/apocrif/jbossrules/src/test/resources/xml/simpleTest.xml
Log:


Modified: labs/jbossrules/contrib/apocrif/jbossrules/src/main/java/apocrif/engine/jbossrules/Rif2DrlTranslator.java
===================================================================
--- labs/jbossrules/contrib/apocrif/jbossrules/src/main/java/apocrif/engine/jbossrules/Rif2DrlTranslator.java	2007-05-21 01:01:45 UTC (rev 11999)
+++ labs/jbossrules/contrib/apocrif/jbossrules/src/main/java/apocrif/engine/jbossrules/Rif2DrlTranslator.java	2007-05-21 02:43:05 UTC (rev 12000)
@@ -5,6 +5,7 @@
 import java.io.StringWriter;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -173,6 +174,8 @@
         }
         builder.append( sw );
 
+        System.out.println( builder.toString() );
+        
         return builder.toString();
     }
     
@@ -231,7 +234,7 @@
         rifRule.getThenPart().accept( this );
         writer.print( buffer.toString() );
 
-        writer.print( "end" );
+        writer.println( "end\n" );
 
         return null;
     }
@@ -283,14 +286,29 @@
 
         XmlFieldSetter fieldSetter = prHelper.getXmlFieldSetter( n );
         if ( fieldSetter != null ) {
+            ClassMapping mapping = ( ClassMapping ) this.mappings.get( fieldSetter.xmlDeclaringCType );
+            String fieldName = mapping.getFieldNameMapping( fieldSetter.xmlField.getLocalPart() );
+            
             buffer.append( ((Variable) fieldSetter.targetTerm).getName() );
             buffer.append( '.' );
-            buffer.append( "set" + ucFirst( fieldSetter.xmlField.getLocalPart() ) );
+            buffer.append( "set" + ucFirst( fieldName ) );
             buffer.append( '(' );
+             if ( (( Const)fieldSetter.newTerm).getType().getLocalPart().equals( "integer" ) ) {
+                 buffer.append(  "new java.math.BigInteger( \"" );
+                 fieldSetter.newTerm.accept( this );
+                 buffer.append( "\" ) " );
+             } else if ( (( Const)fieldSetter.newTerm).getType().getLocalPart().equals( "decimal" ) ) {
+                 buffer.append(  "new java.math.BigDecimal( \"" );
+                 fieldSetter.newTerm.accept( this );
+                 buffer.append( "\" ) " );
+             } else {
+                 fieldSetter.newTerm.accept( this );
+             }
             //buffer = new StringBuilder();
-            fieldSetter.newTerm.accept( this );
+            
             //buffer.append( buffer.toString() );
             buffer.append( ");\n" );
+            //buffer.append( "modify(" + ((Variable) fieldSetter.targetTerm).getName() + ");\n" );
             return null;
         }
 

Modified: labs/jbossrules/contrib/apocrif/jbossrules/src/test/java/jbossrules/tests/JBossRulesTest.java
===================================================================
--- labs/jbossrules/contrib/apocrif/jbossrules/src/test/java/jbossrules/tests/JBossRulesTest.java	2007-05-21 01:01:45 UTC (rev 11999)
+++ labs/jbossrules/contrib/apocrif/jbossrules/src/test/java/jbossrules/tests/JBossRulesTest.java	2007-05-21 02:43:05 UTC (rev 12000)
@@ -5,6 +5,8 @@
 import java.io.FileReader;
 import java.io.Reader;
 import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.net.URI;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -109,6 +111,8 @@
 
         // check values before executing the rule session
         assertEquals( "B1", application.getREOPROPERTY().getBorrowerID() );
+        assertEquals( BigInteger.valueOf( 12 ), application.getLOANPRODUCTDATA().getRATEADJUSTMENT().getFirstRateAdjustmentMonths()  );
+        assertEquals( new BigDecimal( "2.000" ), application.getLOANPRODUCTDATA().getRATEADJUSTMENT().getSubsequentCapPercent()  );
         
         StatelessSession session = ruleBase.newStatelessSession();
         StatelessSessionResult results = session.executeWithResults( new Object[] { application }  );
@@ -116,7 +120,9 @@
         LOANAPPLICATION returnedApplication = ( LOANAPPLICATION ) results.iterateObjects().next();        
         
         // check vlaues after executing the rule session
-        assertEquals( "B2", returnedApplication.getREOPROPERTY().getBorrowerID() );
+        //assertEquals( "B2", returnedApplication.getREOPROPERTY().getBorrowerID() );
+        assertEquals( BigInteger.valueOf( 6 ), returnedApplication.getLOANPRODUCTDATA().getRATEADJUSTMENT().getFirstRateAdjustmentMonths()  );
+        assertEquals( new BigDecimal( "4.000" ), returnedApplication.getLOANPRODUCTDATA().getRATEADJUSTMENT().getSubsequentCapPercent()  );
 
         // This is how you "write" the results back to a stream using jaxb marshalling.
         Marshaller marshaller = jc.createMarshaller();

Modified: labs/jbossrules/contrib/apocrif/jbossrules/src/test/resources/xml/simpleTest.xml
===================================================================
--- labs/jbossrules/contrib/apocrif/jbossrules/src/test/resources/xml/simpleTest.xml	2007-05-21 01:01:45 UTC (rev 11999)
+++ labs/jbossrules/contrib/apocrif/jbossrules/src/test/resources/xml/simpleTest.xml	2007-05-21 02:43:05 UTC (rev 12000)
@@ -1,15 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Ruleset xmlns:aprif="http://apocrif/pr" xmlns:ns0="mismo" xmlns:xpath="http://www.w3.org/2005/xpath-functions" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <name>IlrContext</name>
+  <name>JBossRulesContext</name>
   <ProductionRule>
     <name>rule 1</name>
     <declare>
       <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
     </declare>
+    
     <declare>
       <Var type="ns0:REO_PROPERTY">reoproperty</Var>
     </declare>
 
+    <declare>
+      <Var type="ns0:LOAN_PRODUCT_DATA">loanProductData</Var>
+    </declare>
+
+    <declare>
+      <Var type="ns0:RATE_ADJUSTMENT">rateAdjustment</Var>
+    </declare>
+
+
+
     <if>
       <And>
         <Equal>
@@ -21,8 +32,122 @@
           </Uniterm>
           <Const type="xsd:string">B1</Const>
         </Equal>
+        
+        <Equal>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:RATE_ADJUSTMENT</Const>
+            <Const>FirstRateAdjustmentMonths</Const>
+            <Var type="ns0:REO_PROPERTY">rateAdjustment</Var>
+          </Uniterm>
+          <Const type="xsd:integer">12</Const>
+        </Equal>        
+      </And>          
+    </if>
+    
+    <constaints>
+      <And>
+        <Uniterm>
+          <Const type="xsd:QName">aprif:fromGeneratorOp</Const>
+          <Var type="ns0:REO_PROPERTY">reoproperty</Var>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:LOAN_APPLICATION</Const>
+            <Const>REO_PROPERTY</Const>
+            <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
+          </Uniterm>
+        </Uniterm>
+        
+        <Uniterm>
+          <Const type="xsd:QName">aprif:fromGeneratorOp</Const>
+          <Var type="ns0:LOAN_PRODUCT_DATA">loanProductData</Var>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:LOAN_APPLICATION</Const>
+            <Const>LOAN_PRODUCT_DATA</Const>
+            <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
+          </Uniterm>
+        </Uniterm>  
+        
+        <Uniterm>
+          <Const type="xsd:QName">aprif:fromGeneratorOp</Const>
+          <Var type="ns0:LOAN_PRODUCT_DATA">rateAdjustment</Var>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:LOAN_PRODUCT_DATA</Const>
+            <Const>RATE_ADJUSTMENT</Const>
+            <Var type="ns0:LOAN_APPLICATION">loanProductData</Var>
+          </Uniterm>
+        </Uniterm>                
+        
       </And>
+    </constaints>
+    
+    <then>      
+      <Uniterm>
+        <Const type="xsd:QName">aprif:xmlSetter</Const>
+        <Const type="xsd:QName">ns0:RATE_ADJUSTMENT</Const>
+        <Const>FirstRateAdjustmentMonths</Const>
+        <Var type="ns0:REOPROPERTY">rateAdjustment</Var>
+        <Const type="xsd:integer">6</Const>
+      </Uniterm>      
+    </then>
+  </ProductionRule>
+  
+  <ProductionRule>
+    <name>rule 2</name>
+    <declare>
+      <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
+    </declare>
+    
+    <declare>
+      <Var type="ns0:REO_PROPERTY">reoproperty</Var>
+    </declare>
+
+    <declare>
+      <Var type="ns0:LOAN_PRODUCT_DATA">loanProductData</Var>
+    </declare>
+
+    <declare>
+      <Var type="ns0:RATE_ADJUSTMENT">rateAdjustment</Var>
+    </declare>
+
+
+
+    <if>
+      <And>
+        <Equal>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:REO_PROPERTY</Const>
+            <Const>BorrowerID</Const>
+            <Var type="ns0:REO_PROPERTY">reoproperty</Var>
+          </Uniterm>
+          <Const type="xsd:string">B1</Const>
+        </Equal>        
+        
+        <Equal>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:RATE_ADJUSTMENT</Const>
+            <Const>FirstRateAdjustmentMonths</Const>
+            <Var type="ns0:REO_PROPERTY">rateAdjustment</Var>
+          </Uniterm>
+          <Const type="xsd:integer">12</Const>
+        </Equal>  
+        
+        <Equal>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:RATE_ADJUSTMENT</Const>
+            <Const>_SubsequentCapPercent</Const>
+            <Var type="ns0:REO_PROPERTY">rateAdjustment</Var>
+          </Uniterm>        
+          <Const type="xsd:decimal">2.000</Const>
+        </Equal>               
+      </And>          
     </if>
+    
     <constaints>
       <And>
         <Uniterm>
@@ -35,16 +160,40 @@
             <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
           </Uniterm>
         </Uniterm>
+        
+        <Uniterm>
+          <Const type="xsd:QName">aprif:fromGeneratorOp</Const>
+          <Var type="ns0:LOAN_PRODUCT_DATA">loanProductData</Var>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:LOAN_APPLICATION</Const>
+            <Const>LOAN_PRODUCT_DATA</Const>
+            <Var type="ns0:LOAN_APPLICATION">loanApplication</Var>
+          </Uniterm>
+        </Uniterm>  
+        
+        <Uniterm>
+          <Const type="xsd:QName">aprif:fromGeneratorOp</Const>
+          <Var type="ns0:LOAN_PRODUCT_DATA">rateAdjustment</Var>
+          <Uniterm>
+            <Const type="xsd:QName">aprif:xmlGetter</Const>
+            <Const type="xsd:QName">ns0:LOAN_PRODUCT_DATA</Const>
+            <Const>RATE_ADJUSTMENT</Const>
+            <Var type="ns0:LOAN_APPLICATION">loanProductData</Var>
+          </Uniterm>
+        </Uniterm>                
+        
       </And>
     </constaints>
-    <then>
+    
+    <then>      
       <Uniterm>
         <Const type="xsd:QName">aprif:xmlSetter</Const>
-        <Const type="xsd:QName">ns0:REOPROPERTY</Const>
-        <Const>BorrowerID</Const>
-        <Var type="ns0:REOPROPERTY">reoproperty</Var>
-        <Const type="xsd:string">B2</Const>
-      </Uniterm>
+        <Const type="xsd:QName">ns0:RATE_ADJUSTMENT</Const>
+        <Const>_SubsequentCapPercent</Const>
+        <Var type="ns0:REOPROPERTY">rateAdjustment</Var>
+        <Const type="xsd:decimal">4.000</Const>
+      </Uniterm>      
     </then>
-  </ProductionRule>
+  </ProductionRule>  
 </Ruleset>
\ No newline at end of file




More information about the jboss-svn-commits mailing list