/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.xpathchooser; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * This is a very simple representation of an xpath path expressions. It * supports only steps, attribute axis, node tests and predicates, while * not parsing predicates further. * * @author Heinrich Wendel * @author Markus Kunde */ public class XPathLocation { /** * Is this path absolute? */ private boolean xAbsolute = false; /** * List of steps of this path. */ private List<XPathStep> steps = new ArrayList<XPathStep>(); /** * Sets the absolute. * @param absolute The absolute to set. */ public void setAbsolute(boolean absolute) { this.xAbsolute = absolute; } /** * Returns the absolute. * @return Returns the absolute. */ public boolean isAbsolute() { return xAbsolute; } /** * Returns the steps. * @return Returns the steps. */ public List<XPathStep> getSteps() { return steps; } /** * {@inheritDoc} * * @see java.lang.Object#toString() */ @Override public String toString() { final StringBuilder path = new StringBuilder(); if (xAbsolute) { path.append("/"); } if (steps.size() > 0) { path.append(steps.get(0)); final Iterator<XPathStep> it = steps.listIterator(1); while (it.hasNext()) { final XPathStep step = it.next(); if (!((step instanceof XPathPredicate) || (step instanceof XPathValue))) { path.append("/"); } path.append(step); } } return path.toString(); } }