
se.ugli.durian.j.dom.mutable.MutableQueryApiImpl Maven / Gradle / Ivy
package se.ugli.durian.j.dom.mutable;
import java.util.Optional;
import java.util.stream.Stream;
import se.ugli.durian.j.dom.node.Attribute;
import se.ugli.durian.j.dom.node.Element;
import se.ugli.durian.j.dom.node.Node;
import se.ugli.durian.j.dom.query.QueryManager;
public class MutableQueryApiImpl implements MutableQueryApi {
private final MutableElement mutableElement;
public MutableQueryApiImpl(final MutableElement mutableElement) {
this.mutableElement = mutableElement;
}
@Override
public Optional attribute(final String query) {
return QueryManager.selectNode(mutableElement, query).map(n -> n.as(Attribute.class));
}
@Override
public Stream attributes(final String query) {
return QueryManager.selectNodes(mutableElement, query).map(n -> n.as(Attribute.class));
}
@Override
public Optional attributeValue(final String query) {
return QueryManager.selectNode(mutableElement, query).map(n -> n.as(Attribute.class)).map(Attribute::value);
}
@Override
public Optional element(final String query) {
return QueryManager.selectNode(mutableElement, query).map(n -> n.as(Element.class));
}
@Override
public Stream elements(final String query) {
return QueryManager.selectNodes(mutableElement, query).map(n -> n.as(Element.class));
}
@Override
public boolean boolValue(final String query) {
return QueryManager.evaluteBoolean(mutableElement, query);
}
@Override
public Optional node(final String query) {
return QueryManager.selectNode(mutableElement, query);
}
@Override
public Stream nodes(final String query) {
return QueryManager.selectNodes(mutableElement, query);
}
@Override
public Optional text(final String query) {
return QueryManager.selectText(mutableElement, query);
}
@Override
public Stream texts(final String query) {
return QueryManager.selectTexts(mutableElement, query);
}
// Mutable
@Override
public int setAttributeValues(final String query, final String value) {
return (int) attributes(query).map(a -> a.as(MutableAttribute.class)).peek(a -> a.setValue(value)).count();
}
@Override
public int remove(final String query) {
return (int) nodes(query).filter(n -> n.parent().isPresent())
.filter(n -> n.parent().get() instanceof MutableElement).peek(n -> {
n.parent().get().as(MutableElement.class).remove(n);
}).count();
}
@Override
public long longValue(final String query) {
return QueryManager.evaluteLong(mutableElement, query);
}
@Override
public double doubleValue(final String query) {
return QueryManager.evaluteDouble(mutableElement, query);
}
@Override
public Stream attributeValues(final String query) {
return attributes(query).map(Attribute::value);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy