From 643d2ab093f7e44f75deda1f7ed1d136eefd9ea3 Mon Sep 17 00:00:00 2001 From: hieplq Date: Thu, 27 Dec 2018 23:15:41 +0700 Subject: [PATCH] IDEMPIERE-3857:fire event on jasper engine --- .../META-INF/MANIFEST.MF | 3 +- .../report/jasper/JREventManage.java | 66 +++++++++++++++++++ .../report/jasper/ReportStarter.java | 2 + 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 org.adempiere.report.jasper/src/org/adempiere/report/jasper/JREventManage.java diff --git a/org.adempiere.report.jasper/META-INF/MANIFEST.MF b/org.adempiere.report.jasper/META-INF/MANIFEST.MF index 3c40956870..476fd4c91c 100644 --- a/org.adempiere.report.jasper/META-INF/MANIFEST.MF +++ b/org.adempiere.report.jasper/META-INF/MANIFEST.MF @@ -8,7 +8,8 @@ Import-Package: net.sourceforge.barbecue, org.apache.commons.codec, org.apache.commons.codec.binary, org.apache.commons.logging;version="1.1.1", - org.apache.commons.logging.impl;version="1.1.1" + org.apache.commons.logging.impl;version="1.1.1", + org.osgi.service.event Require-Bundle: org.adempiere.base;bundle-version="0.0.0", net.sf.jasperreports.engine;bundle-version="6.3.1" Service-Component: OSGI-INF/processfactory.xml diff --git a/org.adempiere.report.jasper/src/org/adempiere/report/jasper/JREventManage.java b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/JREventManage.java new file mode 100644 index 0000000000..18649e76f3 --- /dev/null +++ b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/JREventManage.java @@ -0,0 +1,66 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ + +package org.adempiere.report.jasper; + +import org.adempiere.base.event.EventManager; +import org.adempiere.base.event.EventProperty; +import org.compiere.process.ProcessInfo; +import org.osgi.service.event.Event; + +import net.sf.jasperreports.engine.export.JRPdfExporter; +import net.sf.jasperreports.export.SimpleExporterConfiguration; +import net.sf.jasperreports.export.SimplePdfExporterConfiguration; + +/** + * mange to fire event relate jasper report + * at the moment just fire export pdf event + * @author hieplq + * + */ +public class JREventManage { + /** + * topic fire when setting configuration for pdf export + */ + public final static String JP_PDF_EXPORT_CONFIG_EVENT = "JP_PDF_EXPORT_CONFIG_EVENT"; + /** + * key for even info, save {@link JRPdfExporter} object + */ + public final static String JP_KEY_PDF_EXPORT_EXPORTER = "EXPORTER"; + /** + * key for even info, save {@link SimpleExporterConfiguration} object + */ + public final static String JP_KEY_PDF_EXPORT_CONFIG = "CONFIG"; + /** + * key for even info, save {@link ProcessInfo} object + */ + public final static String JP_KEY_PROCESS_INFO = "PROCESS_INFO"; + + /** + * sent event to customize pdf export configuration + * @param export is {@link JRPdfExporter} + * @param config is {@link SimplePdfExporterConfiguration} + */ + public static void sentPdfExporterConfigurationEvent(JRPdfExporter export, SimpleExporterConfiguration config, ProcessInfo pi) { + Event event = EventManager.newEvent(JP_PDF_EXPORT_CONFIG_EVENT, + new EventProperty(JP_KEY_PDF_EXPORT_EXPORTER, export), + new EventProperty(JP_KEY_PDF_EXPORT_CONFIG, config), + new EventProperty(JP_KEY_PROCESS_INFO, pi)); + + EventManager.getInstance().sendEvent(event); + } +} diff --git a/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java index 866794474c..e047c160b4 100644 --- a/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java +++ b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java @@ -758,6 +758,8 @@ public class ReportStarter implements ProcessCall, ClientProcess export.setConfiguration(config); export.setExporterOutput(new SimpleOutputStreamExporterOutput(strm)); exporter = export; + // give a chance for customize jasper report configuration per report + JREventManage.sentPdfExporterConfigurationEvent(export, config, pi); } else if (ext.equals("ps")) { JRPrintServiceExporter export = new JRPrintServiceExporter( jasperContext);