[jboss-svn-commits] JBL Code SVN: r24522 - in labs/jbossrules/trunk/drools-pipeline: drools-transformer-jxls and 23 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jan 3 00:58:29 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-01-03 00:58:29 -0500 (Sat, 03 Jan 2009)
New Revision: 24522
Added:
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.project
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.settings/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.settings/org.eclipse.jdt.core.prefs
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/dataloaders/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/JxlsTransformer.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/Root.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/resources/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/dataloaders/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatefulSessionTest.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatelessSessionTest.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Company.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Department.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Employee.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/JxlsTest.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departmentData.xls
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departments.xml
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/test_JXLS.drl
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamDirectRoot.xml
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamNestedIterable.xml
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamDirectRoot.drl
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamNestedIterable.drl
Modified:
labs/jbossrules/trunk/drools-pipeline/pom.xml
Log:
JBRULES-1903 Pipeline support for DataLoaders and Feeders
-added of jXLS support
Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls
___________________________________________________________________
Name: svn:ignore
+ target
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,28 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-digester/commons-digester/1.8/commons-digester-1.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-jexl/commons-jexl/1.1/commons-jexl-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="src" path="/drools-api"/>
+ <classpathentry kind="src" path="/drools-compiler"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.0.1/jmock-2.5.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/jxls/jxls-reader/0.9.6/jxls-reader-0.9.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.5/mvel2-2.0.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/poi/poi/3.0.2-FINAL/poi-3.0.2-FINAL.jar"/>
+</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.project
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.project (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.project 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,17 @@
+<projectDescription>
+ <name>drools-transformer-jxls</name>
+ <comment>A rule production system</comment>
+ <projects>
+ <project>drools-api</project>
+ <project>drools-compiler</project>
+ <project>drools-core</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.settings/org.eclipse.jdt.core.prefs 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,5 @@
+#Wed Dec 24 01:39:28 GMT 2008
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/pom.xml 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.0.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-transformer-jxls</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: Transformer :: JXLS</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sf.jxls</groupId>
+ <artifactId>jxls-reader</artifactId>
+ <version>0.9.6</version>
+ </dependency>
+ </dependencies>
+
+ <repositories>
+ <repository>
+ <id>dist.codehaus.org</id>
+ <url>http://dist.codehaus.org</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ </repository>
+ </repositories>
+</project>
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/JxlsTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/JxlsTransformer.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/JxlsTransformer.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,107 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.Source;
+
+import net.sf.jxls.reader.XLSReadMessage;
+import net.sf.jxls.reader.XLSReadStatus;
+import net.sf.jxls.reader.XLSReader;
+
+import org.drools.builder.impl.KnowledgeBuilderImpl;
+import org.drools.io.Resource;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.pipeline.JxlsTransformerProvider;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.SmooksTransformerProvider;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.XStreamTransformerProvider;
+import org.drools.runtime.pipeline.impl.BaseEmitter;
+import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+import org.mvel2.compiler.ExpressionCompiler;
+
+public class JxlsTransformer extends BaseEmitter
+ implements
+ Transformer {
+
+ private XLSReader xlsReader;
+ private Serializable expr;
+ private String text;
+
+ public JxlsTransformer(XLSReader xlsReader,
+ String text) {
+ super();
+ this.xlsReader = xlsReader;
+ this.text = text;
+ }
+
+ public void receive(Object object,
+ PipelineContext context) {
+ ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( context.getClassLoader() );
+
+ if ( expr == null ) {
+ // create MVEL compilation
+ final ParserContext parserContext = new ParserContext();
+ parserContext.setStrictTypeEnforcement( false );
+
+ ExpressionCompiler compiler = new ExpressionCompiler( this.text );
+ this.expr = compiler.compile( parserContext );
+ }
+
+ XLSReadStatus readStatus = null;
+ Map<String, Object> beans = null;
+ try {
+ beans = (Map<String, Object>) MVEL.executeExpression( this.expr,
+ object );
+
+ // error check beans
+ if ( beans == null || !(beans instanceof Map) ) {
+ throw new RuntimeException( "Bean map expression must evaluate to a populated Map interface" );
+ }
+
+ if ( object instanceof InputStream ) {
+ readStatus = xlsReader.read( (InputStream) object,
+ beans );
+ } else if ( object instanceof Resource ) {
+ readStatus = xlsReader.read( ((Resource) object).getInputStream(),
+ beans );
+ } else {
+ throw new IllegalArgumentException( "signal object must be instance of InputStream or Resource" );
+ }
+
+ // error check xls reader
+ if ( readStatus == null || !readStatus.isStatusOK() ) {
+ StringBuilder builder = new StringBuilder();
+ builder.append( "Unable to parse resource with XLS:\n" );
+ for ( XLSReadMessage message : ((List<XLSReadMessage>) readStatus.getReadMessages()) ) {
+ builder.append( message.getMessage() + "\n" );
+ }
+ throw new RuntimeException( "Unable to parse resource with XLS:\n" + builder.toString() );
+ }
+
+ } catch ( Exception e ) {
+ handleException( this,
+ object,
+ e );
+ }
+
+ Thread.currentThread().setContextClassLoader( originalClassLoader );
+ emit( beans,
+ context );
+ }
+
+ //
+ public static class JxlsTransformerProviderImpl implements JxlsTransformerProvider {
+ public Transformer newJxlsTransformer(XLSReader xlsReader,
+ String text) {
+ return new JxlsTransformer( xlsReader, text );
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/Root.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/Root.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/main/java/org/drools/runtime/pipeline/impl/Root.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,21 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.List;
+
+public class Root {
+ private List children;
+
+ public Root() {
+
+ }
+
+ public List getChildren() {
+ return children;
+ }
+
+ public void setChildren(List children) {
+ this.children = children;
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatefulSessionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatefulSessionTest.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,140 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.common.InternalRuleBase;
+import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.dataloader.DataLoaderFactory;
+import org.drools.runtime.dataloader.StatefulKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.impl.StatefulKnowledgeSessionDataLoaderImpl;
+import org.drools.runtime.dataloader.impl.EntryPointReceiverAdapter;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.IterateSplitter;
+import org.drools.runtime.pipeline.impl.MvelExpression;
+import org.drools.runtime.rule.FactHandle;
+
+public class DroolsJxlsStatefulSessionTest extends TestCase {
+
+ public void test1() {
+
+ }
+
+// public void test1() {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+// DroolsJxlsStatefulSessionTest.class ),
+// ResourceType.DRL );
+//
+// assertFalse( kbuilder.hasErrors() );
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+// List list = new ArrayList();
+// ksession.setGlobal( "list",
+// list );
+// }
+
+ //
+ // public void testDirectRoot() throws Exception {
+ // KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ //
+ // kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+ // DroolsJxlsStatefulSessionTest.class ),
+ // ResourceType.DRL );
+ //
+ // assertFalse( kbuilder.hasErrors() );
+ //
+ // KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ // kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ //
+ // StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ // List list = new ArrayList();
+ // ksession.setGlobal( "list",
+ // list );
+ //
+ // XStream xstream = new XStream();
+ // Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
+ // transformer.addReceiver( PipelineFactory.newStatefulKnowledgeSessionReceiverAdapter() );
+ //
+ // StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
+ // transformer );
+ // Map<FactHandle, Object> handles = dataLoader.insert( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ) );
+ // ksession.fireAllRules();
+ //
+ // assertEquals( 1,
+ // handles.size() );
+ // assertEquals( 1,
+ // list.size() );
+ //
+ // assertEquals( "example.OrderItem",
+ // list.get( 0 ).getClass().getName() );
+ // }
+ //
+ // public void testNestedIterable() throws Exception {
+ // KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ //
+ // kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
+ // DroolsJxlsStatefulSessionTest.class ),
+ // ResourceType.DRL );
+ //
+ // assertFalse( kbuilder.hasErrors() );
+ //
+ // KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ // kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ //
+ // StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ // List list = new ArrayList();
+ // ksession.setGlobal( "list",
+ // list );
+ //
+ // XStream xstream = new XStream();
+ // Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
+ // Expression expression = PipelineFactory.newMvelExpression( "this" );
+ // transformer.addReceiver( expression );
+ // Splitter splitter = PipelineFactory.newIterateSplitter();
+ // expression.addReceiver( splitter );
+ // splitter.addReceiver( PipelineFactory.newStatefulKnowledgeSessionReceiverAdapter() );
+ //
+ // StatefulKnowledgeSessionDataLoader dataLoader = DataLoaderFactory.newStatefulKnowledgeSessionDataLoader( ksession,
+ // transformer );
+ //
+ // Map<FactHandle, Object> handles = dataLoader.insert( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ) );
+ // ksession.fireAllRules();
+ //
+ // assertEquals( 2,
+ // handles.size() );
+ // assertEquals( 2,
+ // list.size() );
+ //
+ // assertEquals( "example.OrderItem",
+ // list.get( 0 ).getClass().getName() );
+ // assertEquals( "example.OrderItem",
+ // list.get( 1 ).getClass().getName() );
+ //
+ // assertNotSame( list.get( 0 ),
+ // list.get( 1 ) );
+ // }
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatelessSessionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/org/drools/runtime/pipeline/impl/DroolsJxlsStatelessSessionTest.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,103 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.dataloader.StatelessKnowledgeSessionDataLoader;
+import org.drools.runtime.dataloader.impl.StatelessKnowledgeSessionDataLoaderImpl;
+import org.drools.runtime.pipeline.Expression;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Splitter;
+import org.drools.runtime.pipeline.Transformer;
+
+public class DroolsJxlsStatelessSessionTest extends TestCase {
+
+ public void test1() {
+
+ }
+
+// public void testSmooksDirectRoot() throws Exception {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamDirectRoot.drl",
+// DroolsJxlsStatefulSessionTest.class ),
+// ResourceType.DRL );
+//
+// assertFalse( kbuilder.hasErrors() );
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+// List list = new ArrayList();
+// ksession.setGlobal( "list",
+// list );
+//
+// XStream xstream = new XStream();
+// Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
+// transformer.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+//
+// StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
+// transformer );
+// dataLoader.executeObject( getClass().getResourceAsStream( "XStreamDirectRoot.xml" ) );
+//
+// assertEquals( 1,
+// list.size() );
+//
+// assertEquals( "example.OrderItem",
+// list.get( 0 ).getClass().getName() );
+// }
+//
+// public void testSmooksNestedIterable() throws Exception {
+// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+//
+// kbuilder.add( ResourceFactory.newClassPathResource( "test_XStreamNestedIterable.drl",
+// DroolsJxlsStatefulSessionTest.class ),
+// ResourceType.DRL );
+//
+// assertFalse( kbuilder.hasErrors() );
+//
+// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+// List list = new ArrayList();
+// ksession.setGlobal( "list",
+// list );
+//
+// XStream xstream = new XStream();
+// Transformer transformer = PipelineFactory.newXStreamTransformer( xstream );
+// Expression expression = PipelineFactory.newMvelExpression( "this" );
+// transformer.addReceiver( expression );
+// Splitter splitter = PipelineFactory.newIterateSplitter();
+// expression.addReceiver( splitter );
+// splitter.addReceiver( PipelineFactory.newStatelessKnowledgeSessionReceiverAdapter() );
+//
+// StatelessKnowledgeSessionDataLoader dataLoader = new StatelessKnowledgeSessionDataLoaderImpl( ksession,
+// transformer );
+// dataLoader.executeIterable( getClass().getResourceAsStream( "XStreamNestedIterable.xml" ) );
+//
+// assertEquals( 2,
+// list.size() );
+//
+// assertEquals( "example.OrderItem",
+// list.get( 0 ).getClass().getName() );
+// assertEquals( "example.OrderItem",
+// list.get( 1 ).getClass().getName() );
+//
+// assertNotSame( list.get( 0 ),
+// list.get( 1 ) );
+// }
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Company.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Company.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Company.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,59 @@
+package sample;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Sample Department bean to demostrate main excel export features
+ * author: Leonid Vysochyn
+ */
+public class Company {
+ private String name;
+ private Employee chief = new Employee();
+ private List employee = new ArrayList();
+
+ public Company() {
+ }
+
+ public Company(String name) {
+ this.name = name;
+ }
+
+ public Company(String name, Employee chief, List staff) {
+ this.name = name;
+ this.chief = chief;
+ this.employee = staff;
+ }
+
+ public void addEmployee(Employee employee) {
+ this.employee.add(employee);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Employee getChief() {
+ return chief;
+ }
+
+ public void setChief(Employee chief) {
+ this.chief = chief;
+ }
+
+ public List getEmployee() {
+ return employee;
+ }
+
+ public void setEmployee(List staff) {
+ this.employee = employee;
+ }
+
+ public String toString() {
+ return "[Company name : " + this.name + " chief : " + this.chief + " staff : " + this.employee + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Department.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Department.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Department.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,59 @@
+package sample;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Sample Department bean to demostrate main excel export features
+ * author: Leonid Vysochyn
+ */
+public class Department {
+ private String name;
+ private Employee chief = new Employee();
+ private List staff = new ArrayList();
+
+ public Department() {
+ }
+
+ public Department(String name) {
+ this.name = name;
+ }
+
+ public Department(String name, Employee chief, List staff) {
+ this.name = name;
+ this.chief = chief;
+ this.staff = staff;
+ }
+
+ public void addEmployee(Employee employee) {
+ this.staff.add(employee);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Employee getChief() {
+ return chief;
+ }
+
+ public void setChief(Employee chief) {
+ this.chief = chief;
+ }
+
+ public List getStaff() {
+ return staff;
+ }
+
+ public void setStaff(List staff) {
+ this.staff = staff;
+ }
+
+ public String toString() {
+ return "[Department name : " + this.name + " chief : " + this.chief + " staff : " + this.staff + "]";
+ }
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Employee.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Employee.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/Employee.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,120 @@
+package sample;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Sample Employee bean to demostrate simple export features
+ * @author Leonid Vysochyn
+ */
+public class Employee {
+ private String name;
+ private Integer age;
+ private Double payment;
+ private Double bonus;
+ private Date birthDate;
+ private Employee superior;
+ private List notes;
+ private String id;
+
+
+ public Employee() {
+ }
+
+ public List getNotes() {
+ return notes;
+ }
+
+ public void setNotes(List notes) {
+ this.notes = notes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Employee(String name, Integer age, Double payment, Double bonus) {
+ this.name = name;
+ this.age = age;
+ this.payment = payment;
+ this.bonus = bonus;
+ }
+
+ public Employee(String name, int age, double payment, double bonus, Date birthDate) {
+ this.name = name;
+ this.age = new Integer(age);
+ this.payment = new Double(payment);
+ this.bonus = new Double(bonus);
+ this.birthDate = birthDate;
+ }
+
+ public Employee(String name, Double payment, Double bonus) {
+ this.name = name;
+ this.payment = payment;
+ this.bonus = bonus;
+ }
+
+ public Employee(String name, int age, double payment, double bonus) {
+ this.name = name;
+ this.age = new Integer(age);
+ this.payment = new Double(payment);
+ this.bonus = new Double(bonus);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Double getPayment() {
+ return payment;
+ }
+
+ public void setPayment(Double payment) {
+ this.payment = payment;
+ }
+
+ public Double getBonus() {
+ return bonus;
+ }
+
+ public void setBonus(Double bonus) {
+ this.bonus = bonus;
+ }
+
+ public Date getBirthDate() {
+ return birthDate;
+ }
+
+ public void setBirthDate(Date birthDate) {
+ this.birthDate = birthDate;
+ }
+
+ public Employee getSuperior() {
+ return superior;
+ }
+
+ public void setSuperior(Employee superior) {
+ this.superior = superior;
+ }
+
+ public String toString() {
+ return "[Employee name : " + this.name + "]";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/JxlsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/JxlsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/JxlsTest.java 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,67 @@
+package sample;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.builder.impl.KnowledgeBuilderImpl;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.pipeline.Callable;
+import org.drools.runtime.pipeline.ListAdapter;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.pipeline.impl.BasePipelineContext;
+import org.drools.runtime.pipeline.impl.JxlsTransformer;
+import org.drools.runtime.pipeline.impl.ListAdapterImpl;
+import org.mvel2.MVEL;
+import org.mvel2.ParserConfiguration;
+import org.mvel2.ParserContext;
+
+import junit.framework.TestCase;
+import net.sf.jxls.reader.ReaderBuilder;
+import net.sf.jxls.reader.XLSDataReadException;
+import net.sf.jxls.reader.XLSReadStatus;
+import net.sf.jxls.reader.XLSReader;
+
+public class JxlsTest extends TestCase {
+ public void test1() throws Exception {
+ InputStream stream = getClass().getResourceAsStream( "departments.xml");
+ assertNotNull( stream );
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ // kbuilder.add( ResourceFactory.newClassPathResource( "test_JXLS.drl", getClass() ), ResourceType.DRL );
+
+ ClassLoader cl = ((KnowledgeBuilderImpl)kbuilder).pkgBuilder.getRootClassLoader();
+ Thread.currentThread().setContextClassLoader( cl );
+
+ InputStream inputXML = new BufferedInputStream( stream );
+ XLSReader mainReader = ReaderBuilder.buildFromXML( inputXML );
+ InputStream inputXLS = new BufferedInputStream(getClass().getResourceAsStream( "departmentData.xls"));
+
+ List list = new ArrayList();
+ Callable callable = PipelineFactory.newCallable();
+ Transformer transformer = PipelineFactory.newJxlsTransformer(mainReader, "[ 'departments' : new java.util.ArrayList(), 'company' : new sample.Company() ]");
+ callable.addReceiver( transformer );
+ transformer.addReceiver( callable );
+// ListAdapter adapter = PipelineFactory.newListAdapter( list, true );
+// transformer.addReceiver( adapter );
+
+ BasePipelineContext context = new BasePipelineContext( Thread.currentThread().getContextClassLoader() );
+
+ Map<String, Object> beans = ( Map<String, Object> ) callable.call( inputXLS, context );
+
+ //callable.signal( inputXLS, context );
+ //Map<String, Object> beans = ( Map<String, Object> ) list.get( 0 );
+
+ System.out.println( beans.get( "company" ) );
+ System.out.println( beans.get( "departments" ) );
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departmentData.xls
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departmentData.xls
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departments.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departments.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/departments.xml 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<workbook>
+ <worksheet name="Sheet1">
+
+ <section startRow="0" endRow="6">
+ <mapping cell="B1">company.name</mapping>
+ </section>
+ <loop startRow="7" endRow="7" items="company.employee" var="employee" varType="sample.Employee">
+ <section startRow="7" endRow="7">
+ <mapping row="7" col="0">employee.name</mapping>
+ <mapping row="7" col="1">employee.age</mapping>
+ <mapping row="7" col="3">employee.payment</mapping>
+ <mapping row="7" col="4">employee.bonus</mapping>
+ </section>
+ <loopbreakcondition>
+ <rowcheck offset="0">
+ <cellcheck offset="0">Employee Payment Totals:</cellcheck>
+ </rowcheck>
+ </loopbreakcondition>
+ </loop>
+
+ </worksheet>
+ <worksheet name="Sheet3">
+ <loop startRow="0" endRow="8" items="departments" var="department" varType="sample.Department">
+ <section startRow="0" endRow="6">
+ <mapping row="0" col="1">department.name</mapping>
+ </section>
+ <loop startRow="7" endRow="7" items="department.staff" var="employee" varType="sample.Employee">
+ <section startRow="7" endRow="7">
+ <mapping row="7" col="0">employee.name</mapping>
+ <mapping row="7" col="1">employee.age</mapping>
+ <mapping row="7" col="2">employee.payment</mapping>
+ <mapping row="7" col="3">employee.bonus</mapping>
+ </section>
+ <loopbreakcondition>
+ <rowcheck offset="0">
+ <cellcheck offset="0">Employee Payment Totals:</cellcheck>
+ </rowcheck>
+ </loopbreakcondition>
+ </loop>
+ <section startRow="8" endRow="8"/>
+ <loopbreakcondition>
+ <rowcheck offset="0"/>
+ <rowcheck offset="1"/>
+ </loopbreakcondition>
+ </loop>
+ </worksheet>
+</workbook>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/test_JXLS.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/test_JXLS.drl (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/java/sample/test_JXLS.drl 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,17 @@
+package sample
+
+import java.util.List
+// this doesn't work, as we don't support default values
+
+
+declare Department
+ name : String
+ chief : Employee
+ staff : List
+end
+
+declare Company
+ name : String
+ chief : Employee
+ employee : List
+end
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamDirectRoot.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamDirectRoot.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamDirectRoot.xml 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,5 @@
+<example.OrderItem>
+ <productId>222</productId>
+ <quantity>7</quantity>
+ <price>5.20</price>
+</example.OrderItem>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamNestedIterable.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamNestedIterable.xml (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/XStreamNestedIterable.xml 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,12 @@
+<java.util.ArrayList>
+ <example.OrderItem>
+ <productId>111</productId>
+ <quantity>2</quantity>
+ <price>8.90</price>
+ </example.OrderItem>
+ <example.OrderItem>
+ <productId>222</productId>
+ <quantity>7</quantity>
+ <price>5.20</price>
+ </example.OrderItem>
+</java.util.ArrayList>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamDirectRoot.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamDirectRoot.drl (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamDirectRoot.drl 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,16 @@
+package example
+
+global java.util.List list;
+
+declare OrderItem
+ productId : long
+ quantity : Integer
+ price : double
+end
+
+rule someRule
+when
+ $i : OrderItem()
+then
+ list.add( $i );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamNestedIterable.drl
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamNestedIterable.drl (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/src/test/resources/org/drools/runtime/pipeline/impl/test_XStreamNestedIterable.drl 2009-01-03 05:58:29 UTC (rev 24522)
@@ -0,0 +1,16 @@
+package example
+
+global java.util.List list;
+
+declare OrderItem
+ productId : long
+ quantity : Integer
+ price : double
+end
+
+rule someRule
+when
+ $i : OrderItem()
+then
+ list.add( $i );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-pipeline/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/pom.xml 2009-01-02 23:02:40 UTC (rev 24521)
+++ labs/jbossrules/trunk/drools-pipeline/pom.xml 2009-01-03 05:58:29 UTC (rev 24522)
@@ -16,7 +16,7 @@
<module>drools-transformer-smooks</module>
<module>drools-transformer-jaxb</module>
<module>drools-transformer-xstream</module>
- <!--module>drools-transformer-jxls</module-->
+ <module>drools-transformer-jxls</module>
</modules>
</project>
More information about the jboss-svn-commits
mailing list