details: https://code.openbravo.com/erp/devel/pi/rev/2ab8016a2353 changeset: 32538:2ab8016a2353 user: Mark <markmm82 <at> gmail.com> date: Fri Aug 04 19:25:27 2017 -0400 summary: Fixes issue 36067: Improve callouts performance extending from SimpleCallout
Refactorized some old callouts extending HttpSecureAppServlet to use SimpleCallout and improve performance. diffstat: src/org/openbravo/erpCommon/ad_callouts/SE_Expense_Amount.java | 174 +-- src/org/openbravo/erpCommon/ad_callouts/SE_Expense_BP_Project.java | 150 +-- src/org/openbravo/erpCommon/ad_callouts/SE_Expense_Product.java | 250 ++--- src/org/openbravo/erpCommon/ad_callouts/SE_ExternalPOS_BPartner.java | 94 +- src/org/openbravo/erpCommon/ad_callouts/SE_FinancialAccount_BSAccounts.java | 147 +-- src/org/openbravo/erpCommon/ad_callouts/SE_InOut_DocType.java | 96 +- src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_BPartner.java | 471 +++------ src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_Project.java | 104 +- src/org/openbravo/erpCommon/ad_callouts/SE_Order_Project.java | 95 +- src/org/openbravo/erpCommon/ad_callouts/SE_PeriodNo.java | 199 +-- src/org/openbravo/erpCommon/ad_callouts/SE_Period_Control.java | 79 +- src/org/openbravo/erpCommon/ad_callouts/SE_Pricelist_Active.java | 77 +- src/org/openbravo/erpCommon/ad_callouts/SE_ProjectLine_Value.java | 178 +-- src/org/openbravo/erpCommon/ad_callouts/SE_Project_BPartner.java | 322 ++---- src/org/openbravo/erpCommon/ad_callouts/SE_Proposal_BPartner.java | 183 +-- src/org/openbravo/erpCommon/ad_callouts/SE_Supplier_BPartner.java | 76 +- src/org/openbravo/erpCommon/ad_callouts/SE_Taxes_Active.java | 74 +- src/org/openbravo/erpCommon/ad_callouts/SL_Asset_Product.java | 93 +- src/org/openbravo/erpCommon/ad_callouts/SL_Assets.java | 110 +- src/org/openbravo/erpCommon/ad_callouts/SL_BankDebt_Amount.java | 115 +- src/org/openbravo/erpCommon/ad_callouts/SL_BankStmt_Amount.java | 118 +- src/org/openbravo/erpCommon/ad_callouts/SL_Budget_Product.java | 70 +- src/org/openbravo/erpCommon/ad_callouts/SL_CCPMeasure_Group.java | 73 +- src/org/openbravo/erpCommon/ad_callouts/SL_CashJournal_Amounts.java | 102 +- src/org/openbravo/erpCommon/ad_callouts/SL_Charge.java | 76 +- src/org/openbravo/erpCommon/ad_callouts/SL_Conversion_Rate.java | 96 +- src/org/openbravo/erpCommon/ad_callouts/SL_CostcenterEmployee_SalaryCategory.java | 69 +- src/org/openbravo/erpCommon/ad_callouts/SL_GlobalUse_Conversion.java | 125 +- src/org/openbravo/erpCommon/ad_callouts/SL_GlobalUse_Product.java | 187 +-- src/org/openbravo/erpCommon/ad_callouts/SL_InOutLine_Product.java | 4 - src/org/openbravo/erpCommon/ad_callouts/SL_InOut_BPartner.java | 315 ++---- src/org/openbravo/erpCommon/ad_callouts/SL_InOut_Conversion.java | 129 +- src/org/openbravo/erpCommon/ad_callouts/SL_Internal_Consumption_Conversion.java | 146 +-- src/org/openbravo/erpCommon/ad_callouts/SL_Internal_Consumption_Product.java | 213 +--- src/org/openbravo/erpCommon/ad_callouts/SL_Inventory_Conversion.java | 127 +- src/org/openbravo/erpCommon/ad_callouts/SL_Inventory_Locator.java | 2 - src/org/openbravo/erpCommon/ad_callouts/SL_Inventory_Product.java | 4 - src/org/openbravo/erpCommon/ad_callouts/SL_InvoiceTax_Amt.java | 103 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_Amt.java | 327 ++--- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_Charge_Tax.java | 104 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_Conversion.java | 127 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_DocType.java | 114 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_Glitem.java | 84 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_PriceList.java | 68 +- src/org/openbravo/erpCommon/ad_callouts/SL_Invoice_Product.java | 313 ++--- src/org/openbravo/erpCommon/ad_callouts/SL_JournalLineAmt.java | 126 +- src/org/openbravo/erpCommon/ad_callouts/SL_Journal_Period.java | 200 +-- src/org/openbravo/erpCommon/ad_callouts/SL_LegalEntity_Acct.java | 78 +- src/org/openbravo/erpCommon/ad_callouts/SL_MachineCost.java | 252 +--- src/org/openbravo/erpCommon/ad_callouts/SL_Movement_Conversion.java | 130 +- src/org/openbravo/erpCommon/ad_callouts/SL_Movement_Product.java | 3 - src/org/openbravo/erpCommon/ad_callouts/SL_Order_Amt.java | 411 +++----- src/org/openbravo/erpCommon/ad_callouts/SL_Order_Charge_Tax.java | 111 +- src/org/openbravo/erpCommon/ad_callouts/SL_Order_Conversion.java | 144 +- src/org/openbravo/erpCommon/ad_callouts/SL_Order_DocType.java | 282 ++--- src/org/openbravo/erpCommon/ad_callouts/SL_Order_PriceList.java | 70 +- src/org/openbravo/erpCommon/ad_callouts/SL_Order_Product.java | 403 +++----- src/org/openbravo/erpCommon/ad_callouts/SL_Order_Tax.java | 111 +- src/org/openbravo/erpCommon/ad_callouts/SL_Organization_Info.java | 70 +- src/org/openbravo/erpCommon/ad_callouts/SL_PC_Case_Product.java | 94 +- src/org/openbravo/erpCommon/ad_callouts/SL_ProductPrice_PriceListVersion.java | 56 +- src/org/openbravo/erpCommon/ad_callouts/SL_Product_Type.java | 69 +- src/org/openbravo/erpCommon/ad_callouts/SL_ProductionPlan_Conversion.java | 77 +- src/org/openbravo/erpCommon/ad_callouts/SL_ProductionPlan_WRPhase.java | 113 +- src/org/openbravo/erpCommon/ad_callouts/SL_Production_Conversion.java | 126 +- src/org/openbravo/erpCommon/ad_callouts/SL_Production_Product.java | 207 +--- src/org/openbravo/erpCommon/ad_callouts/SL_Project_Margin.java | 150 +-- src/org/openbravo/erpCommon/ad_callouts/SL_Project_Planned.java | 136 +- src/org/openbravo/erpCommon/ad_callouts/SL_Project_PriceList.java | 71 +- src/org/openbravo/erpCommon/ad_callouts/SL_Project_Type.java | 99 +- src/org/openbravo/erpCommon/ad_callouts/SL_Proposal_Product.java | 81 +- src/org/openbravo/erpCommon/ad_callouts/SL_RequisitionLine_Amt.java | 252 ++--- src/org/openbravo/erpCommon/ad_callouts/SL_RequisitionLine_Conversion.java | 126 +- src/org/openbravo/erpCommon/ad_callouts/SL_RequisitionLine_Product.java | 284 ++--- src/org/openbravo/erpCommon/ad_callouts/SL_RequisitionOrder_Order.java | 78 +- src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner.java | 87 +- src/org/openbravo/erpCommon/ad_callouts/SL_Requisition_BPartner_PriceList.java | 116 +- src/org/openbravo/erpCommon/ad_callouts/SL_ScheduledMaintenance_Maintenance.java | 100 +- src/org/openbravo/erpCommon/ad_callouts/SL_SequenceProduct_Conversion.java | 127 +- src/org/openbravo/erpCommon/ad_callouts/SL_SequenceProduct_Product.java | 154 +-- src/org/openbravo/erpCommon/ad_callouts/SL_User_Name.java | 142 +-- src/org/openbravo/erpCommon/ad_callouts/SL_WRPhaseProduct_Product.java | 163 +-- src/org/openbravo/erpCommon/ad_callouts/SL_WRPhase_Sequence.java | 104 +- src/org/openbravo/erpCommon/ad_callouts/SL_WorkRequirement_Conversion.java | 75 +- src/org/openbravo/erpCommon/ad_callouts/SL_WorkRequirement_ProcessPlan.java | 80 +- src/org/openbravo/erpCommon/ad_callouts/SL_WorkRequirement_StartDate.java | 67 +- src/org/openbravo/erpCommon/ad_callouts/SL_Year_Validation.java | 69 +- 87 files changed, 3795 insertions(+), 8082 deletions(-) diffs (truncated from 14888 to 300 lines): diff -r 48d6a58b1b9d -r 2ab8016a2353 src/org/openbravo/erpCommon/ad_callouts/SE_Expense_Amount.java --- a/src/org/openbravo/erpCommon/ad_callouts/SE_Expense_Amount.java Fri Aug 04 14:41:10 2017 +0200 +++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Expense_Amount.java Fri Aug 04 19:25:27 2017 -0400 @@ -11,148 +11,102 @@ * 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-2013 Openbravo SLU + * All portions are Copyright (C) 2001-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; import java.math.BigDecimal; -import javax.servlet.ServletConfig; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; +import org.apache.commons.lang.StringUtils; +import org.openbravo.base.filter.IsIDFilter; import org.openbravo.dal.security.OrganizationStructureProvider; import org.openbravo.dal.service.OBDal; import org.openbravo.erpCommon.utility.DateTimeData; -import org.openbravo.erpCommon.utility.OBError; import org.openbravo.erpCommon.utility.Utility; import org.openbravo.model.common.enterprise.Organization; -import org.openbravo.xmlEngine.XmlDocument; +import org.openbravo.model.timeandexpense.Sheet; -public class SE_Expense_Amount extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; +public class SE_Expense_Amount extends SimpleCallout { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strExpenseAmt = vars.getNumericParameter("inpexpenseamt"); - String strDateexpense = vars.getStringParameter("inpdateexpense"); - String strcCurrencyId = vars.getStringParameter("inpcCurrencyId"); - String strTimeExpenseId = vars.getStringParameter("inpsTimeexpenseId"); - String strTabId = vars.getStringParameter("inpTabId"); + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - try { - printPage(response, vars, strExpenseAmt, strDateexpense, strcCurrencyId, strTimeExpenseId, - strTabId); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + // Parameters + BigDecimal amount = info.getBigDecimalParameter("inpexpenseamt"); + String strDateexpense = info.getStringParameter("inpdateexpense"); + String strcCurrencyId = info.getStringParameter("inpcCurrencyId", IsIDFilter.instance); + String strTimeExpenseId = info.getStringParameter("inpsTimeexpenseId", IsIDFilter.instance); - private void printPage(HttpServletResponse response, VariablesSecureApp vars, - String strExpenseAmt, String strDateexpense, String strcCurrencyId, String strTimeExpenseId, - String strTabId) throws IOException, ServletException { - String localStrDateexpense = strDateexpense; - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - final Organization org = OBDal.getInstance() - .get(org.openbravo.model.timeandexpense.Sheet.class, strTimeExpenseId).getOrganization(); + // Get the currency to from organization's currency, or from the client's currency if it doesn't + // exists + final Organization org = OBDal.getInstance().get(Sheet.class, strTimeExpenseId) + .getOrganization(); String c_Currency_To_ID = getCurrency(org.getId()); if (c_Currency_To_ID == null) { - c_Currency_To_ID = OBDal.getInstance() - .get(org.openbravo.model.timeandexpense.Sheet.class, strTimeExpenseId).getClient() + c_Currency_To_ID = OBDal.getInstance().get(Sheet.class, strTimeExpenseId).getClient() .getCurrency().getId(); } + if (StringUtils.isEmpty(strDateexpense)) { + strDateexpense = StringUtils.isEmpty(SEExpenseAmountData.selectReportDate(this, + strTimeExpenseId)) ? DateTimeData.today(this) : SEExpenseAmountData.selectReportDate( + this, strTimeExpenseId); + } + + // Amount expense + int stdPrecision = 0; + if (StringUtils.isNotEmpty(strcCurrencyId)) { + stdPrecision = Integer.valueOf(SEExpenseAmountData.selectPrecision(this, strcCurrencyId)); + } + if (amount.scale() > stdPrecision) { + amount = amount.setScale(stdPrecision, BigDecimal.ROUND_HALF_UP); + } + // Checks if there is a conversion rate for each of the transactions of // the report - String strConvRateErrorMsg = ""; - OBError myMessage = null; - myMessage = new OBError(); - - if (localStrDateexpense.equals("")) { - localStrDateexpense = SEExpenseAmountData.selectReportDate(this, strTimeExpenseId).equals("") ? DateTimeData - .today(this) : SEExpenseAmountData.selectReportDate(this, strTimeExpenseId); + BigDecimal convAmount = amount; + if (!StringUtils.equals(strcCurrencyId, c_Currency_To_ID)) { + String convertedAmount = amount.toPlainString(); + try { + convertedAmount = SEExpenseProductData.selectConvertedAmt(this, amount.toPlainString(), + strcCurrencyId, c_Currency_To_ID, strDateexpense, info.vars.getClient(), org.getId()); + } catch (Exception e) { + convertedAmount = ""; + OBDal.getInstance().rollbackAndClose(); + info.showMessage(Utility.translateError(this, info.vars, info.vars.getLanguage(), + e.getMessage()).getMessage()); + log4j.warn("Currency does not exist. Exception:" + e); + } + convAmount = StringUtils.isNotEmpty(convertedAmount) ? new BigDecimal(convertedAmount) + : BigDecimal.ZERO; + int stdPrecisionConv = 0; + if (StringUtils.isNotEmpty(c_Currency_To_ID)) { + stdPrecisionConv = Integer.valueOf(SEExpenseAmountData.selectPrecision(this, + c_Currency_To_ID)); + } + if (convAmount.scale() > stdPrecisionConv) { + convAmount = convAmount.setScale(stdPrecisionConv, BigDecimal.ROUND_HALF_UP); + } } - BigDecimal amount = null; - if (!strExpenseAmt.equals("")) { - amount = new BigDecimal(strExpenseAmt); - } else { - amount = new BigDecimal(0.0); - } - String strPrecision = "0"; - if (!strcCurrencyId.equals("")) { - strPrecision = SEExpenseAmountData.selectPrecision(this, strcCurrencyId); - } - int stdPrecision = Integer.valueOf(strPrecision).intValue(); - if (amount.scale() > stdPrecision) - amount = amount.setScale(stdPrecision, BigDecimal.ROUND_HALF_UP); - - String convertedAmount = strExpenseAmt; - BigDecimal convAmount = amount; - - if (!strcCurrencyId.equals(c_Currency_To_ID)) { - String strPrecisionConv = "0"; - if (!c_Currency_To_ID.equals("")) { - strPrecisionConv = SEExpenseAmountData.selectPrecision(this, c_Currency_To_ID); - } - int stdPrecisionConv = Integer.valueOf(strPrecisionConv).intValue(); - try { - convertedAmount = SEExpenseAmountData.selectConvertedAmt(this, strExpenseAmt, - strcCurrencyId, c_Currency_To_ID, localStrDateexpense, vars.getClient(), org.getId()); - } catch (ServletException e) { - convertedAmount = ""; - myMessage = Utility.translateError(this, vars, vars.getLanguage(), e.getMessage()); - strConvRateErrorMsg = myMessage.getMessage(); - log4j.warn("Currency does not exist. Exception:" + e); - } - if (!convertedAmount.equals("")) { - convAmount = new BigDecimal(convertedAmount); - } else { - convAmount = BigDecimal.ZERO; - } - if (convAmount.scale() > stdPrecisionConv) - convAmount = convAmount.setScale(stdPrecisionConv, BigDecimal.ROUND_HALF_UP); - } - StringBuffer resultado = new StringBuffer(); - resultado.append("var calloutName='SE_Expense_Amount';\n\n"); - resultado.append("var respuesta = new Array("); - if (!strConvRateErrorMsg.equals("") && strConvRateErrorMsg != null) { - resultado.append("new Array('MESSAGE', \"" + strConvRateErrorMsg + "\"), "); - } - resultado.append("new Array(\"inpexpenseamt\", " + amount.toPlainString() + ")"); - resultado.append(", new Array(\"inpconvertedamt\", " - + (convAmount.compareTo(BigDecimal.ZERO) == 0 ? "\"\"" : convAmount.toPlainString()) + ")"); - resultado.append(");"); - xmlDocument.setParameter("array", resultado.toString()); - xmlDocument.setParameter("frameName", "appFrame"); - response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); - out.println(xmlDocument.print()); - out.close(); + // Update Expense Amount and Converted Amount + info.addResult("inpexpenseamt", amount); + info.addResult("inpconvertedamt", convAmount.compareTo(BigDecimal.ZERO) != 0 ? convAmount + : null); } private static String getCurrency(String org) { - if (org.equals("0")) { + if (StringUtils.equals(org, "0")) { return null; } else { Organization organization = OBDal.getInstance().get(Organization.class, org); diff -r 48d6a58b1b9d -r 2ab8016a2353 src/org/openbravo/erpCommon/ad_callouts/SE_Expense_BP_Project.java --- a/src/org/openbravo/erpCommon/ad_callouts/SE_Expense_BP_Project.java Fri Aug 04 14:41:10 2017 +0200 +++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Expense_BP_Project.java Fri Aug 04 19:25:27 2017 -0400 @@ -11,124 +11,72 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2008-2012 Openbravo SLU + * All portions are Copyright (C) 2008-2017 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ */ package org.openbravo.erpCommon.ad_callouts; -import java.io.IOException; -import java.io.PrintWriter; +import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringUtils; +import org.openbravo.base.filter.IsIDFilter; -import org.openbravo.base.secureApp.HttpSecureAppServlet; -import org.openbravo.base.secureApp.VariablesSecureApp; -import org.openbravo.xmlEngine.XmlDocument; +public class SE_Expense_BP_Project extends SimpleCallout { -public class SE_Expense_BP_Project extends HttpSecureAppServlet { - private static final long serialVersionUID = 1L; + @Override + protected void execute(CalloutInfo info) throws ServletException { - public void init(ServletConfig config) { - super.init(config); - boolHist = false; - } + String strChanged = info.getLastFieldChanged(); + if (log4j.isDebugEnabled()) { + log4j.debug("CHANGED: " + strChanged); + } - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, - ServletException { - VariablesSecureApp vars = new VariablesSecureApp(request); - if (vars.commandIn("DEFAULT")) { - String strBPartnerId = vars.getStringParameter("inpcBpartnerId"); - String strProjectId = vars.getStringParameter("inpcProjectId"); - String strChanged = vars.getStringParameter("inpLastFieldChanged"); - String strWindowId = vars.getStringParameter("inpwindowId"); - String strTabId = vars.getStringParameter("inpTabId"); + // Parameters + String strProjectId = info.getStringParameter("inpcProjectId", IsIDFilter.instance); + String strBPartnerId = info.getStringParameter("inpcBpartnerId", IsIDFilter.instance); - try { - printPage(response, vars, strBPartnerId, strProjectId, strChanged, strTabId, strWindowId); - } catch (ServletException ex) { - pageErrorCallOut(response); - } - } else - pageError(response); - } + // If project changed + if (StringUtils.equals(strChanged, "inpcProjectId")) { + // Reset Project Phase and Project Task fields + info.addResult("inpcProjectphaseId", null); + info.addResult("inpcProjecttaskId", null); - private void printPage(HttpServletResponse response, VariablesSecureApp vars, - String strBPartnerId, String strProjectId, String strChanged, String strTabId, - String strWindowId) throws IOException, ServletException { - String localStrProjectId = strProjectId; - String localStrBPartnerId = strBPartnerId; - if (log4j.isDebugEnabled()) - log4j.debug("Output: dataSheet"); - XmlDocument xmlDocument = xmlEngine.readXmlTemplate( - "org/openbravo/erpCommon/ad_callouts/CallOut").createXmlDocument(); - StringBuffer resultado = new StringBuffer(); - resultado.append("var calloutName='SE_Expense_BP_Project';\n\n"); - resultado.append("var respuesta = new Array("); ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits