[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