[jboss-svn-commits] JBL Code SVN: r6407 - labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 25 05:34:21 EDT 2006


Author: cyril.joui at supinfo.com
Date: 2006-09-25 05:34:18 -0400 (Mon, 25 Sep 2006)
New Revision: 6407

Added:
   labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByFileCopy.java
   labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByMail.java
   labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeException.java
   labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeModule.java
Log:
Maven Artefact : preview 1

Added: labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByFileCopy.java
===================================================================
--- labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByFileCopy.java	2006-09-25 09:33:18 UTC (rev 6406)
+++ labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByFileCopy.java	2006-09-25 09:34:18 UTC (rev 6407)
@@ -0,0 +1,133 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+
+package org.jboss.reporting.server.distribute;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.management.ObjectName;
+
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.ObjectNameFactory;
+import org.jboss.reporting.api.ReportTask;
+import org.jboss.reporting.api.output.OutputFormat;
+import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.system.server.ServerConfig;
+
+/**
+ *
+ * @author noel.rocher at jboss.org
+ * @version $Revision: 1.0 $
+ * 
+ *
+ * @jmx:mbean
+ *    description="Distribute a report by copy into a dir"
+ *    name="reporting:service=Distribute,type=ByFileCopy"
+ *    extends="org.jboss.system.ServiceMBean"
+ * 
+ */
+public class DistributeByFileCopy extends ServiceMBeanSupport implements DistributeByFileCopyMBean, DistributeModule
+{
+   // provide logging
+   private final Logger log = Logger.getLogger(DistributeByFileCopy.class);
+
+   // MBean name
+   public static final ObjectName OBJECT_NAME = ObjectNameFactory
+         .create("reporting:service=Distribute,type=ByFileCopy");
+
+   // server config MBean
+   ServerConfig serverConfig = null;
+
+   // base directory
+   private String baseDirectoryName;
+
+   private File baseDirectory;
+
+   /** @jmx:managed-attribute */
+   public String getBaseDirectoryName()
+   {
+      return baseDirectoryName;
+   }
+
+   /** @jmx:managed-attribute */
+   public void setBaseDirectoryName(String baseDirectoryName)
+   {
+      this.baseDirectoryName = baseDirectoryName;
+   }
+
+   /** @jmx:managed-operation */
+public void distribute(ReportTask in_reportTask, Object in_result) throws Exception
+   {
+      log.info("Recieved reportTask" + in_reportTask);
+      String distributePathName = "";
+      File distributePath;
+      String fileName = "";
+
+      org.jboss.reporting.api.distribute.DistributeByFileCopy distribute = (org.jboss.reporting.api.distribute.DistributeByFileCopy) in_reportTask
+            .getDistribute();
+
+      distributePathName = distribute.getPathName();
+      if (distributePathName != null || distributePathName.length() == 0) 
+      {
+         distributePath = new File(distributePathName);
+         // if specified path is not absolute, generate it under working directory
+         if (!distributePath.isAbsolute()) 
+         {
+            distributePath = new File(baseDirectory, distributePathName);
+         }
+      } else {
+         distributePath = baseDirectory;
+      }
+
+      if (distributePath.exists() == false)
+         distributePath.mkdir();
+
+      fileName = distribute.getFileName();
+      if (fileName == null || fileName.length() == 0)
+      {
+         fileName = in_reportTask.getReport().getReport_name() + "_" + System.currentTimeMillis()
+               + OutputFormat.getFileExtension(in_reportTask.getOutputFormat());
+      }
+
+      try
+      {
+         // write result into a file
+         File file = new File(distributePath, fileName);
+         BufferedInputStream in = new BufferedInputStream((InputStream) in_result);
+         OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
+         int b = 0;
+         while ((b = in.read()) >= 0)
+            out.write(b);
+         in.close();
+         out.close();
+
+         log.debug("File " + file.getAbsolutePath() + " created. ReportTask ID = " + in_reportTask.getID());
+      }
+      catch (Exception e)
+      {
+         log.error(e);
+         throw e;
+      }
+   }
+   /**
+    * Configure required properties from server config info
+    */
+   public void startService() throws Exception
+   {
+      serverConfig = (ServerConfig) MBeanProxyExt.create(ServerConfig.class, "jboss.system:type=ServerConfig", server);
+      baseDirectory = new File(serverConfig.getServerHomeDir(), baseDirectoryName);
+      if (baseDirectory.exists() == false)
+         baseDirectory.mkdir();
+   }
+
+}
\ No newline at end of file

