[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