details:   https://code.openbravo.com/erp/devel/pi/rev/42872a897da5
changeset: 28572:42872a897da5
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Fri Feb 05 10:04:46 2016 +0100
summary:   fixes issue 32110: Upgrade FOP library

details:   https://code.openbravo.com/erp/devel/pi/rev/dc0fe14356ec
changeset: 28573:dc0fe14356ec
user:      Carlos Aristu <carlos.aristu <at> openbravo.com>
date:      Fri Feb 05 10:05:58 2016 +0100
summary:   related to issue 32110: fixes for .fo reports

diffstat:

 legal/Licensing.txt                                                            
|    3 +-
 lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar                              
|    0 
 lib/runtime/barcode4j-fop-ext-complete.jar                                     
|    0 
 lib/runtime/fop.jar                                                            
|    0 
 lib/runtime/xmlgraphics-commons-1.5.jar                                        
|    0 
 src-core/src/org/openbravo/base/ConfigParameters.java                          
|   16 +-
 src-core/src/org/openbravo/base/HttpBaseServlet.java                           
|   89 ++++++---
 src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo                      
|    4 +-
 src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo 
|    6 +-
 src/org/openbravo/erpReports/RptMA_CCP_Group.fo                                
|    4 +-
 src/org/openbravo/erpReports/RptMA_CCP_Measures.fo                             
|    4 +-
 src/org/openbravo/erpReports/RptM_Inout.fo                                     
|    4 +-
 12 files changed, 76 insertions(+), 54 deletions(-)

diffs (truncated from 361 to 300 lines):

diff -r 991ea0215b59 -r dc0fe14356ec legal/Licensing.txt
--- a/legal/Licensing.txt       Fri Feb 05 08:58:12 2016 +0100
+++ b/legal/Licensing.txt       Fri Feb 05 10:05:58 2016 +0100
@@ -85,7 +85,7 @@
 # avalon-framework-4.1.5.jar
 # axis-ant.jar
 # axis.jar
-# barcode4j-fop-ext-0.20.5-complete.jar 
+# barcode4j-fop-ext-complete.jar 
 # batik-anim.jar
 # batik-awt-util.jar
 # batik-bridge.jar
@@ -119,6 +119,7 @@
 # tika-core-0.9.jar
 # wstx-asl-3.0.2.jar
 # xercesImpl.jar
+# xmlgraphics-commons-1.5.jar
 
 All files under Apache Software License 2.0, available at
 http://www.apache.org/licenses/LICENSE-2.0
