[jboss-svn-commits] JBL Code SVN: r24012 - in labs/jbossrules/trunk: drools-decisiontables/src/main/java/org/drools/decisiontable and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 20 18:48:35 EST 2008


Author: Rikkola
Date: 2008-11-20 18:48:35 -0500 (Thu, 20 Nov 2008)
New Revision: 24012

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
   labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java
   labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java
   labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
   labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java
Log:
JBRULES-1734: Drools API
-Made it possible to add encoded XLS decision tables with out setting any encoding
-Made it impossible to use addResource(Reader,KnowledgeType,DecisionTableConfiguration) to add XLS decision tables

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableFactory.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -13,6 +13,13 @@
         DecisionTableFactory.provider = provider;
     }
     
+    public static String loadFromInputStream(InputStream is, DecisionTableConfiguration configuration) {
+        if ( provider == null ) {
+            loadProvider();
+        }
+        return provider.loadFromInputStream( is, configuration );
+    } 
+
     public static String loadFromReader(Reader reader, DecisionTableConfiguration configuration) {
         if ( provider == null ) {
             loadProvider();

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/DecisionTableProvider.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -1,5 +1,6 @@
 package org.drools.compiler;
 
+import java.io.InputStream;
 import java.io.Reader;
 
 import org.drools.builder.DecisionTableConfiguration;
@@ -8,5 +9,8 @@
 
     String loadFromReader(Reader reader, DecisionTableConfiguration configuration);
 
+    String loadFromInputStream(InputStream is,
+                               DecisionTableConfiguration configuration);
 
+
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -36,6 +36,7 @@
 import org.drools.base.ClassFieldAccessorCache;
 import org.drools.base.ClassFieldAccessorStore;
 import org.drools.builder.DecisionTableConfiguration;
+import org.drools.builder.DecisionTableInputType;
 import org.drools.builder.KnowledgeType;
 import org.drools.builder.ResourceConfiguration;
 import org.drools.common.InternalRuleBase;
@@ -323,27 +324,27 @@
             addPackage( pkg );
         }
     }
-    
+
     public void addPackageFromDslr(final Reader source) {
         final DrlParser parser = new DrlParser();
         DefaultExpander expander = getDslExpander();
-        
+
         try {
-            String str = expander.expand(  source );
+            String str = expander.expand( source );
             if ( expander.hasErrors() ) {
-                this.results.addAll( expander.getErrors() );           
+                this.results.addAll( expander.getErrors() );
             }
-            
+
             final PackageDescr pkg = parser.parse( str );
             this.results.addAll( parser.getErrors() );
             if ( !parser.hasErrors() ) {
                 addPackage( pkg );
             }
-        } catch (Exception e) {
+        } catch ( Exception e ) {
             throw new RuntimeException( e );
         }
     }
-    
+
     public void addPackageFromDslr(final URL url) {
         this.url = url.toExternalForm();
         try {
@@ -352,8 +353,8 @@
             throw new RuntimeException( e );
         }
         this.url = null;
-    }    
-    
+    }
+
     public void addDsl(Reader dsl) {
         try {
             DSLTokenizedMappingFile file = new DSLTokenizedMappingFile();
@@ -366,7 +367,7 @@
             throw new RuntimeException( e );
         }
     }
