Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * This program is free software; you can redistribute it and/or modify it under the 
   * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software 
   * Foundation.
   *
   * You should have received a copy of the GNU Lesser General Public License along with this 
   * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 
   * or from the Free Software Foundation, Inc., 
   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * 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 Lesser General Public License for more details.
  *
  * Copyright 2006 - 2009 Pentaho Corporation.  All rights reserved.
  *
  *
  * @created
  * @author mbatchel
  */
 package org.pentaho.platform.plugin.condition.javascript;
 
 import java.util.Map;
 
 import  org.pentaho.platform.api.engine.IActionParameter;
 import  org.pentaho.platform.api.engine.IConditionalExecution;
 
 public class ConditionalExecution implements IConditionalExecution {
 
   private String script;
 
   public ConditionalExecution() {
     super();
   }
 
   public String getScript() {
     return ;
   }
 
   public void setScript(final String script) {
     this. = script;
   }
 
   public boolean shouldExecute(final Map currentInputsfinal Log loggerthrows Exception {
     boolean shouldExecute = true;
     Context cx = ContextFactory.getGlobal().enterContext();
     try {
       ScriptableObject scriptable = new RhinoScriptable();
       // initialize the standard javascript objects
       Scriptable scope = cx.initStandardObjects(scriptable);
       ScriptableObject.defineClass(scopeJavaScriptResultSet.class);
       Object inputValue;
       IActionParameter inputParameter;
       String inputName;
       Iterator inputs = currentInputs.entrySet().iterator();
       Map.Entry mapEntry;
       while (inputs.hasNext()) {
         mapEntry = (Map.Entryinputs.next();
         inputName = (StringmapEntry.getKey();
         if (inputName.indexOf('-') >= 0) {
           logger.info("Ignoring Input: " + inputName); //$NON-NLS-1$
           continue;
         }
         inputParameter = (IActionParameter) mapEntry.getValue();
         inputValue = inputParameter.getValue();
 
         Object wrapper;
         if (inputValue instanceof IPentahoResultSet) {
           JavaScriptResultSet results = new JavaScriptResultSet();
           
           //Required as of Rhino 1.7R1 to resolve caching, base object 
           //inheritance and property tree
           results.setPrototype(scriptable);
           
           results.setResultSet((IPentahoResultSetinputValue);
           wrapper = Context.javaToJS(inputValueresults);
         } else {
           wrapper = Context.javaToJS(inputValuescope);
         }
         ScriptableObject.putProperty(scopeinputNamewrapper);
       }
       Object wrappedOut = Context.javaToJS(.scope);
       Object wrappedThis = Context.javaToJS(thisscope);
       ScriptableObject.putProperty(scope"out"wrappedOut); //$NON-NLS-1$
       ScriptableObject.putProperty(scope"rule"wrappedThis); //$NON-NLS-1$
 
       // evaluate the script
       Object resultObject = cx.evaluateString(scope"<cmd>", 1, null); //$NON-NLS-1$
 
       Object actualObject = null;
       if (resultObject instanceof org.mozilla.javascript.NativeJavaObject) {
        actualObject = ((org.mozilla.javascript.NativeJavaObjectresultObject).unwrap();
      } else {
        actualObject = resultObject;
      }
      if (actualObject instanceof Boolean) {
        return ((BooleanactualObject).booleanValue();
      } else if (actualObject instanceof String) {
        return ("true".equalsIgnoreCase(actualObject.toString())) || ("yes".equalsIgnoreCase(actualObject.toString())); //$NON-NLS-1$ //$NON-NLS-2$
      } else if (actualObject instanceof Number) {
        return ((NumberactualObject).intValue() > 0;
      } else if (actualObject instanceof IPentahoResultSet) {
        return ((IPentahoResultSetactualObject).getRowCount() > 0;
      }
      //    } catch (Exception e) {
      //      logger.error("Error executing conditional execution script.", e);
    } finally {
      Context.exit();
    }
    return shouldExecute;
  }
New to GrepCode? Check out our FAQ X