package eu.dnetlib.actionmanager.xslt;

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.junit.Before;
import org.junit.Test;

public class RelationXsltFunctionsTest {
	private Transformer transformer;

	@Before
	public void setUp() throws Exception {
		Source source = new StreamSource(getClass().getResourceAsStream("/eu/dnetlib/actionmanager/xslt/rels2actions.xslt"));
		transformer = TransformerFactory.newInstance().newTransformer(source);
	}

	@Test
	public void test_01() throws Exception {
		StringBuffer xml = new StringBuffer();
		xml.append("<RELATIONS>");
		xml.append("</RELATIONS>");

		applyXslt(xml.toString());
	}

	@Test
	public void test_02() throws Exception {
		StringBuffer xml = new StringBuffer();
		xml.append("<RELATIONS>");
		xml.append("<RELATION type='resultProject' source='50|crossref____::7fb616c8cdd08f0f12a04ac0f18edf80' target='corda_______::281877' />");
		xml.append("<RELATION type='resultProject' source='50|crossref____::7fb616c8cdd08f0f12a04ac0f18edf80' target='40|corda_______::0001fc1603869410927ddbde3afb2403' />");
		xml.append("<RELATION type='personResult' source='30|crossref____::000178abc5a314472603976a1be68927' target='50|crossref____::7fb616c8cdd08f0f12a04ac0f18edf80' />");
		xml.append("</RELATIONS>");

		applyXslt(xml.toString());
	}

	public String applyXslt(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();
	}

}
