details:   http://code.openbravo.com/erp/devel/main/rev/35d3cb4c25c1
changeset: 3249:35d3cb4c25c1
user:      Phil Heenan <phillip.heenan <at> openbravo.com>
date:      Wed Mar 04 19:54:01 2009 +0100
summary:   Fixed 7920. Modified query input to use a shortened version of the 
file path. Updated translation handling for manual forms to ensure translations 
are returned. Implemented translation for sub reports passed through the 
PrintController.

details:   http://code.openbravo.com/erp/devel/main/rev/ac6d3962082a
changeset: 3250:ac6d3962082a
user:      Phil Heenan <phillip.heenan <at> openbravo.com>
date:      Fri Mar 06 15:33:21 2009 +0100
summary:   Fix the translation process for forms and manually created reports 
that do not pass through Jasper Reports. Iterate over the DataValue in the 
XMLEngine and check for instances of CharacterComponent in either the headers 
or footers of sections in the report.

diffstat:

7 files changed, 93 insertions(+), 17 deletions(-)
src-core/src/org/openbravo/uiTranslation/TranslationHandler.java |   19 ++-
src-core/src/org/openbravo/xmlEngine/XmlDocument.java            |    6 +
src-core/src/org/openbravo/xmlEngine/XmlVectorValue.java         |   57 
++++++++++
src/org/openbravo/base/secureApp/HttpSecureAppServlet.java       |    4 
src/org/openbravo/erpCommon/ad_process/JasperProcess.java        |    2 
src/org/openbravo/erpCommon/utility/Utility.java                 |    4 
src/org/openbravo/erpCommon/utility/reporting/ReportManager.java |   18 +--

diffs (264 lines):

diff -r e256c35b5b16 -r ac6d3962082a 
src-core/src/org/openbravo/uiTranslation/TranslationHandler.java
--- a/src-core/src/org/openbravo/uiTranslation/TranslationHandler.java  Mon Mar 
09 10:35:42 2009 +0100
+++ b/src-core/src/org/openbravo/uiTranslation/TranslationHandler.java  Fri Mar 
06 15:33:21 2009 +0100
@@ -29,6 +29,7 @@
   private String language = "";
   private String tabId = "";
   private String fileName = "";
+  private String baseDesignPath = "";
   private String reportString = "";
   private String documentTypeId = "";
 
@@ -109,8 +110,9 @@
     }
   }
 
-  public void prepareFile(String reportName, String lang, File file) {
-    setFileName(reportName);
+  public void prepareFile(String reportName, String lang, File file, String 
baseDesignPath1) {
+    setFileName(reportName.replaceAll("//", "/"));
+    setBaseDesignPath(baseDesignPath1);
     setLanguage(lang);
     generateTranslations();
     createInputStream(file);
@@ -195,7 +197,13 @@
     } else if (tabId != null && !tabId.equals("")) {
       setTabLabels();
     } else if (fileName != null && !fileName.equals("")) {
-      formLabels = TranslationUtils.processFormLabels(conn, fileName, 
language);
+      String textFileName = fileName.replace(baseDesignPath, "");
+      if (textFileName.contains("?")) {
+        String suffix = textFileName.substring(textFileName.lastIndexOf("."));
+        String prefix = textFileName.substring(0, textFileName.indexOf("?"));
+        textFileName = prefix + suffix;
+      }
+      formLabels = TranslationUtils.processFormLabels(conn, textFileName, 
language);
     }
   }
 
@@ -231,4 +239,9 @@
     }
   }
 
+  private void setBaseDesignPath(String baseDesignPath1) {
+    if (baseDesignPath1 != null)
+      this.baseDesignPath = baseDesignPath1.replaceAll("//", "/");
+  }
+
 }
diff -r e256c35b5b16 -r ac6d3962082a 
src-core/src/org/openbravo/xmlEngine/XmlDocument.java
--- a/src-core/src/org/openbravo/xmlEngine/XmlDocument.java     Mon Mar 09 
10:35:42 2009 +0100
+++ b/src-core/src/org/openbravo/xmlEngine/XmlDocument.java     Fri Mar 06 
15:33:21 2009 +0100
@@ -261,6 +261,12 @@
               + hasParameterValue.get("language").strValue);
           handler.setLanguage(hasParameterValue.get("language").strValue
               .replace("defaultLang=", "").replace("\"", ""));
+        } else if (hasParameterValue.get("paramLanguage") != null
+            && hasParameterValue.get("paramLanguage").strValue != null) {
+          log4jXmlDocument.debug("print(strBlank) - language: "
+              + hasParameterValue.get("paramLanguage").strValue);
+          
handler.setLanguage(hasParameterValue.get("paramLanguage").strValue.replace(
+              "defaultLang=", "").replace("\"", ""));
         }
         log4jXmlDocument.debug("before running generateTranslations.");
         handler.generateTranslations();