diff -r 991ea0215b59 -r dc0fe14356ec 
lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar
Binary file lib/runtime/barcode4j-fop-ext-0.20.5-complete.jar has changed
diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/barcode4j-fop-ext-complete.jar
Binary file lib/runtime/barcode4j-fop-ext-complete.jar has changed
diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/fop.jar
Binary file lib/runtime/fop.jar has changed
diff -r 991ea0215b59 -r dc0fe14356ec lib/runtime/xmlgraphics-commons-1.5.jar
Binary file lib/runtime/xmlgraphics-commons-1.5.jar has changed
diff -r 991ea0215b59 -r dc0fe14356ec 
src-core/src/org/openbravo/base/ConfigParameters.java
--- a/src-core/src/org/openbravo/base/ConfigParameters.java     Fri Feb 05 
08:58:12 2016 +0100
+++ b/src-core/src/org/openbravo/base/ConfigParameters.java     Fri Feb 05 
10:05:58 2016 +0100
@@ -1,6 +1,6 @@
 /*
  
************************************************************************************
- * Copyright (C) 2001-2015 Openbravo S.L.U.
+ * Copyright (C) 2001-2016 Openbravo S.L.U.
  * Licensed under the Apache Software License version 2.0
  * 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
@@ -24,8 +24,6 @@
 
 import javax.servlet.ServletContext;
 
-import org.apache.avalon.framework.logger.Log4JLogger;
-import org.apache.fop.messaging.MessageHandler;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 
@@ -59,7 +57,6 @@
 
   private static final Logger log4j = Logger.getLogger(ConfigParameters.class);
 
-  private Log4JLogger fopLogger;
   public final String strServletSinIdentificar;
   private final String strServletGoBack;
   public final String strFTPDirectory;
@@ -87,7 +84,6 @@
 
     strBaseConfigPath = getResolvedParameter(context, "BaseConfigPath");
     configureLog4j(context, strBaseConfigPath);
-    configureFop();
 
     log4j.debug("context: " + strContext);
     log4j.debug("************************prefix: " + prefix);
@@ -168,12 +164,6 @@
     }
   }
 
-  private void configureFop() {
-    MessageHandler.setQuiet(true);
-    fopLogger = new Log4JLogger(log4j);
-    MessageHandler.setScreenLogger(fopLogger);
-  }
-
   private void configureLog4j(ServletContext context, String 
_strBaseConfigPath) {
     String file = getResolvedParameter(context, "log4j-init-file");
 
@@ -276,10 +266,6 @@
     return prefix + "/" + strBaseConfigPath + "/Format.xml";
   }
 
-  public Log4JLogger getFopLogger() {
-    return fopLogger;
-  }
-
   public boolean havePeriodicBackgroundTime() {
     return periodicBackgroundTime != null;
   }
diff -r 991ea0215b59 -r dc0fe14356ec 
src-core/src/org/openbravo/base/HttpBaseServlet.java
--- a/src-core/src/org/openbravo/base/HttpBaseServlet.java      Fri Feb 05 
08:58:12 2016 +0100
+++ b/src-core/src/org/openbravo/base/HttpBaseServlet.java      Fri Feb 05 
10:05:58 2016 +0100
@@ -1,6 +1,6 @@
 /*
  
************************************************************************************
- * Copyright (C) 2001-2015 Openbravo S.L.U.
+ * Copyright (C) 2001-2016 Openbravo S.L.U.
  * Licensed under the Apache Software License version 2.0
  * 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
@@ -32,8 +32,21 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
 
-import org.apache.fop.apps.Driver;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.FormattingResults;
+import org.apache.fop.events.Event;
+import org.apache.fop.events.EventFormatter;
+import org.apache.fop.events.EventListener;
+import org.apache.fop.events.model.EventSeverity;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;
 import org.openbravo.database.ConnectionProvider;
@@ -41,7 +54,6 @@
 import org.openbravo.exception.NoConnectionAvailableException;
 import org.openbravo.exception.PoolNotFoundException;
 import org.openbravo.xmlEngine.XmlEngine;
-import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
 
 import rmi.RenderFoI;
@@ -64,6 +76,8 @@
   private static String prefix = null;
   protected Logger log4j = Logger.getLogger(this.getClass());
 
+  private FopFactory fopFactory;
+
   protected ConfigParameters globalParameters;
 
   /**
@@ -543,6 +557,13 @@
 
   }
 
+  protected FopFactory getFopFactory() {
+    if (fopFactory == null) {
+      fopFactory = FopFactory.newInstance();
+    }
+    return fopFactory;
+  }
+
   /**
    * Renders the FO input source into a PDF file which is then written 
directly to OutputStream.
    * 
@@ -590,13 +611,11 @@
     try {
       if (log4j.isDebugEnabled())
         log4j.debug("Beginning of renderFO");
+      FopFactory fopFactoryInstance = getFopFactory();
       if (globalParameters.haveFopConfig()) {
+        // Take FOP Configuration using userconfig.xml file
         File fopFile = new File(globalParameters.getFopConfigPath());
-        if (fopFile.exists()) {
-          @SuppressWarnings("unused")
-          // external implementation
-          org.apache.fop.apps.Options options = new 
org.apache.fop.apps.Options(fopFile);
-        }
+        fopFactoryInstance.setUserConfig(fopFile);
       }
 
       final String foTemplate = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" 
+ strFo;
@@ -607,34 +626,33 @@
         if (log4j.isDebugEnabled())
           log4j.debug(strFo);
 
-        StringReader sr = new StringReader(foTemplate);
+        Source sr = new StreamSource(new StringReader(foTemplate));
 
         if (log4j.isDebugEnabled())
           log4j.debug(sr.toString());
 
-        InputSource inputFO = new InputSource(sr);
+        // Configure FOP for PDF output. Define a user agent with a listener 
used to log information
+        // along the rendering the process
+        FOUserAgent foUserAgent = fopFactoryInstance.newFOUserAgent();
+        foUserAgent.getEventBroadcaster().addEventListener(new 
FopEventListener());
+        Fop fop = fopFactoryInstance.newFop("application/pdf", foUserAgent, 
out);
 
-        if (log4j.isDebugEnabled())
-          log4j.debug("Beginning of driver");
+        // Setup JAXP using identity transformer
+        TransformerFactory factory = TransformerFactory.newInstance();
+        Transformer transformer = factory.newTransformer();
 
-        Driver driver = new Driver();
-        driver.setLogger(globalParameters.getFopLogger());
-        driver.setRenderer(Driver.RENDER_PDF);
-        driver.setInputSource(inputFO);
+        // Resulting SAX events (the generated FO) must be piped through to FOP
+        Result res = new SAXResult(fop.getDefaultHandler());
 
-        driver.setOutputStream(out);
+        // Start XSLT transformation and FOP processing
+        transformer.transform(sr, res);
 
-        if (log4j.isDebugEnabled())
-          log4j.debug("driver.run()");
+        if (log4j.isDebugEnabled()) {
+          FormattingResults foResults = fop.getResults();
+          log4j.debug("Generated " + foResults.getPageCount() + " pages in 
total.");
+          log4j.debug("End of renderFO");
+        }
 
-        driver.run();
-
-        if (log4j.isDebugEnabled())
-          log4j.debug("End of renderFO");
-
-        sr.close();
-        driver.reset();
-        driver = null;
       } else {
 
         RenderFoI render = (RenderFoI) Naming.lookup("rmi://"
@@ -713,4 +731,21 @@
     return "This servlet adds some functions (connection to the database, 
xmlEngine, logging) over HttpServlet";
   }
 
+  private class FopEventListener implements EventListener {
+
+    public void processEvent(Event event) {
+      String msg = EventFormatter.format(event);
+      EventSeverity severity = event.getSeverity();
+      if (severity == EventSeverity.INFO) {
+        log4j.info(msg);
+      } else if (severity == EventSeverity.WARN) {
+        log4j.warn(msg);
+      } else if (severity == EventSeverity.ERROR) {
+        log4j.error(msg);
+      } else if (severity == EventSeverity.FATAL) {
+        log4j.error(msg);
+      }
+    }
+  }
+
 }
diff -r 991ea0215b59 -r dc0fe14356ec 
src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo
--- a/src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo Fri Feb 05 
08:58:12 2016 +0100
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportPricelist.fo Fri Feb 05 
10:05:58 2016 +0100
@@ -12,7 +12,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2016 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -28,7 +28,7 @@
                        <fo:block text-align="center" font-weight="bold" 
font-size="11pt">&#160;</fo:block>
                        <fo:block text-align="center" font-weight="bold" 
font-size="20pt">SALE ORDER REPORT</fo:block>
                        <fo:block text-align="center" font-weight="bold" 
font-size="11pt" id="fieldValid"/>
-                       <fo:table space-before.optimum="20pt">
+                       <fo:table table-layout="fixed" width="100%" 
space-before.optimum="20pt">
                                <fo:table-column column-width="24mm"/>
                                <fo:table-column column-width="90mm"/>
                                <fo:table-column column-width="24mm"/>
diff -r 991ea0215b59 -r dc0fe14356ec 
src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo
--- 
a/src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo
    Fri Feb 05 08:58:12 2016 +0100
+++ 
b/src/org/openbravo/erpCommon/ad_reports/ReportRefundSalesDimensionalAnalyses.fo
    Fri Feb 05 10:05:58 2016 +0100
@@ -12,7 +12,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 
- * All portions are Copyright (C) 2001-2010 Openbravo SLU 
+ * All portions are Copyright (C) 2001-2016 Openbravo SLU 
  * All Rights Reserved. 
  * Contributor(s):  ______________________________________.
  ************************************************************************
@@ -20,12 +20,12 @@
 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
        <fo:layout-master-set>
                <fo:simple-page-master master-name="first" page-height="21cm" 
page-width="29.7cm" margin-top="1cm" margin-bottom="0.25cm" margin-left="0.5cm" 
margin-right="0.5cm">
+                       <fo:region-body margin-top="2cm"/>
                        <fo:region-before extent="2cm"/>
-                       <fo:region-body margin-top="2cm"/>
                </fo:simple-page-master>
                <fo:simple-page-master master-name="rest" page-height="21cm" 
page-width="29.7cm" margin-top="1cm" margin-bottom="0.25cm" margin-left="0.5cm" 
margin-right="0.5cm">
+                       <fo:region-body margin-top="2cm"/>
                        <fo:region-before extent="2cm"/>
-                       <fo:region-body margin-top="2cm"/>
                </fo:simple-page-master>
                <fo:page-sequence-master master-name="basicPSM">
                        <fo:repeatable-page-master-alternatives>
diff -r 991ea0215b59 -r dc0fe14356ec 
src/org/openbravo/erpReports/RptMA_CCP_Group.fo
--- a/src/org/openbravo/erpReports/RptMA_CCP_Group.fo   Fri Feb 05 08:58:12 
2016 +0100
+++ b/src/org/openbravo/erpReports/RptMA_CCP_Group.fo   Fri Feb 05 10:05:58 
2016 +0100
@@ -12,7 +12,7 @@
  * under the License. 
  * The Original Code is Openbravo ERP. 
  * The Initial Developer of the Original Code is Openbravo SLU 

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to