diff --git a/extension/posterita/webui/WEB-INF/src/org/compiere/model/CalloutEngine.java b/extension/posterita/webui/WEB-INF/src/org/compiere/model/CalloutEngine.java deleted file mode 100644 index f08af4ee82..0000000000 --- a/extension/posterita/webui/WEB-INF/src/org/compiere/model/CalloutEngine.java +++ /dev/null @@ -1,252 +0,0 @@ -/****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * - * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * - * This program is free software; you can redistribute it and/or modify it * - * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.model; - -import java.lang.reflect.*; -import java.math.*; -import java.sql.*; -import java.util.*; -import java.util.logging.*; -import org.compiere.util.*; - -/** - * Callout Emgine. - * - * @author Jorg Janke - * @version $Id: CalloutEngine.java,v 1.3 2006/07/30 00:51:05 jjanke Exp $ - */ -public class CalloutEngine implements Callout -{ - /** - * Constructor - */ - public CalloutEngine() - { - super(); - } - - /** Logger */ - protected CLogger log = CLogger.getCLogger(getClass()); - - /** - * Start Callout. - *

- * Callout's are used for cross field validation and setting values in other fields - * when returning a non empty (error message) string, an exception is raised - *

- * When invoked, the Tab model has the new value! - * - * @param ctx Context - * @param methodName Method name - * @param WindowNo current Window No - * @param mTab Model Tab - * @param mField Model Field - * @param value The new value - * @param oldValue The old value - * @return Error message or "" - */ - public String start (Properties ctx, String methodName, int WindowNo, - GridTab mTab, GridField mField, Object value, Object oldValue) - { - if (methodName == null || methodName.length() == 0) - throw new IllegalArgumentException ("No Method Name"); - // - String retValue = ""; - StringBuffer msg = new StringBuffer(methodName).append(" - ") - .append(mField.getColumnName()) - .append("=").append(value) - .append(" (old=").append(oldValue) - .append(") {active=").append(isCalloutActive()).append("}"); - if (!isCalloutActive()) - log.info (msg.toString()); - - // Find Method - Method method = getMethod(methodName); - if (method == null) - throw new IllegalArgumentException ("Method not found: " + methodName); - int argLength = method.getParameterTypes().length; - if (!(argLength == 5 || argLength == 6)) - throw new IllegalArgumentException ("Method " + methodName - + " has invalid no of arguments: " + argLength); - - // Call Method - try - { - Object[] args = null; - if (argLength == 6) - args = new Object[] {ctx, new Integer(WindowNo), mTab, mField, value, oldValue}; - else - args = new Object[] {ctx, new Integer(WindowNo), mTab, mField, value}; - retValue = (String)method.invoke(this, args); - } - catch (Exception e) - { - setCalloutActive(false); - Throwable ex = e.getCause(); // InvocationTargetException - if (ex == null) - ex = e; - log.log(Level.SEVERE, "start: " + methodName, ex); - ex.printStackTrace(System.err); - retValue = ex.getLocalizedMessage(); - } - return retValue; - } // start - - /** - * Conversion Rules. - * Convert a String - * - * @param methodName method name - * @param value the value - * @return converted String or Null if no method found - */ - public String convert (String methodName, String value) - { - if (methodName == null || methodName.length() == 0) - throw new IllegalArgumentException ("No Method Name"); - // - String retValue = null; - StringBuffer msg = new StringBuffer(methodName).append(" - ").append(value); - log.info (msg.toString()); - // - // Find Method - Method method = getMethod(methodName); - if (method == null) - throw new IllegalArgumentException ("Method not found: " + methodName); - int argLength = method.getParameterTypes().length; - if (argLength != 1) - throw new IllegalArgumentException ("Method " + methodName - + " has invalid no of arguments: " + argLength); - - // Call Method - try - { - Object[] args = new Object[] {value}; - retValue = (String)method.invoke(this, args); - } - catch (Exception e) - { - setCalloutActive(false); - log.log(Level.SEVERE, "convert: " + methodName, e); - e.printStackTrace(System.err); - } - return retValue; - } // convert - - /** - * Get Method - * @param methodName method name - * @return method or null - */ - private Method getMethod (String methodName) - { - Method[] allMethods = getClass().getMethods(); - for (int i = 0; i < allMethods.length; i++) - { - if (methodName.equals(allMethods[i].getName())) - return allMethods[i]; - } - return null; - } // getMethod - - /*************************************************************************/ - -// private static boolean s_calloutActive = false; // Commented by Ashley - private static final String CALLOUT_CTX_KEY = "CalloutActive"; - - /** - * Is Callout Active - * Modification: Retrieves whether callout is (in)active from - * context rather that simple static boolean variable - * @return true if active - */ - protected static boolean isCalloutActive() - { -// return s_calloutActive; - String value = Env.getContext(Env.getCtx(), CALLOUT_CTX_KEY); - return "Y".equals(value); - } // isCalloutActive - - /** - * Set Callout (in)active - * Modification: Change the active management from simple static boolean - * to context integration because in the webui concurrent - * environment, multiple users won't be able to invoke - * callout concurrently. - * @author ashley - * @param active active - */ - protected static void setCalloutActive (boolean active) - { -// s_calloutActive = active; - Env.setContext(Env.getCtx(), CALLOUT_CTX_KEY, active); - } // setCalloutActive - - /** - * Set Account Date Value. - * org.compiere.model.CalloutEngine.dateAcct - * @param ctx context - * @param WindowNo window no - * @param mTab tab - * @param mField field - * @param value value - * @return null or error message - */ - public String dateAcct (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) - { - if (isCalloutActive()) // assuming it is resetting value - return ""; - // setCalloutActive(true); - if (value == null || !(value instanceof Timestamp)) - return ""; - mTab.setValue("DateAcct", value); - // setCalloutActive(false); - return ""; - } // dateAcct - - /** - * Rate - set Multiply Rate from Divide Rate and vice versa - * org.compiere.model.CalloutEngine.rate - * @param ctx context - * @param WindowNo window no - * @param mTab tab - * @param mField field - * @param value value - * @return null or error message - */ - public String rate (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value) - { - if (isCalloutActive() || value == null) // assuming it is Conversion_Rate - return ""; - setCalloutActive(true); - - BigDecimal rate1 = (BigDecimal)value; - BigDecimal rate2 = Env.ZERO; - BigDecimal one = new BigDecimal(1.0); - - if (rate1.doubleValue() != 0.0) // no divide by zero - rate2 = one.divide(rate1, 12, BigDecimal.ROUND_HALF_UP); - // - if (mField.getColumnName().equals("MultiplyRate")) - mTab.setValue("DivideRate", rate2); - else - mTab.setValue("MultiplyRate", rate2); - log.info(mField.getColumnName() + "=" + rate1 + " => " + rate2); - setCalloutActive(false); - return ""; - } // rate -} // CalloutEngine