[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