package com.bagri.core.query; /** * Represents a piece of XPath: Path Segment * * @author Denis Sukhoroslov * */ public class PathSegment { private AxisType axis; private String namespace; private String segment; /** * * @param axis the path axis */ PathSegment(AxisType axis) { this.axis = axis; } /** * * @param axis the path axis * @param namespace the path namespace * @param segment the path segment */ PathSegment(AxisType axis, String namespace, String segment) { this(axis); this.namespace = namespace; this.segment = segment; } /** * * @return the path axis */ public AxisType getAxis() { return axis; } /** * * @return the path namespace */ public String getNamespace() { return namespace; } /** * * @return the path segment */ public String getSegment() { return segment; } /** * * @return true is segment belongs to CHILD axis and not pattern */ public boolean isSimple() { return AxisType.CHILD.equals(axis) && !isPattern(); } /** * * @return true if path segment contains wildcards ("*"), false otherwise */ public boolean isPattern() { return (segment != null && segment.indexOf("*") >= 0); } /** * {@inheritDoc} */ @Override public String toString() { String ax = axis.getAxis(); if (namespace == null || namespace.isEmpty()) { return ax + segment; } //return ax + namespace + ":" + segment; return ax + "{" + namespace + "}" + segment; } }