[jboss-svn-commits] JBL Code SVN: r25311 - in labs/jbossrules/trunk/drools-process/drools-workitems: src/main/java/org/drools/process/workitem and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 17 12:59:12 EST 2009


Author: salaboy21
Date: 2009-02-17 12:59:12 -0500 (Tue, 17 Feb 2009)
New Revision: 25311

Added:
   labs/jbossrules/trunk/drools-process/drools-workitems/drools.ftp.conf
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf
   labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/
   labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java
Modified:
   labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
Log:
FTPUPload file Custom work item. Using FTPServer and apache commons.net.ftp.FTPClient

Added: labs/jbossrules/trunk/drools-process/drools-workitems/drools.ftp.conf
===================================================================

Modified: labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml	2009-02-17 17:45:28 UTC (rev 25310)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/pom.xml	2009-02-17 17:59:12 UTC (rev 25311)
@@ -89,8 +89,30 @@
         <version>0.9</version>
     </dependency>
 
-
-   
+   <!-- FTP Client LIB -->
+   <dependency> 
+        <groupId>commons-net</groupId>
+        <artifactId>commons-net</artifactId>
+        <version>2.0</version>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.ftpserver</groupId>
+        <artifactId>ftpserver-core</artifactId>
+        <version>1.0.0-RC2</version>
+        <scope>test</scope>
+    </dependency>
+  <dependency>
+    <groupId>org.slf4j</groupId>
+    <artifactId>slf4j-api</artifactId>
+    <version>1.5.6</version>
+  </dependency>
+  <dependency>
+    <groupId>org.slf4j</groupId>
+    <artifactId>slf4j-log4j12</artifactId>
+    <version>1.5.6</version>
+    <scope>test</scope>
+  </dependency>
+   <!-- END FTP Client LIB -->
   </dependencies>
 
 </project>

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/java/org/drools/process/workitem/ftp/FTPUploadWorkItemHandler.java	2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,125 @@
+/*
+ *  Copyright 2009 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.process.workitem.ftp;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.SocketException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.commons.net.ftp.FTP;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.runtime.process.WorkItem;
+import org.drools.runtime.process.WorkItemManager;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+import org.drools.process.workitem.email.Connection;
+
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class FTPUploadWorkItemHandler implements WorkItemHandler {
+    private String user;
+    private String password;
+    private String server;
+    private String filePath;
+    private int port;
+    private FTPClient client; 
+   
+    private Connection connection;
+    private boolean result = false;
+
+	public void setConnection(String host, String port, String userName, String password) {
+		connection = new Connection();
+		connection.setHost(host);
+		connection.setPort(port);
+		connection.setUserName(userName);
+		connection.setPassword(password);
+	}
+    
+
+
+
+    public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+
+        
+
+        this.user = (String) workItem.getParameter("User");
+        this.password = (String) workItem.getParameter("Password");
+        this.filePath = (String) workItem.getParameter("FilePath");
+        
+        client = new FTPClient();
+        try {
+            if(connection != null){
+                client.connect(connection.getHost(), Integer.parseInt(connection.getPort()));
+                int reply = client.getReplyCode();
+
+                if (FTPReply.isPositiveCompletion(reply))
+                {
+            
+                    if(client.login(user, password)){
+
+                        InputStream input;
+                        input = new FileInputStream(filePath);
+                        client.setFileType(FTP.BINARY_FILE_TYPE);
+                        this.setResult(client.storeFile(filePath, input));
+                         client.logout();
+                    }
+                }
+
+            }
+        } catch (SocketException ex) {
+            Logger.getLogger(FTPUploadWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (IOException ex) {
+            Logger.getLogger(FTPUploadWorkItemHandler.class.getName()).log(Level.SEVERE, null, ex);
+        }
+       
+       
+       
+
+        manager.completeWorkItem(workItem.getId(), null);
+
+         
+    }
+
+    public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    /**
+     * @return the result
+     */
+    public boolean isResult() {
+        return result;
+    }
+
+    /**
+     * @param result the result to set
+     */
+    public void setResult(boolean result) {
+        this.result = result;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/META-INF/drools.ftp.conf	2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,2 @@
+host = localhost
+port = 21

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/main/resources/myusers.properties	2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,9 @@
+ ftpserver.user.anon.homedirectory=/
+ ftpserver.user.anon.userpassword=anon
+ ftpserver.user.anon.enableflag=true
+ ftpserver.user.anon.writepermission=true
+ ftpserver.user.anon.idletime=0
+ ftpserver.user.anon.maxloginnumber=0
+ ftpserver.user.anon.maxloginperip=0
+ ftpserver.user.anon.uploadrate=0
+ ftpserver.user.anon.downloadrate=0

Added: labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-workitems/src/test/java/org/drools/process/workitem/ftp/FTPWorkItemHandlerTest.java	2009-02-17 17:59:12 UTC (rev 25311)
@@ -0,0 +1,75 @@
+package org.drools.process.workitem.ftp;
+
+
+
+import java.io.File;
+import junit.framework.TestCase;
+
+import org.apache.ftpserver.FtpServer;
+import org.apache.ftpserver.FtpServerFactory;
+import org.apache.ftpserver.ftplet.UserManager;
+import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
+import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
+import org.drools.process.instance.impl.DefaultWorkItemManager;
+import org.drools.process.instance.impl.WorkItemImpl;
+import org.drools.runtime.process.WorkItemManager;
+import org.drools.util.ChainedProperties;
+
+
+
+public class FTPWorkItemHandlerTest extends TestCase {
+    FtpServerFactory serverFactory;
+    FtpServer server;
+    String ftpHost;
+    String ftpPort;
+    
+    @Override
+    protected void setUp() throws Exception {
+        ChainedProperties props = new ChainedProperties( "ftp.conf" );
+        ftpHost = props.getProperty( "host", "localhost" );
+        ftpPort = props.getProperty( "port", "21" );
+        serverFactory = new FtpServerFactory();
+        
+        //Set properties to the server factory
+        PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
+        //Users information
+        userManagerFactory.setFile(new File("myusers.properties"));
+        //We are using clear text passwords
+        userManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor());
+        UserManager userManager = userManagerFactory.createUserManager();
+        serverFactory.setUserManager(userManager);
+
+        server = serverFactory.createServer();
+        // start the server
+        server.start();
+        
+        
+    }
+    
+    @Override
+    protected void tearDown() throws Exception {
+        server.stop();
+    }
+    
+   
+    
+    public void testUploadFile() throws Exception {
+        FTPUploadWorkItemHandler handler = new FTPUploadWorkItemHandler();
+        handler.setConnection( ftpHost, ftpPort, null, null );
+        
+        WorkItemImpl workItem = new WorkItemImpl();
+        //File to upload
+        workItem.setParameter( "FilePath","drools.ftp.conf" );
+        //User and password. look in the myusers.properties to change this values
+        workItem.setParameter( "User", "anon" );
+        workItem.setParameter( "Password", "anon" );
+
+        WorkItemManager manager = new DefaultWorkItemManager(null);
+        handler.executeWorkItem( workItem, manager );
+        assertEquals( true, handler.isResult() );
+        
+       
+    }
+    
+    
+}




More information about the jboss-svn-commits mailing list