/*******************************************************************************
 * 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;

/**
 * 
 * Variable Reference Expression. $variable bit of XPath
 * 
 * @author Michal Chmielewski (michal.chmielewski@oracle.com)
 * @date Aug 26, 2008
 *
 */
@SuppressWarnings("nls")

public class VariableReferenceExpr extends Expr {
	String fName;
	String fPrefix;

	/**
	 * Brand new shiny VariableRefExpr.
	 * @param prefix prefix of the variable (may be null or "")
	 * @param name the name of the variable
	 */
	
	public VariableReferenceExpr (String prefix, String name) {
		super(null);
		fPrefix = prefix;		
		fName = name;
		fText = getText();
	}

	/**
	 * 
	 * @return the prefix
	 */
	
	public String getPrefix() {
		return fPrefix;
	}

	/** 
	 * @return The variable name (sans prefix)
	 */
	public String getVariableName() {
		return fName;
	}

	/**
	 * Return the QName that represents this variable name. 
	 * The QName is returned as a string, with the original prefix used to specify the namespace.
	 * 
	 * @return the QName of this variable
	 */
	
	public String getQName() {
		if ("".equals(fPrefix) || fPrefix == null) {
			return fName;
		}
		return fPrefix + ":" + fName;
	}

	
	@Override
	protected String asText() {
		return "$" + getQName();
	}
}
