package org.basex.api.dom; import org.basex.data.Nodes; import org.basex.query.item.DBNode; import org.basex.query.item.ANode; import org.basex.query.iter.NodeCache; import org.w3c.dom.NodeList; /** * DOM - Node list implementation. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public class BXNList implements NodeList { /** XQuery node set. */ NodeCache xquery; /** XQuery node set. */ Nodes nodes; /** * Constructor. * @param nb nodes */ BXNList(final NodeCache nb) { xquery = nb; xquery.sort(); } /** * Constructor. * @param n nodes */ public BXNList(final Nodes n) { nodes = n; } @Override public BXNode item(final int i) { ANode n = null; if(xquery != null) { if(i < xquery.size()) n = xquery.get(i); } else { if(i < nodes.size()) n = new DBNode(nodes.data, nodes.list[i]); } return n != null ? n.toJava() : null; } @Override public int getLength() { return (int) (xquery != null ? xquery.size() : nodes.size()); } }