-    
+
     public void addDsl(URL url) {
         this.url = url.toExternalForm();
         try {
@@ -410,24 +411,43 @@
 
         this.results = getResults( this.results );
     }
-    
-    public void addResource(URL url, KnowledgeType type) {
-        addResource( url, type, null );
+
+    public void addResource(URL url,
+                            KnowledgeType type) {
+        addResource( url,
+                     type,
+                     null );
     }
-    
-    public void addResource(URL url, KnowledgeType type, ResourceConfiguration configuration) {
+
+    public void addResource(URL url,
+                            KnowledgeType type,
+                            ResourceConfiguration configuration) {
         try {
-            addResource( new InputStreamReader( url.openStream() ), type, configuration );
+            if ( type == KnowledgeType.DTABLE ) {
+                DecisionTableConfiguration dtableConfiguration = (DecisionTableConfiguration) configuration;
+
+                String string = DecisionTableFactory.loadFromInputStream( url.openStream(),
+                                                                          dtableConfiguration );
+                addPackageFromDrl( new StringReader( string ) );
+            } else {
+                addResource( new InputStreamReader( url.openStream() ),
+                             type,
+                             configuration );
+            }
+        } catch ( DroolsParserException e ) {
+            throw new RuntimeException( e );
         } catch ( IOException e ) {
             throw new RuntimeException( e );
         }
-    }   
-    
+    }
+
     public void addResource(Reader reader,
                             KnowledgeType type) {
-        addResource(reader, type, null);
+        addResource( reader,
+                     type,
+                     null );
     }
-    
+
     public void addResource(Reader reader,
                             KnowledgeType type,
                             ResourceConfiguration configuration) {
@@ -436,8 +456,8 @@
                 case DRL : {
                     addPackageFromDrl( reader );
                     break;
-                    
-                } 
+
+                }
                 case DSLR : {
                     addPackageFromDslr( reader );
                     break;
@@ -455,15 +475,21 @@
                     break;
                 }
                 case DTABLE : {
-                    String string = DecisionTableFactory.loadFromReader( reader, (DecisionTableConfiguration) configuration );
+                    DecisionTableConfiguration dtableConfiguration = (DecisionTableConfiguration) configuration;
+                    if ( dtableConfiguration.getInputType() == DecisionTableInputType.XLS ) {
+                        throw new IllegalArgumentException( "Use addResource(URL url, KnowledgeType type, ResourceConfiguration configuration) when adding XLS decision tables." );
+                    }
+
+                    String string = DecisionTableFactory.loadFromReader( reader,
+                                                                         dtableConfiguration );
                     addPackageFromDrl( new StringReader( string ) );
                     break;
                 }
             }
-        } catch (Exception e) {
+        } catch ( Exception e ) {
             throw new RuntimeException( e );
-        }    
-    }       
+        }
+    }
 
     /**
      * This adds a package from a Descr/AST This will also trigger a compile, if

Modified: labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-decisiontables/src/main/java/org/drools/decisiontable/DecisionTableProviderImpl.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -13,6 +13,13 @@
     implements
     DecisionTableProvider {
 
+    public String loadFromInputStream(InputStream is,
+                                      DecisionTableConfiguration configuration) {
+
+        return compileStream( is,
+                              configuration );
+    }
+
     public String loadFromReader(Reader reader,
                                  DecisionTableConfiguration configuration) {
         InputStream is;
@@ -23,6 +30,12 @@
             is = new ReaderInputStream( reader );
         }
 
+        return compileStream( is,
+                              configuration );
+    }
+
+    private String compileStream(InputStream is,
+                                 DecisionTableConfiguration configuration) {
         SpreadsheetCompiler compiler = new SpreadsheetCompiler();
         switch ( configuration.getInputType() ) {
             case XLS : {

Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/acme/insurance/launcher/PricingRuleLauncher.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -39,8 +39,7 @@
         DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
         dtconf.setInputType( DecisionTableInputType.XLS );
 
-        kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( "/data/ExamplePolicyPricing.xls" ),
-                                                     "windows-1252" ),
+        kbuilder.addResource( getClass().getResource( "/data/ExamplePolicyPricing.xls" ),
                               KnowledgeType.DTABLE,
                               dtconf );
 

Modified: labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-decisiontables/src/test/java/org/drools/decisiontable/SpreadsheetIntegrationTest.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -40,8 +40,7 @@
         DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
         dtconf.setInputType( DecisionTableInputType.XLS );
 
-        kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( "/data/IntegrationExampleTest.xls" ),
-                                                     "windows-1252" ),
+        kbuilder.addResource( getClass().getResource( "/data/IntegrationExampleTest.xls" ),
                               KnowledgeType.DTABLE,
                               dtconf );
 
@@ -77,8 +76,7 @@
         dtconf.setInputType( DecisionTableInputType.XLS );
         dtconf.setWorksheetName( "Tables_2" );
 
-        kbuilder.addResource( new InputStreamReader( getClass().getResourceAsStream( "/data/IntegrationExampleTest.xls" ),
-                                                     "windows-1252" ),
+        kbuilder.addResource( getClass().getResource( "/data/IntegrationExampleTest.xls" ),
                               KnowledgeType.DTABLE,
                               dtconf );
 

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -1,9 +1,7 @@
 package org.drools.examples;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringReader;
+import java.net.MalformedURLException;
+import java.net.URL;
 
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
@@ -32,11 +30,11 @@
         dtableconfiguration.setInputType( DecisionTableInputType.XLS );
 
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        kbuilder.addResource( new InputStreamReader( getSpreadsheetStream(),
-                                                    "windows-1252" ),
-                             KnowledgeType.DTABLE,
-                             dtableconfiguration );
 
+        kbuilder.addResource( getSpreadsheetURL(),
+                              KnowledgeType.DTABLE,
+                              dtableconfiguration );
+
         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
         kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
 
@@ -56,8 +54,8 @@
 
     }
 
-    private InputStream getSpreadsheetStream() {
-        return this.getClass().getResourceAsStream( "ExamplePolicyPricing.xls" );
+    private URL getSpreadsheetURL() throws MalformedURLException {
+        return getClass().getResource( "ExamplePolicyPricing.xls" );
     }
 
 }

Modified: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java	2008-11-20 23:02:18 UTC (rev 24011)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/troubleticket/TroubleTicketWithDT.java	2008-11-20 23:48:35 UTC (rev 24012)
@@ -1,7 +1,7 @@
 package org.drools.examples.troubleticket;
 
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
 
 import org.drools.KnowledgeBase;
 import org.drools.KnowledgeBaseFactory;
@@ -30,10 +30,9 @@
         dtableconfiguration.setInputType( DecisionTableInputType.XLS );
 
         final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        kbuilder.addResource( new InputStreamReader( getSpreadsheetStream(),
-                                                    "windows-1252" ),
-                             KnowledgeType.DTABLE,
-                             dtableconfiguration );
+        kbuilder.addResource( getSpreadsheetURL(),
+                              KnowledgeType.DTABLE,
+                              dtableconfiguration );
 
         final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
         kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
@@ -77,7 +76,7 @@
         t3.setStatus( "Done" );
 
         ksession.update( ft3,
-                        t3 );
+                         t3 );
 
         try {
             System.err.println( "[[ Sleeping 5 seconds ]]" );
@@ -94,8 +93,8 @@
 
     }
 
-    private InputStream getSpreadsheetStream() {
-        return this.getClass().getResourceAsStream( "TroubleTicket.xls" );
+    private URL getSpreadsheetURL() throws MalformedURLException {
+        return getClass().getResource( "TroubleTicket.xls" );
     }
 
 }




More information about the jboss-svn-commits mailing list