Project

General

Profile

1
package eu.dnetlib.resolver;
2

    
3
import eu.dnetlib.dli.resolver.model.*;
4
import eu.dnetlib.dli.resolver.model.serializer.ResolverSerializer;
5
import eu.dnetlib.resolver.parser.DMFResolverParser;
6
import eu.dnetlib.resolver.parser.PMFResolverParser;
7
import eu.dnetlib.resolver.store.ConfigurationResolverStoreTestConfig;
8
import org.apache.commons.io.IOUtils;
9
import org.apache.commons.logging.Log;
10
import org.apache.commons.logging.LogFactory;
11
import org.junit.Test;
12
import org.junit.runner.RunWith;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.test.context.ContextConfiguration;
15
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
16

    
17
import javax.xml.transform.OutputKeys;
18
import javax.xml.transform.Transformer;
19
import javax.xml.transform.TransformerFactory;
20
import javax.xml.transform.stream.StreamResult;
21
import javax.xml.transform.stream.StreamSource;
22
import java.io.IOException;
23
import java.io.InputStream;
24
import java.io.StringWriter;
25
import java.util.Arrays;
26

    
27
/**
28
 * Created by sandro on 10/4/16.
29
 */
30
@RunWith(SpringJUnit4ClassRunner.class)
31
@ContextConfiguration(classes = { ConfigurationTestConfig.class, ConfigurationResolverStoreTestConfig.class })
32
public class DLIRSerializerTest {
33

    
34
	private static final Log log = LogFactory.getLog(DLIRSerializerTest.class);
35

    
36
	@Autowired
37
	private ResolverSerializer serializer;
38

    
39
	@Test
40
	public void testSerializeScholix() {
41
		log.debug(serializer.serializeToXML(createScholixMock()));
42
	}
43

    
44
	@Test
45
	public void testSerializePMF() throws IOException {
46
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
47

    
48
		final ResolvedObject object = createPMFMock();
49

    
50
		object.setCompletionStatus(CompletionStatus.complete.toString());
51

    
52
		final ObjectProvenance provencance = new ObjectProvenance();
53
		provencance.setDatasource("Provencance1");
54
		provencance.setDatasourceId("pid1");
55
		provencance.setProvisionMode("resolved");
56
		provencance.setCompletionStatus("complete");
57
		object.getDatasourceProvenance().add(provencance);
58

    
59

    
60

    
61
		object.setPid("MOCKPID");
62
		object.setPidType("MOCKPIDType");
63
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
64

    
65
		log.debug(replacingXML);
66
	}
67

    
68
	@Test
69
	public void testSerializeDMF() throws Exception {
70
		final ResolvedObject object = createDMFMock();
71
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
72

    
73
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
74

    
75
		log.debug(replacingXML);
76

    
77
	}
78

    
79
	private ResolvedObject createPMFMock() throws IOException {
80
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
81
		String xml = IOUtils.toString(resource);
82

    
83
		PMFResolverParser parser = new PMFResolverParser();
84
		return parser.parseObject(xml);
85
	}
86

    
87
	private ResolvedObject createDMFMock() throws Exception {
88
		final InputStream xsltAsStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/oai_datacite_transform.xsl");
89

    
90
		final TransformerFactory factory = TransformerFactory.newInstance();
91
		factory.newTransformer();
92
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
93
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
94
		final Transformer transformer = factory.newTransformer(xsltSource);
95
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
96
		final StringWriter output = new StringWriter();
97
		transformer.transform(new StreamSource(recordStream), new StreamResult(output));
98
		final String record = output.toString();
99
		final DMFResolverParser parser = new DMFResolverParser();
100
		return parser.parseObject(record);
101

    
102
	}
103

    
104
	private ResolvedObject createScholixMock() {
105

    
106
		final ResolvedObject mock = new ResolvedObject();
107
		mock.setPid("mock");
108
		mock.setPidType("mockType");
109
		final ObjectProvenance provenance = new ObjectProvenance();
110
		provenance.setDatasource("Mock Datasource");
111
		mock.setDatasourceProvenance(Arrays.asList(provenance));
112
		final ObjectRelation relation = new ObjectRelation();
113
		relation.setTargetPID(new PID("mockTarget", "mockType"));
114
		relation.setTargetType(ObjectType.unknown);
115
		relation.setRelationProvenance(Arrays.asList(provenance));
116
		mock.setRelations(Arrays.asList(relation));
117
		return mock;
118
	}
119

    
120
}
(3-3/4)