Project

General

Profile

1
package eu.dnetlib.resolver;
2

    
3
import com.google.gson.Gson;
4
import eu.dnetlib.dli.resolver.model.*;
5
import eu.dnetlib.dli.resolver.model.serializer.ResolverSerializer;
6
import eu.dnetlib.pid.resolver.model.ObjectType;
7
import eu.dnetlib.resolver.parser.DMFResolverParser;
8
import eu.dnetlib.resolver.parser.PMFResolverParser;
9
import org.apache.commons.io.IOUtils;
10
import org.apache.commons.logging.Log;
11
import org.apache.commons.logging.LogFactory;
12
import org.junit.Assert;
13
import org.junit.Ignore;
14
import org.junit.Test;
15
import org.springframework.beans.factory.annotation.Autowired;
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.ByteArrayInputStream;
23
import java.io.IOException;
24
import java.io.InputStream;
25
import java.io.StringWriter;
26
import java.util.Arrays;
27

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

    
36
    private static final Log log = LogFactory.getLog(DLISerializerTest.class);
37

    
38
	@Autowired
39
	private ResolverSerializer serializer;
40

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

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

    
50
		final DLIResolvedObject object = createPMFMock();
51

    
52
		object.setCompletionStatus(CompletionStatus.complete.toString());
53

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

    
61

    
62

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

    
67
		log.debug(replacingXML);
68
	}
69

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

    
75
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
76

    
77
		log.debug(replacingXML);
78

    
79
	}
80

    
81

    
82
	@Test
83
	public void testSerializeFromJson() throws Exception {
84
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/resolvedObject.json");
85
		final Gson gson = new Gson();
86
		final DLIResolvedObject resolvedObject = gson.fromJson(IOUtils.toString(recordStream), DLIResolvedObject.class);
87
		Assert.assertEquals(resolvedObject.getType(), ObjectType.dataset);
88
		final String recordTemplate =
89
				"<root xmlns:oaf=\"http://namespace.dnet.eu/oaf\" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">%s</root>";
90
		final String xml = serializer.serializeToXML(resolvedObject);
91

    
92
		final String inputRecord = String.format(recordTemplate, xml);
93

    
94
		final InputStream xsltAsStream = getClass().getResourceAsStream("/eu/dnetlib/resolver/xslt/transformResolvedRecord.xsl");
95

    
96
		final InputStream xmlAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/transform/inputResolved.xml");
97

    
98
		final TransformerFactory factory = TransformerFactory.newInstance();
99
		factory.newTransformer();
100
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
101

    
102
		final Transformer transformer = factory.newTransformer(xsltSource);
103
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
104
		final StringWriter output = new StringWriter();
105
		transformer.transform(new StreamSource(new ByteArrayInputStream(inputRecord.getBytes())), new StreamResult(output));
106
		final String record = output.toString();
107
		System.out.println("record = " + record);
108
	}
109

    
110
	private DLIResolvedObject createPMFMock() throws IOException {
111
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
112
		String xml = IOUtils.toString(resource);
113

    
114
		PMFResolverParser parser = new PMFResolverParser();
115
		return parser.parseObject(xml);
116
	}
117

    
118
	private DLIResolvedObject createDMFMock() throws Exception {
119
		final InputStream xsltAsStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/oai_datacite_transform.xsl");
120

    
121
		final TransformerFactory factory = TransformerFactory.newInstance();
122
		factory.newTransformer();
123
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
124
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
125
		final Transformer transformer = factory.newTransformer(xsltSource);
126
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
127
		final StringWriter output = new StringWriter();
128
		transformer.transform(new StreamSource(recordStream), new StreamResult(output));
129
		final String record = output.toString();
130
		final DMFResolverParser parser = new DMFResolverParser();
131
		return parser.parseObject(record);
132

    
133
	}
134

    
135
	private DLIResolvedObject createScholixMock() {
136

    
137
		final DLIResolvedObject mock = new DLIResolvedObject();
138
		mock.setPid("mock");
139
		mock.setPidType("mockType");
140
		final DLIObjectProvenance provenance = new DLIObjectProvenance();
141
		provenance.setDatasource("Mock Datasource");
142
        provenance.setDatasourceId("Mock Id");
143
        mock.setDatasourceProvenance(Arrays.asList(provenance));
144
		final DLIObjectRelation relation = new DLIObjectRelation();
145
		relation.setTargetPID(new PID("mockTarget", "mockType"));
146
		relation.setTargetType(ObjectType.unknown);
147
        relation.setRelationSemantics("unknown");
148
        relation.setRelationProvenance(Arrays.asList(provenance));
149
		mock.setRelations(Arrays.asList(relation));
150
		return mock;
151
	}
152

    
153
}
(4-4/5)