dnet-applications/libs/dnet-wf-service/src/main/java/eu/dnetlib/manager/wf/nodes/aggregation/MetadataFilterNode.java

33 lines
897 B
Java

package eu.dnetlib.manager.wf.nodes.aggregation;
import java.util.stream.Stream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import eu.dnetlib.data.mdstore.model.records.MetadataRecord;
import eu.dnetlib.manager.wf.annotations.WfInputParam;
import eu.dnetlib.manager.wf.annotations.WfNode;
import eu.dnetlib.manager.wf.nodes.stream.StreamMapperNode;
@WfNode("xpath_filter")
public class MetadataFilterNode extends StreamMapperNode<MetadataRecord, MetadataRecord> {
@WfInputParam
private String xpath;
@Override
protected Stream<MetadataRecord> mapStream(final Stream<MetadataRecord> input) {
return input.filter(in -> {
try {
final Document doc = DocumentHelper.parseText(in.getBody());
return !doc.selectNodes(xpath).isEmpty();
} catch (final DocumentException e) {
throw new RuntimeException(e);
}
});
}
}