package org.exist.indexing.range;
import org.exist.dom.persistent.AttrImpl;
import org.exist.dom.persistent.AbstractCharacterData;
import org.exist.dom.QName;
import org.exist.storage.NodePath;
import org.exist.util.XMLString;
import java.util.ArrayList;
import java.util.List;
public class SimpleTextCollector implements TextCollector {
private boolean includeNested = true;
private RangeIndexConfigElement config = null;
private XMLString buf = new XMLString();
private int wsTreatment = XMLString.SUPPRESS_NONE;
private boolean caseSensitive = true;
public SimpleTextCollector(RangeIndexConfigElement config, boolean includeNested, int wsTreatment, boolean caseSensitive) {
this.config = config;
this.includeNested = includeNested;
this.wsTreatment = wsTreatment;
this.caseSensitive = caseSensitive;
}
public SimpleTextCollector(String content) {
buf.append(content);
}
@Override
public void startElement(QName qname, NodePath path) {
}
@Override
public void endElement(QName qname, NodePath path) {
}
@Override
public void characters(AbstractCharacterData text, NodePath path) {
if (includeNested || config.match(path)) {
buf.append(text.getXMLString());
}
}
@Override
public void attribute(AttrImpl attribute, NodePath path) {
}
@Override
public int length() {
return buf.length();
}
@Override
public boolean hasFields() {
return false;
}
@Override
public List<Field> getFields() {
List<Field> fields = new ArrayList<Field>(1);
fields.add(new Field(buf, wsTreatment, caseSensitive));
return fields;
}
}