[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