diff -r e256c35b5b16 -r ac6d3962082a 
src-core/src/org/openbravo/xmlEngine/XmlVectorValue.java
--- a/src-core/src/org/openbravo/xmlEngine/XmlVectorValue.java  Mon Mar 09 
10:35:42 2009 +0100
+++ b/src-core/src/org/openbravo/xmlEngine/XmlVectorValue.java  Fri Mar 06 
15:33:21 2009 +0100
@@ -13,6 +13,7 @@
 
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Vector;
 
 import org.apache.log4j.Logger;
@@ -49,6 +50,7 @@
       if (textMap != null) {
         if (xmlComponentValue.print() != null && 
!xmlComponentValue.print().startsWith("<")
             && !xmlComponentValue.print().equals("")) {
+          boolean isTranslated = false;
           result = xmlComponentValue.print();
           log4jXmlVectorValue.debug("printStringBuffer(HashMap<String, String> 
textMap) - result: "
               + result);
@@ -58,6 +60,61 @@
             log4jXmlVectorValue.debug("printStringBuffer() appending 
xmlComponentValue: "
                 + xmlComponentValue.print() + ", translation: " + translation);
             result = translation;
+            isTranslated = true;
+          }
+          if (!isTranslated) {
+            if (DataValue.class.isInstance(xmlComponentValue)) {
+              DataValue dataValue = (DataValue) xmlComponentValue;
+              if (dataValue.dataTemplate != null) {
+                DataTemplate dataTemplate = dataValue.dataTemplate;
+                if (dataTemplate.vecSectionTemplate != null) {
+                  Vector<Object> vecSectionTemplate = 
dataTemplate.vecSectionTemplate;
+                  for (Iterator iterator = vecSectionTemplate.iterator(); 
iterator.hasNext();) {
+                    SectionTemplate sectionTemplate = (SectionTemplate) 
iterator.next();
+                    if (sectionTemplate.vecHeadTemplate != null) {
+                      XmlVectorTemplate xmlTemplate = 
sectionTemplate.vecHeadTemplate;
+                      for (Iterator iterator2 = xmlTemplate.iterator(); 
iterator2.hasNext();) {
+                        Object componentTemplate = (Object) iterator2.next();
+                        if 
(CharacterComponent.class.isInstance(componentTemplate)) {
+                          CharacterComponent charComponent = 
(CharacterComponent) componentTemplate;
+                          if (charComponent.character != null && 
!charComponent.equals("")) {
+                            String original = charComponent.character;
+                            String trl = textMap.get(original);
+                            if (trl != null && !trl.equals(""))
+                              charComponent.character = trl;
+                          }
+                          componentTemplate = charComponent;
+                        }
+                      }
+                      sectionTemplate.vecHeadTemplate = xmlTemplate;
+                    }
+
+                    if (sectionTemplate.vecFootTemplate != null) {
+                      XmlVectorTemplate xmlFootTemplate = 
sectionTemplate.vecFootTemplate;
+                      for (Iterator iterator2 = xmlFootTemplate.iterator(); 
iterator2.hasNext();) {
+                        Object componentTemplate = (Object) iterator2.next();
+                        if 
(CharacterComponent.class.isInstance(componentTemplate)) {
+                          CharacterComponent charComponent = 
(CharacterComponent) componentTemplate;
+                          if (charComponent.character != null && 
!charComponent.equals("")) {
+                            String original = charComponent.character;
+                            String trl = textMap.get(original);
+                            if (trl != null && !trl.equals(""))
+                              charComponent.character = trl;
+                          }
+                          componentTemplate = charComponent;
+                        }
+                      }
+                      sectionTemplate.vecFootTemplate = xmlFootTemplate;
+                    }
+                  }
+                  dataTemplate.vecSectionTemplate = vecSectionTemplate;
+                }
+                dataValue.dataTemplate = dataTemplate;
+              }
+              dataValue.printGenerated();
+              xmlComponentValue = dataValue;
+            }
+            result = xmlComponentValue.print();
           }
         }
       }
diff -r e256c35b5b16 -r ac6d3962082a 
src/org/openbravo/base/secureApp/HttpSecureAppServlet.java
--- a/src/org/openbravo/base/secureApp/HttpSecureAppServlet.java        Mon Mar 
09 10:35:42 2009 +0100
+++ b/src/org/openbravo/base/secureApp/HttpSecureAppServlet.java        Fri Mar 
06 15:33:21 2009 +0100
@@ -967,7 +967,7 @@
     try {
 
       final JasperReport jasperReport = 
Utility.getTranslatedJasperReport(this, strReportName,
-          strLanguage);
+          strLanguage, strBaseDesign);
       if (designParameters == null)
         designParameters = new HashMap<String, Object>();
 
@@ -1038,7 +1038,7 @@
         reportId = UUID.randomUUID();
         saveReport(variables, jasperPrint, exportParameters, strFileName + "-" 
+ (reportId) + "."
             + strOutputType);
