details: https://code.openbravo.com/erp/devel/pi/rev/9644db90eb37 changeset: 15698:9644db90eb37 user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Thu Mar 01 12:34:27 2012 +0100 summary: fixed bug 17821: Improved performance in ad_parent_tree function
Proper exit recursivity instead of waiting for an exception to be thrown details: https://code.openbravo.com/erp/devel/pi/rev/6efaffed3b3f changeset: 15699:6efaffed3b3f user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Fri Mar 02 15:25:09 2012 +0100 summary: fixed bug 19275: Old Error message Fixed PrintController popup error messages details: https://code.openbravo.com/erp/devel/pi/rev/eff2ac473db7 changeset: 15700:eff2ac473db7 user: Asier Lostalé <asier.lostale <at> openbravo.com> date: Mon Mar 05 10:36:32 2012 +0100 summary: fixed bug 16928: Tab name validation didn't work in PG diffstat: src-db/database/model/functions/AD_PARENT_TREE.xml | 8 +- src-db/database/model/triggers/AD_TAB_TRG.xml | 4 +- src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java | 479 +++++---- 3 files changed, 252 insertions(+), 239 deletions(-) diffs (truncated from 566 to 300 lines): diff -r 48882fb553e9 -r eff2ac473db7 src-db/database/model/functions/AD_PARENT_TREE.xml --- a/src-db/database/model/functions/AD_PARENT_TREE.xml Mon Mar 05 21:09:46 2012 +0100 +++ b/src-db/database/model/functions/AD_PARENT_TREE.xml Mon Mar 05 10:36:32 2012 +0100 @@ -19,7 +19,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-2008 Openbravo SLU +* All portions are Copyright (C) 2001-2012 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************/ @@ -33,8 +33,12 @@ WHERE node_id = p_node_id AND ad_tree_id = p_tree_id; + IF vp IS NULL THEN + RETURN ' '; + ELSE + p := ad_parent_tree(p_tree_id, vp); + END IF; - p := ad_parent_tree(p_tree_id, vp); IF p != ' ' THEN RETURN '|'||vp||'|'||p; END IF; diff -r 48882fb553e9 -r eff2ac473db7 src-db/database/model/triggers/AD_TAB_TRG.xml --- a/src-db/database/model/triggers/AD_TAB_TRG.xml Mon Mar 05 21:09:46 2012 +0100 +++ b/src-db/database/model/triggers/AD_TAB_TRG.xml Mon Mar 05 10:36:32 2012 +0100 @@ -17,7 +17,7 @@ * parts created by ComPiere are Copyright (C) ComPiere, Inc.; * All Rights Reserved. * Contributor(s): Openbravo SLU - * Contributions are Copyright (C) 2001-2011 Openbravo, S.L.U. + * Contributions are Copyright (C) 2001-2012 Openbravo, S.L.U. * * Specifically, this derivative work is based upon the following Compiere * file and version. @@ -30,7 +30,7 @@ --Check tab name starts with a upper case letter - IF (not (substr(:new.Name,1,1) between 'A' and 'Z')) THEN + IF (not (ascii(substr(:new.Name,1,1)) between ascii('A') and ascii('Z'))) THEN RAISE_APPLICATION_ERROR(-20000, '@TabName1stCharUpper@') ; END IF; diff -r 48882fb553e9 -r eff2ac473db7 src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java --- a/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java Mon Mar 05 21:09:46 2012 +0100 +++ b/src/org/openbravo/erpCommon/utility/reporting/printing/PrintController.java Mon Mar 05 10:36:32 2012 +0100 @@ -156,271 +156,280 @@ void post(HttpServletRequest request, HttpServletResponse response, VariablesSecureApp vars, DocumentType documentType, String sessionValuePrefix, String strDocumentId) throws IOException, ServletException { + try { - Map<String, Report> reports; + Map<String, Report> reports; - // Checks are maintained in this way for mulithread safety - HashMap<String, Boolean> checks = new HashMap<String, Boolean>(); - checks.put("moreThanOneCustomer", Boolean.FALSE); - checks.put("moreThanOnesalesRep", Boolean.FALSE); + // Checks are maintained in this way for mulithread safety + HashMap<String, Boolean> checks = new HashMap<String, Boolean>(); + checks.put("moreThanOneCustomer", Boolean.FALSE); + checks.put("moreThanOnesalesRep", Boolean.FALSE); - String documentIds[] = null; - if (log4j.isDebugEnabled()) - log4j.debug("strDocumentId: " + strDocumentId); - // normalize the string of ids to a comma separated list - strDocumentId = strDocumentId.replaceAll("\\(|\\)|'", ""); - if (strDocumentId.length() == 0) - throw new ServletException(Utility.messageBD(this, "NoDocument", vars.getLanguage())); + String documentIds[] = null; + if (log4j.isDebugEnabled()) + log4j.debug("strDocumentId: " + strDocumentId); + // normalize the string of ids to a comma separated list + strDocumentId = strDocumentId.replaceAll("\\(|\\)|'", ""); + if (strDocumentId.length() == 0) + throw new ServletException(Utility.messageBD(this, "NoDocument", vars.getLanguage())); - documentIds = strDocumentId.split(","); + documentIds = strDocumentId.split(","); - if (log4j.isDebugEnabled()) - log4j.debug("Number of documents selected: " + documentIds.length); + if (log4j.isDebugEnabled()) + log4j.debug("Number of documents selected: " + documentIds.length); - multiReports = (documentIds.length > 1); + multiReports = (documentIds.length > 1); - reports = (Map<String, Report>) vars.getSessionObject(sessionValuePrefix + ".Documents"); - final ReportManager reportManager = new ReportManager(this, globalParameters.strFTPDirectory, - strReplaceWithFull, globalParameters.strBaseDesignPath, - globalParameters.strDefaultDesignPath, globalParameters.prefix, multiReports); + reports = (Map<String, Report>) vars.getSessionObject(sessionValuePrefix + ".Documents"); + final ReportManager reportManager = new ReportManager(this, globalParameters.strFTPDirectory, + strReplaceWithFull, globalParameters.strBaseDesignPath, + globalParameters.strDefaultDesignPath, globalParameters.prefix, multiReports); - if (vars.commandIn("PRINT")) { - archivedReports = false; - // Order documents by Document No. - if (multiReports) - documentIds = orderByDocumentNo(documentType, documentIds); + if (vars.commandIn("PRINT")) { + archivedReports = false; + // Order documents by Document No. + if (multiReports) + documentIds = orderByDocumentNo(documentType, documentIds); - /* - * PRINT option will print directly to the UI for a single report. For multiple reports the - * documents will each be saved individually and the concatenated in the same manner as the - * saved reports. After concatenating the reports they will be deleted. - */ - Report report = null; - JasperPrint jasperPrint = null; - Collection<JasperPrint> jrPrintReports = new ArrayList<JasperPrint>(); - final Collection<Report> savedReports = new ArrayList<Report>(); - for (int i = 0; i < documentIds.length; i++) { - String documentId = documentIds[i]; - report = buildReport(response, vars, documentId, reportManager, documentType, - Report.OutputTypeEnum.PRINT); - try { - jasperPrint = reportManager.processReport(report, vars); - jrPrintReports.add(jasperPrint); - } catch (final ReportingException e) { - advisePopUp(request, response, "Report processing failed", - "Unable to process report selection"); - log4j.error(e.getMessage()); - e.getStackTrace(); + /* + * PRINT option will print directly to the UI for a single report. For multiple reports the + * documents will each be saved individually and the concatenated in the same manner as the + * saved reports. After concatenating the reports they will be deleted. + */ + Report report = null; + JasperPrint jasperPrint = null; + Collection<JasperPrint> jrPrintReports = new ArrayList<JasperPrint>(); + final Collection<Report> savedReports = new ArrayList<Report>(); + for (int i = 0; i < documentIds.length; i++) { + String documentId = documentIds[i]; + report = buildReport(response, vars, documentId, reportManager, documentType, + Report.OutputTypeEnum.PRINT); + try { + jasperPrint = reportManager.processReport(report, vars); + jrPrintReports.add(jasperPrint); + } catch (final ReportingException e) { + advisePopUp(request, response, "Report processing failed", + "Unable to process report selection"); + log4j.error(e.getMessage()); + e.getStackTrace(); + } + savedReports.add(report); + if (multiReports) { + reportManager.saveTempReport(report, vars); + } } - savedReports.add(report); - if (multiReports) { + printReports(response, jrPrintReports, savedReports); + } else if (vars.commandIn("ARCHIVE")) { + // Order documents by Document No. + if (multiReports) + documentIds = orderByDocumentNo(documentType, documentIds); + + /* + * ARCHIVE will save each report individually and then print the reports in a single + * printable (concatenated) format. + */ + archivedReports = true; + Report report = null; + final Collection<Report> savedReports = new ArrayList<Report>(); + for (int index = 0; index < documentIds.length; index++) { + String documentId = documentIds[index]; + report = buildReport(response, vars, documentId, reportManager, documentType, + OutputTypeEnum.ARCHIVE); + buildReport(response, vars, documentId, reports, reportManager); + try { + reportManager.processReport(report, vars); + } catch (final ReportingException e) { + log4j.error(e); + } reportManager.saveTempReport(report, vars); + savedReports.add(report); } - } - printReports(response, jrPrintReports, savedReports); - } else if (vars.commandIn("ARCHIVE")) { - // Order documents by Document No. - if (multiReports) - documentIds = orderByDocumentNo(documentType, documentIds); + printReports(response, null, savedReports); + } else { + if (vars.commandIn("DEFAULT")) { - /* - * ARCHIVE will save each report individually and then print the reports in a single printable - * (concatenated) format. - */ - archivedReports = true; - Report report = null; - final Collection<Report> savedReports = new ArrayList<Report>(); - for (int index = 0; index < documentIds.length; index++) { - String documentId = documentIds[index]; - report = buildReport(response, vars, documentId, reportManager, documentType, - OutputTypeEnum.ARCHIVE); - buildReport(response, vars, documentId, reports, reportManager); - try { - reportManager.processReport(report, vars); - } catch (final ReportingException e) { - log4j.error(e); - } - reportManager.saveTempReport(report, vars); - savedReports.add(report); - } - printReports(response, null, savedReports); - } else { - if (vars.commandIn("DEFAULT")) { + reports = new HashMap<String, Report>(); + for (int index = 0; index < documentIds.length; index++) { + final String documentId = documentIds[index]; + if (log4j.isDebugEnabled()) + log4j.debug("Processing document with id: " + documentId); - reports = new HashMap<String, Report>(); - for (int index = 0; index < documentIds.length; index++) { - final String documentId = documentIds[index]; - if (log4j.isDebugEnabled()) - log4j.debug("Processing document with id: " + documentId); + try { + final Report report = new Report(this, documentType, documentId, vars.getLanguage(), + "default", multiReports, OutputTypeEnum.DEFAULT); + reports.put(documentId, report); - try { - final Report report = new Report(this, documentType, documentId, vars.getLanguage(), - "default", multiReports, OutputTypeEnum.DEFAULT); - reports.put(documentId, report); + final String senderAddress = EmailData.getSenderAddress(this, vars.getClient(), + report.getOrgId()); + boolean moreThanOnesalesRep = checks.get("moreThanOnesalesRep").booleanValue(); - final String senderAddress = EmailData.getSenderAddress(this, vars.getClient(), - report.getOrgId()); - boolean moreThanOnesalesRep = checks.get("moreThanOnesalesRep").booleanValue(); + if (request.getServletPath().toLowerCase().indexOf("print.html") == -1) { + if ("".equals(senderAddress) || senderAddress == null) { + final OBError on = new OBError(); + on.setMessage(Utility.messageBD(this, "No sender defined: Please go to client " + + "configuration to complete the email configuration", vars.getLanguage())); + on.setTitle(Utility.messageBD(this, "Email Configuration Error", + vars.getLanguage())); + on.setType("Error"); + final String tabId = vars.getSessionValue("inpTabId"); + vars.getStringParameter("tab"); + vars.setMessage(tabId, on); + vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId"); + printPageClosePopUpAndRefreshParent(response, vars); + throw new ServletException("Configuration Error no sender defined"); + } + } - if (request.getServletPath().toLowerCase().indexOf("print.html") == -1) { - if ("".equals(senderAddress) || senderAddress == null) { - final OBError on = new OBError(); - on.setMessage(Utility.messageBD(this, "No sender defined: Please go to client " - + "configuration to complete the email configuration", vars.getLanguage())); - on.setTitle(Utility.messageBD(this, "Email Configuration Error", vars.getLanguage())); - on.setType("Error"); - final String tabId = vars.getSessionValue("inpTabId"); - vars.getStringParameter("tab"); - vars.setMessage(tabId, on); - vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId"); - printPageClosePopUpAndRefreshParent(response, vars); - throw new ServletException("Configuration Error no sender defined"); + // check the different doc typeId's if all the selected + // doc's + // has the same doc typeId the template selector should + // appear + if (!differentDocTypes.containsKey(report.getDocTypeId())) { + differentDocTypes.put(report.getDocTypeId(), report.getTemplate()); + } + } catch (final ReportingException exception) { + throw new ServletException(exception); + } + + } + + vars.setSessionObject(sessionValuePrefix + ".Documents", reports); + + if (request.getServletPath().toLowerCase().indexOf("print.html") != -1) + createPrintOptionsPage(request, response, vars, documentType, + getComaSeparatedString(documentIds), reports); + else + createEmailOptionsPage(request, response, vars, documentType, ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Openbravo-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbravo-commits