Added: labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByMail.java
===================================================================
--- labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByMail.java	2006-09-25 09:33:18 UTC (rev 6406)
+++ labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeByMail.java	2006-09-25 09:34:18 UTC (rev 6407)
@@ -0,0 +1,238 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+
+package org.jboss.reporting.server.distribute;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Calendar;
+import java.util.Iterator;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.mail.Message;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+import javax.management.ObjectName;
+import javax.naming.InitialContext;
+
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.ObjectNameFactory;
+import org.jboss.reporting.api.ReportTask;
+import org.jboss.reporting.api.output.OutputFormat;
+import org.jboss.system.ServiceMBeanSupport;
+import org.jboss.system.server.ServerConfig;
+
+/**
+ *
+ * @author noel.rocher at jboss.org
+ * @version $Revision: 1.0 $
+ * 
+ *
+ * @jmx:mbean
+ *    description="Distribute a report by mail"
+ *    name="reporting:service=Distribute,type=ByMail"
+ *    extends="org.jboss.system.ServiceMBean"
+ * 
+ */
+public class DistributeByMail extends ServiceMBeanSupport
+implements DistributeByMailMBean, DistributeModule
+{
+	// provide logging
+	private final Logger log = Logger.getLogger(DistributeByMail.class);
+	// MBean name
+	public static final ObjectName OBJECT_NAME = ObjectNameFactory.create("reporting:service=Distribute,type=ByMail");
+	
+	// tmp dir name for jasper to work
+	private final String TEMP_DIR_NAME = "distribute-byMail";
+	
+	// server config MBean
+	ServerConfig serverConfig = null;
+	
+	// temporary directory
+	private java.io.File tempDirectory;
+	
+	// Mail resource
+	private String mailResource="";
+	
+	// Default From
+	private String defaultFrom="";
+	
+
+	
+	/** @jmx:managed-attribute */
+	public String getMailResource()
+	{
+		return mailResource;
+	}
+
+	/** @jmx:managed-attribute */
+	public void setMailResource(String mailResource)
+	{
+		this.mailResource = mailResource;
+	}
+	
+	
+	/** @jmx:managed-attribute */
+	public String getDefaultFrom()
+	{
+		return defaultFrom;
+	}
+
+	/** @jmx:managed-attribute */
+	public void setDefaultFrom(String defaultFrom)
+	{
+		this.defaultFrom = defaultFrom;
+	}
+	
+	
+	
+	/** @jmx:managed-operation */
+	   
+	/*
+	 * TODO should write a version with in_result as a file (already created in "execute" step)
+	 */
+	public void distribute(ReportTask in_reportTask, Object in_result) throws Exception
+	   {
+
+	       File tmpFile = new File(tempDirectory,
+	    		   in_reportTask.getReport().getDisplay_name().replaceAll("/","-").replaceAll(" ","_") + 
+	    		   OutputFormat.getFileExtension(in_reportTask.getOutputFormat()) );
+	       OutputStream attachment=null;
+	       Iterator iterator=null;
+
+	       try
+	       {
+	    	   // write result into a file
+	    	   BufferedInputStream in = new BufferedInputStream((InputStream)in_result);  
+	    	   attachment = new BufferedOutputStream( new FileOutputStream(tmpFile));
+	    	   int b=0;
+	    	   while ( (b=in.read()) >= 0) attachment.write( b );
+	    	   in.close();
+	    	   attachment.close();
+	    	   
+	    	   Session session_mail = (Session) new InitialContext().lookup(this.mailResource);
+	    	   Message message = new MimeMessage(session_mail);
+	    	   
+
+	    	   org.jboss.reporting.api.distribute.DistributeByMail params = (org.jboss.reporting.api.distribute.DistributeByMail)in_reportTask.getDistribute();
+
+	    	   // -- From
+	    	   if (params.getFrom() != null && params.getFrom().length() > 0)
+	    	   {
+	    		   message.addFrom(new InternetAddress[] {new InternetAddress(params.getFrom())} );
+	    	   }
+	    	   else
+	    	   {
+	    		   message.addFrom(new InternetAddress[] {new InternetAddress(this.defaultFrom)} );
+	    	   }
+
+	    	   // -- TO
+	    	   if (params.getTo() != null)
+	    	   {
+		    	   iterator = params.getTo().iterator();
+		    	   while (iterator.hasNext())
+		    	   {
+			    	   message.setRecipients(Message.RecipientType.TO, new InternetAddress[] {new InternetAddress((String)iterator.next())} );
+		    	   }
+	    	   }
+
+	    	   // -- CC
+	    	   if (params.getCc() != null)
+	    	   {
+		    	   iterator = params.getCc().iterator();
+		    	   while (iterator.hasNext())
+		    	   {
+			    	   message.setRecipients(Message.RecipientType.CC, new InternetAddress[] {new InternetAddress((String)iterator.next())} );
+		    	   }
+	    	   }
+
+	    	   // -- BCC
+	    	   if (params.getBcc() != null)
+	    	   {
+		    	   iterator = params.getBcc().iterator();
+		    	   while (iterator.hasNext())
+		    	   {
+			    	   message.setRecipients(Message.RecipientType.BCC, new InternetAddress[] {new InternetAddress((String)iterator.next())} );
+		    	   }
+	    	   }
+
+	    	   
+	    	   // -- Subject
+	    	   if (params.getSubject() != null && params.getSubject().length() > 0)
+	    	   {
+		    	   message.setSubject( params.getSubject());
+	    	   }
+	    	   else
+	    	   {
+		    	   message.setSubject("Reporting Services - Your requested report : " + in_reportTask.getReport().getReport_name().replaceAll("/","-"));
+	    	   }
+
+	    	   // -- date
+	    	   message.setSentDate(Calendar.getInstance().getTime());
+	    	   
+	    	   // -- attachement
+	    	   Multipart multipart = new MimeMultipart();		
+	    	   MimeBodyPart messageBodyPart = new MimeBodyPart();
+	    	   FileDataSource  filesource = new FileDataSource(tmpFile);
+	    	   
+	    	   messageBodyPart.setDataHandler(new DataHandler(filesource));
+	    	   messageBodyPart.setFileName(tmpFile.getName());
+	    	   multipart.addBodyPart(messageBodyPart);
+	    	   message.setContent(multipart);
+	    	   
+	    	   Transport.send(message);
+	    	   log.debug("Message sent. " + in_reportTask.getID());
+	       }
+	       catch (Exception e)
+	       {
+	    	   log.error(e);
+	           throw e;
+	       }
+	       finally
+	       {
+	           if (tmpFile != null && tmpFile.exists()) tmpFile.delete();
+	       }
+	   }
+	   
+	
+	
+	
+	
+	/**
+	 * Configure required properties from server config info
+	 */
+	public void startService() throws Exception
+	{
+		File temp_dir=null;
+		
+		serverConfig = (ServerConfig)
+		MBeanProxyExt.create(ServerConfig.class,
+				"jboss.system:type=ServerConfig", server);
+		tempDirectory = serverConfig.getServerTempDir();
+
+		temp_dir = serverConfig.getServerTempDir();
+		tempDirectory = new File(temp_dir,TEMP_DIR_NAME);
+		if ( ! tempDirectory.exists()) tempDirectory.mkdir();
+	}
+
+
+
+
+	
+	
+}
\ No newline at end of file

