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