33 lines
897 B
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);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|