48 lines
1.5 KiB
Java
48 lines
1.5 KiB
Java
package eu.dnetlib.manager.wf.nodes.aggregation;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.stream.Stream;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import eu.dnetlib.data.mapping.RecordTransformer;
|
|
import eu.dnetlib.data.mapping.xslt.XsltTransformFactory;
|
|
import eu.dnetlib.data.mdstore.model.records.MetadataRecord;
|
|
import eu.dnetlib.data.mdstore.model.records.MetadataRecordImpl;
|
|
import eu.dnetlib.manager.wf.annotations.WfInputParam;
|
|
import eu.dnetlib.manager.wf.annotations.WfNode;
|
|
import eu.dnetlib.manager.wf.nodes.stream.StreamMapperNode;
|
|
|
|
@WfNode("applyXslt")
|
|
public class MetadataXsltTransformNode extends StreamMapperNode<MetadataRecord, MetadataRecord> {
|
|
|
|
@WfInputParam
|
|
private String ruleId;
|
|
|
|
@Autowired
|
|
private XsltTransformFactory xsltTransformFactory;
|
|
|
|
@Override
|
|
protected Stream<MetadataRecord> mapStream(final Stream<MetadataRecord> input) {
|
|
try {
|
|
final Map<String, String> params = new HashMap<>();
|
|
// TODO: which params ?
|
|
|
|
final RecordTransformer<String, String> xslt = xsltTransformFactory.getTransformer(ruleId, params);
|
|
|
|
final long now = System.currentTimeMillis();
|
|
return input.map(in -> {
|
|
final MetadataRecord out = new MetadataRecordImpl();
|
|
BeanUtils.copyProperties(in, out);
|
|
out.setBody(xslt.transform(in.getBody()));
|
|
out.setDateOfTransformation(now);
|
|
return out;
|
|
});
|
|
} catch (final Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
}
|