-        response.setHeader("Content-disposition", "inline" + "; filename=" + 
strFileName + "-"
+        response.setHeader("Content-disposition", "attachment" + "; filename=" 
+ strFileName + "-"
             + (reportId) + "." + strOutputType);
         printPagePopUpDownload(response.getOutputStream(), strFileName + "-" + 
(reportId) + "."
             + strOutputType);
diff -r e256c35b5b16 -r ac6d3962082a 
src/org/openbravo/erpCommon/ad_process/JasperProcess.java
--- a/src/org/openbravo/erpCommon/ad_process/JasperProcess.java Mon Mar 09 
10:35:42 2009 +0100
+++ b/src/org/openbravo/erpCommon/ad_process/JasperProcess.java Fri Mar 06 
15:33:21 2009 +0100
@@ -84,7 +84,7 @@
     ServletOutputStream os = null;
     try {
       JasperReport jasperReport = 
Utility.getTranslatedJasperReport(connection, strReportName,
-          strLanguage);
+          strLanguage, strBaseDesign);
 
       if (designParameters == null)
         designParameters = new HashMap<String, Object>();
diff -r e256c35b5b16 -r ac6d3962082a 
src/org/openbravo/erpCommon/utility/Utility.java
--- a/src/org/openbravo/erpCommon/utility/Utility.java  Mon Mar 09 10:35:42 
2009 +0100
+++ b/src/org/openbravo/erpCommon/utility/Utility.java  Fri Mar 06 15:33:21 
2009 +0100
@@ -2116,7 +2116,7 @@
   }
 
   public static JasperReport getTranslatedJasperReport(ConnectionProvider 
conn, String reportName,
-      String language) throws JRException {
+      String language, String baseDesignPath) throws JRException {
 
     log4j.debug("translate report: " + reportName + " for language: " + 
language);
 
@@ -2125,7 +2125,7 @@
     InputStream reportInputStream = null;
     if (reportFile.exists()) {
       TranslationHandler handler = new TranslationHandler(conn);
-      handler.prepareFile(reportName, language, reportFile);
+      handler.prepareFile(reportName, language, reportFile, baseDesignPath);
       reportInputStream = handler.getInputStream();
     }
     JasperDesign jasperDesign;
diff -r e256c35b5b16 -r ac6d3962082a 
src/org/openbravo/erpCommon/utility/reporting/ReportManager.java
--- a/src/org/openbravo/erpCommon/utility/reporting/ReportManager.java  Mon Mar 
09 10:35:42 2009 +0100
+++ b/src/org/openbravo/erpCommon/utility/reporting/ReportManager.java  Fri Mar 
06 15:33:21 2009 +0100
@@ -31,7 +31,6 @@
 
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRParameter;
-import net.sf.jasperreports.engine.JasperCompileManager;
 import net.sf.jasperreports.engine.JasperExportManager;
 import net.sf.jasperreports.engine.JasperFillManager;
 import net.sf.jasperreports.engine.JasperPrint;
@@ -57,6 +56,7 @@
   private ConnectionProvider _connectionProvider;
   private String _strBaseDesignPath;
   private String _strDefaultDesignPath;
+  private String language;
   private String _strBaseWeb; // BASE WEB!!!!!!
   private ClassInfoData _classInfo;
   private String _prefix;
@@ -87,7 +87,7 @@
       throws ReportingException {
 
     setTargetDirectory(report);
-    final String language = variables.getLanguage();
+    language = variables.getLanguage();
     final String baseDesignPath = _prefix + "/" + _strBaseDesignPath + "/" + 
_strDefaultDesignPath;
     final Locale locale = new Locale(language.substring(0, 2), 
language.substring(3, 5));
 
@@ -120,13 +120,14 @@
           parameterName = parameter.getName();
           subreportList.add(parameterName);
           subReportName = Replace.replace(parameterName, "SUBREP_", "") + 
".jrxml";
-          JasperReport jasperReportLines = createSubReport(templateLocation, 
subReportName);
+          JasperReport jasperReportLines = createSubReport(templateLocation, 
subReportName,
+              baseDesignPath);
           designParameters.put(parameterName, jasperReportLines);
         }
       }
 
       JasperReport jasperReport = 
Utility.getTranslatedJasperReport(_connectionProvider,
-          templateFile, language);
+          templateFile, language, baseDesignPath);
 
       if (log4j.isDebugEnabled())
         log4j.debug("creating the format factory: " + 
variables.getJavaDateFormat());
@@ -206,15 +207,14 @@
     return jasperPrint;
   }
 
-  private JasperReport createSubReport(String templateLocation, String 
subReportFileName) {
+  private JasperReport createSubReport(String templateLocation, String 
subReportFileName,
+      String baseDesignPath) {
     JasperReport jasperReportLines = null;
-    JasperDesign jasperDesignLines;
     try {
-      jasperDesignLines = JRXmlLoader.load(templateLocation + 
subReportFileName);
-      jasperReportLines = 
JasperCompileManager.compileReport(jasperDesignLines);
+      jasperReportLines = 
Utility.getTranslatedJasperReport(_connectionProvider, templateLocation
+          + subReportFileName, language, baseDesignPath);
     } catch (final JRException e1) {
       log4j.error(e1.getMessage());
-      // TODO Auto-generated catch block
       e1.printStackTrace();
     }
     return jasperReportLines;

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to