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.resolver.parser.DMFResolverParser;
7
import eu.dnetlib.resolver.parser.PMFResolverParser;
8
import eu.dnetlib.resolver.store.ConfigurationResolverStoreTestConfig;
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.junit.runner.RunWith;
16
import org.springframework.beans.factory.annotation.Autowired;
17
import org.springframework.test.context.ContextConfiguration;
18
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
19

    
20
import javax.xml.transform.OutputKeys;
21
import javax.xml.transform.Transformer;
22
import javax.xml.transform.TransformerFactory;
23
import javax.xml.transform.stream.StreamResult;
24
import javax.xml.transform.stream.StreamSource;
25
import java.io.ByteArrayInputStream;
26
import java.io.IOException;
27
import java.io.InputStream;
28
import java.io.StringWriter;
29
import java.util.Arrays;
30

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

    
39
    private static final Log log = LogFactory.getLog(DLISerializerTest.class);
40

    
41
	@Autowired
42
	private ResolverSerializer serializer;
43

    
44
	@Test
45
	public void testSerializeScholix() {
46
		log.debug(serializer.serializeToXML(createScholixMock()));
47
	}
48

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

    
53
		final ResolvedObject object = createPMFMock();
54

    
55
		object.setCompletionStatus(CompletionStatus.complete.toString());
56

    
57
		final ObjectProvenance provencance = new ObjectProvenance();
58
		provencance.setDatasource("Provencance1");
59
		provencance.setDatasourceId("pid1");
60
		provencance.setProvisionMode("resolved");
61
		provencance.setCompletionStatus("complete");
62
		object.getDatasourceProvenance().add(provencance);
63

    
64

    
65

    
66
		object.setPid("MOCKPID");
67
		object.setPidType("MOCKPIDType");
68
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
69

    
70
		log.debug(replacingXML);
71
	}
72

    
73
	@Test
74
	public void testSerializeDMF() throws Exception {
75
		final ResolvedObject object = createDMFMock();
76
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
77

    
78
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
79

    
80
		log.debug(replacingXML);
81

    
82
	}
83

    
84

    
85
	@Test
86
	public void testSerializeFromJson() throws Exception {
87
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/resolvedObject.json");
88
		final Gson gson = new Gson();
89
		final ResolvedObject resolvedObject = gson.fromJson(IOUtils.toString(recordStream), ResolvedObject.class);
90
		Assert.assertEquals(resolvedObject.getType(), ObjectType.dataset);
91
		final String recordTemplate =
92
				"<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>";
93
		final String xml = serializer.serializeToXML(resolvedObject);
94

    
95
		final String inputRecord = String.format(recordTemplate, xml);
96

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

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

    
101
		final TransformerFactory factory = TransformerFactory.newInstance();
102
		factory.newTransformer();
103
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
104

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

    
113
	private ResolvedObject createPMFMock() throws IOException {
114
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
115
		String xml = IOUtils.toString(resource);
116

    
117
		PMFResolverParser parser = new PMFResolverParser();
118
		return parser.parseObject(xml);
119
	}
120

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

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

    
136
	}
137

    
138
	private ResolvedObject createScholixMock() {
139

    
140
		final ResolvedObject mock = new ResolvedObject();
141
		mock.setPid("mock");
142
		mock.setPidType("mockType");
143
		final ObjectProvenance provenance = new ObjectProvenance();
144
		provenance.setDatasource("Mock Datasource");
145
        provenance.setDatasourceId("Mock Id");
146
        mock.setDatasourceProvenance(Arrays.asList(provenance));
147
		final ObjectRelation relation = new ObjectRelation();
148
		relation.setTargetPID(new PID("mockTarget", "mockType"));
149
		relation.setTargetType(ObjectType.unknown);
150
        relation.setRelationSemantics("unknown");
151
        relation.setRelationProvenance(Arrays.asList(provenance));
152
		mock.setRelations(Arrays.asList(relation));
153
		return mock;
154
	}
155

    
156
}
(4-4/5)