package lux.index.attribute; import java.util.ArrayList; import java.util.List; import lux.xml.QName; import org.apache.lucene.util.AttributeImpl; /** * @see QNameAttribute * */ public class QNameAttributeImpl extends AttributeImpl implements QNameAttribute { private int iQName; private List<QName> qnames; public QNameAttributeImpl () { qnames = new ArrayList<QName>(); } /** * We do *not* clear the state here, since it persists across multiple tokens. Rather we rely on * QNameTextTokenStream to manage our state. */ @Override public void clear() { iQName = 0; } @Override public void copyTo(AttributeImpl target) { target.clear(); ((QNameAttributeImpl) target).qnames.addAll (qnames); } @Override public boolean hasNext() { return iQName >= 0 && iQName < qnames.size(); } @Override public QName next() { return qnames.get(iQName++); } @Override public void addQName(QName qname) { qnames.add(qname); } @Override public void clearQNames () { qnames.clear(); } @Override public boolean onFirst() { return iQName == 0; } }