53 lines
1.7 KiB
Java
53 lines
1.7 KiB
Java
/*
|
|
* Copyright (c) 2024.
|
|
* SPDX-FileCopyrightText: © 2023 Consiglio Nazionale delle Ricerche
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
package eu.dnetlib.dhp.oa.provision;
|
|
|
|
import java.io.StringReader;
|
|
import java.io.StringWriter;
|
|
|
|
import javax.xml.transform.Transformer;
|
|
import javax.xml.transform.TransformerException;
|
|
import javax.xml.transform.stream.StreamResult;
|
|
import javax.xml.transform.stream.StreamSource;
|
|
|
|
import eu.dnetlib.dhp.utils.saxon.SaxonTransformerFactory;
|
|
|
|
public abstract class AbstractSolrRecordTransformJob {
|
|
|
|
protected static String toIndexRecord(Transformer tr, final String xmlRecord) {
|
|
final StreamResult res = new StreamResult(new StringWriter());
|
|
try {
|
|
tr.transform(new StreamSource(new StringReader(xmlRecord)), res);
|
|
return res.getWriter().toString();
|
|
} catch (TransformerException e) {
|
|
throw new IllegalArgumentException("XPathException on record: \n" + xmlRecord, e);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Creates the XSLT responsible for building the index xml records.
|
|
*
|
|
* @param format Metadata format name (DMF|TMF)
|
|
* @param xslt xslt for building the index record transformer
|
|
* @param fields the list of fields
|
|
* @return the javax.xml.transform.Transformer
|
|
* @throws TransformerException could happen
|
|
*/
|
|
protected static String getLayoutTransformer(String format, String fields, String xslt)
|
|
throws TransformerException {
|
|
|
|
final Transformer layoutTransformer = SaxonTransformerFactory.newInstance(xslt);
|
|
final StreamResult layoutToXsltXslt = new StreamResult(new StringWriter());
|
|
|
|
layoutTransformer.setParameter("format", format);
|
|
layoutTransformer.transform(new StreamSource(new StringReader(fields)), layoutToXsltXslt);
|
|
|
|
return layoutToXsltXslt.getWriter().toString();
|
|
}
|
|
|
|
}
|