Added: labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeException.java
===================================================================
--- labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeException.java	2006-09-25 09:33:18 UTC (rev 6406)
+++ labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeException.java	2006-09-25 09:34:18 UTC (rev 6407)
@@ -0,0 +1,20 @@
+package org.jboss.reporting.server.distribute;
+
+/**
+ * This exception may be thrown if there is an error in dstributing
+ * a report task. result
+ * @author <a href="mailto:noel.rocher at jboss.org">Noel Rocher</a>
+ */
+public class DistributeException extends Exception
+{
+    public DistributeException(String message)
+    {
+        super(message);
+    }
+
+    public DistributeException(String message, Throwable cause)
+    {
+        super(message, cause);
+    }
+}
+

Added: labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeModule.java
===================================================================
--- labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeModule.java	2006-09-25 09:33:18 UTC (rev 6406)
+++ labs/reportingservices/trunk/dev/modules/rs-service-common/src/main/java/org/jboss/reporting/server/distribute/DistributeModule.java	2006-09-25 09:34:18 UTC (rev 6407)
@@ -0,0 +1,22 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.reporting.server.distribute;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.jboss.reporting.api.ReportTask;
+
+/**
+ * The contract for an engine
+ * @author noel
+ *
+ */
+public interface DistributeModule
+{
+	public void distribute(ReportTask in_reportTask, Object in_result) throws Exception;
+}




More information about the jboss-svn-commits mailing list