| /******************************************************************************* |
| * Copyright (c) 2006 Oracle Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Oracle Corporation - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.bpel.xpath10; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * A function all expression in XPath. |
| * |
| * @author Michal Chmielewski (michal.chmielewski@oracle.com) |
| * @date Aug 26, 2008 |
| * |
| */ |
| |
| @SuppressWarnings("nls") |
| |
| public class FunctionCallExpr extends Expr { |
| |
| final List<Expr> fParams = new ArrayList<Expr>(); |
| String fName; |
| String fPrefix; |
| |
| /** |
| * Brand new shiny XPath expression. |
| * |
| * @param pfx the prefix |
| * @param name the function name. |
| */ |
| public FunctionCallExpr (String pfx, String name) { |
| super(null); |
| fName = name; |
| fPrefix = pfx; |
| } |
| |
| /** |
| * @return the function prefix (if defined). |
| */ |
| public String getPrefix() { |
| return fPrefix; |
| } |
| |
| /** |
| * @return the function name |
| */ |
| public String getFunctionName() { |
| return fName; |
| } |
| |
| /** |
| * @return the parameter list for this function. |
| */ |
| public List<Expr> getParameters() { |
| return fParams; |
| } |
| |
| /** |
| * Add a parameter to the parameter list. The parser |
| * call this method. |
| * |
| * @param p the parameter |
| */ |
| public void addParameter (Expr p) { |
| fParams.add(p); |
| } |
| |
| @Override |
| protected String asText() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append(fnName()).append(argsToString(false)); |
| return sb.toString(); |
| } |
| |
| /** |
| * @see org.eclipse.bpel.xpath10.Expr#toString() |
| */ |
| |
| @Override |
| public String toString () { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("{FunctionCall,").append(getFunctionName()).append(",").append( argsToString(true) ).append("}"); |
| return sb.toString(); |
| } |
| |
| |
| String fnName () { |
| if ("".equals(fPrefix) || fPrefix == null) { |
| return fName; |
| } |
| return fPrefix + ":" + fName; |
| } |
| |
| String argsToString (boolean asString ) { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("("); |
| int count = 0; |
| for(Expr n : fParams) { |
| if (count > 0) { |
| sb.append(", "); |
| } |
| if (asString) { |
| sb.append(n); |
| } else { |
| sb.append(n.getText()); |
| } |
| count ++; |
| } |
| sb.append(")"); |
| return sb.toString(); |
| } |
| } |