package eu.dnetlib.data.transform;

import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;

public class DmfXsltFunctionsTest {

	private Transformer transformer;

	private final InputStream dmf = getClass().getResourceAsStream("/eu/dnetlib/data/transform/record.xml");

	@Before
	public void setUp() throws Exception {
		Source source = new StreamSource(getClass().getResourceAsStream("/eu/dnetlib/actionmanager/xslt/dmf2insertActions.xslt"));
		transformer = TransformerFactory.newInstance().newTransformer(source);
		transformer.setParameter("trust", "0.8");
		transformer.setParameter("provenance", "sysimport:mining:repository");
		transformer.setParameter("namespaceprefix", "openaire____");
	}

	@Test
	public void test_01() throws Exception {
		String xml = IOUtils.toString(dmf);
		applyXslt(xml);
	}

	public String applyXslt(final String xml) throws Exception {
		final Source xmlSource = new StreamSource(new StringReader(xml));
		final StringWriter output = new StringWriter();

		transformer.transform(xmlSource, new StreamResult(output));

		System.out.println(output.toString());

		return output.toString();
	}

}
