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