blob: 419c03d2e83a8711701ac2e4705970c20eb915f0 [file] [log] [blame]
/*******************************************************************************
* 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 step in the location path ...
*
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Aug 26, 2008
*
*/
@SuppressWarnings("nls")
public class Step {
int fAxis = 0;
List<Predicate> fList = new ArrayList<Predicate>();
int fStartPosition = -1;
int fEndPosition = -1;
/**
* Bran new step ... on the axis specified.
*
* @param axis
*/
public Step (int axis) {
fAxis = axis;
}
/**
* @return return the text of this step.
*/
public String getText()
{
StringBuilder buf = new StringBuilder();
buf.append(getAxisName());
buf.append("::");
buf.append(asText());
for(Predicate p : fList) {
buf.append(p.getText());
}
return buf.toString();
}
protected String asText () {
return "?";
}
/**
* @return the axis of this step.
*/
public int getAxis () {
return fAxis;
}
/**
* Set the axis of this step (from parser).
*
* @param axis the axis of this step.
*/
public void setAxis (int axis) {
fAxis = axis;
}
/**
* Add a predicate to this step.
*
* @param predicate
*/
public void addPredicate(Predicate predicate)
{
if (predicate != null) {
fList.add(predicate);
}
}
/**
* @return all predicates of this step.
*/
public List<Predicate> getPredicates() {
return fList;
}
/**
* @return the axis name.
*/
public String getAxisName ()
{
return Axis.getName(fAxis);
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString () {
StringBuilder sb = new StringBuilder();
sb.append("{").append(getClass().getSimpleName()).append(",").append(getAxisName()).append(",");
sb.append(asString());
sb.append(",[");
for(Predicate p : fList) {
sb.append(p);
sb.append(",");
}
sb.append("]");
sb.append("}");
return sb.toString();
}
protected String asString () {
return null;
}
/**
* @return the end position of this step in the input "stream"
*/
public int getEndPosition() {
return fEndPosition;
}
/**
* @return the start position of this step in the input "stream"
*/
public int getPosition() {
return fStartPosition;
}
/**
* Set the position of this step in the input stream.
* This is called by the parser ...
*
* @param start
* @param end
*/
public void setPosition (int start, int end) {
fStartPosition = start;
fEndPosition = end;
}
}