blob: bcb902da25a9bb4610555a29916a51bd6041336a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2010 BREDEX GmbH.
* 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:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.client.core.utils;
import java.util.List;
import org.eclipse.jubula.client.core.businessprocess.TestExecution;
import org.eclipse.jubula.client.core.i18n.Messages;
import org.eclipse.jubula.client.core.model.IParamDescriptionPO;
import org.eclipse.jubula.client.core.utils.ParamValueConverter.ConvValidationState;
import org.eclipse.jubula.tools.internal.constants.StringConstants;
import org.eclipse.jubula.tools.internal.exception.InvalidDataException;
import org.eclipse.jubula.tools.internal.messagehandling.MessageIDs;
/**
* @author BREDEX GmbH
* @created 14.08.2007
*/
public class VariableToken extends AbstractParamValueToken {
/**
* represents the actual name of the variable (without the additional
* pre- and post-fix information contained in <code>m_value</code>).
*/
private String m_variableName = null;
/**
* @param s string represents the token
* @param pos index of first character of token in entire string
* @param variableName The name of the variable represented by the token
* (without the pre- and post-fix text included in
* <code>s</code>).
* @param desc param description belonging to currently edited parameter value
*/
public VariableToken(String s, int pos, String variableName,
IParamDescriptionPO desc) {
super(s, pos, desc);
m_variableName = variableName;
}
/**
* only runtime validation possible
* {@inheritDoc}
* @see IParamValueToken#validate(INodePO)
*/
public ConvValidationState validate() {
ConvValidationState state = ConvValidationState.notSet;
if (getParamDescription() == null
|| VARIABLE.equals(getParamDescription().getType())) {
state = ConvValidationState.invalid;
setErrorKey(MessageIDs.E_INVALID_VAR_NAME);
}
return state;
}
/**
* {@inheritDoc}
* @see org.eclipse.jubula.client.core.utils.IParamValueToken#getValue()
*/
public String getGuiString() {
return getValue();
}
/** {@inheritDoc}
* @see org.eclipse.jubula.client.core.utils.IParamValueToken#getExecutionString(int, org.eclipse.jubula.client.core.utils.Traverser, java.util.Locale)
*/
public String getExecutionString(List<ExecObject> stack)
throws InvalidDataException {
String resolvedVar = TestExecution.getInstance()
.getVariableStore().getValue(m_variableName);
if (resolvedVar == null) {
throw new InvalidDataException(Messages.VariableWithName
+ StringConstants.SPACE + getValue()
+ StringConstants.SPACE + Messages.IsNotResolvable,
MessageIDs.E_UNRESOLV_VAR_ERROR);
}
return resolvedVar;
}
/** {@inheritDoc}
* @see org.eclipse.jubula.client.core.utils.IParamValueToken#getModelString()
*/
public String getModelString() {
return getValue();
}
/**
* Gets the variable without $ or braces
* @return variable name
*/
public String getVariableString() {
return m_variableName;
}
}