Project

General

Profile

1 43939 sandro.lab
package eu.dnetlib.resolver;
2
3 45805 sandro.lab
import com.google.gson.Gson;
4 49580 sandro.lab
import com.google.gson.GsonBuilder;
5
import eu.dnetlib.data.transform.OntologyLoader;
6
import eu.dnetlib.dli.DLIUtils;
7 44356 claudio.at
import eu.dnetlib.dli.resolver.model.*;
8 49208 sandro.lab
import eu.dnetlib.dli.resolver.model.serializer.DLIResolverSerializer;
9 49580 sandro.lab
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
10 49184 sandro.lab
import eu.dnetlib.pid.resolver.model.ObjectType;
11 49216 sandro.lab
import eu.dnetlib.pid.resolver.model.PID;
12 44050 sandro.lab
import eu.dnetlib.resolver.parser.DMFResolverParser;
13 43939 sandro.lab
import eu.dnetlib.resolver.parser.PMFResolverParser;
14 49580 sandro.lab
import eu.dnetlib.rmi.enabling.ISLookUpService;
15 43939 sandro.lab
import org.apache.commons.io.IOUtils;
16
import org.apache.commons.logging.Log;
17
import org.apache.commons.logging.LogFactory;
18 45805 sandro.lab
import org.junit.Assert;
19 49580 sandro.lab
import org.junit.Before;
20 46682 sandro.lab
import org.junit.Ignore;
21 43939 sandro.lab
import org.junit.Test;
22 49580 sandro.lab
import org.junit.runner.RunWith;
23
import org.mockito.Mock;
24
import org.mockito.Mockito;
25 43939 sandro.lab
import org.springframework.beans.factory.annotation.Autowired;
26 49580 sandro.lab
import org.springframework.test.context.ContextConfiguration;
27
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
28 43939 sandro.lab
29 44359 sandro.lab
import javax.xml.transform.OutputKeys;
30
import javax.xml.transform.Transformer;
31
import javax.xml.transform.TransformerFactory;
32
import javax.xml.transform.stream.StreamResult;
33
import javax.xml.transform.stream.StreamSource;
34 45805 sandro.lab
import java.io.ByteArrayInputStream;
35 44359 sandro.lab
import java.io.IOException;
36
import java.io.InputStream;
37
import java.io.StringWriter;
38
import java.util.Arrays;
39 49580 sandro.lab
import java.util.List;
40
import java.util.Map;
41 44359 sandro.lab
42 49580 sandro.lab
import static org.mockito.Mockito.when;
43
44 43939 sandro.lab
/**
45
 * Created by sandro on 10/4/16.
46
 */
47 49580 sandro.lab
@RunWith(SpringJUnit4ClassRunner.class)
48
@ContextConfiguration(classes = { ConfigurationTestConfig.class })
49 43939 sandro.lab
50 49580 sandro.lab
public class DLISerializerTest extends DLIAbstractTest {
51
52 45628 sandro.lab
    private static final Log log = LogFactory.getLog(DLISerializerTest.class);
53 43939 sandro.lab
54
	@Autowired
55 49208 sandro.lab
    private DLIResolverSerializer serializer;
56 43939 sandro.lab
57
	@Test
58
	public void testSerializeScholix() {
59
		log.debug(serializer.serializeToXML(createScholixMock()));
60
	}
61
62
	@Test
63
	public void testSerializePMF() throws IOException {
64 44359 sandro.lab
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
65 44050 sandro.lab
66 49184 sandro.lab
		final DLIResolvedObject object = createPMFMock();
67 44050 sandro.lab
68
		object.setCompletionStatus(CompletionStatus.complete.toString());
69 44298 sandro.lab
70 49184 sandro.lab
		final DLIObjectProvenance provencance = new DLIObjectProvenance();
71 44298 sandro.lab
		provencance.setDatasource("Provencance1");
72
		provencance.setDatasourceId("pid1");
73
		provencance.setProvisionMode("resolved");
74
		provencance.setCompletionStatus("complete");
75
		object.getDatasourceProvenance().add(provencance);
76
77
78
79 44050 sandro.lab
		object.setPid("MOCKPID");
80
		object.setPidType("MOCKPIDType");
81
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
82
83
		log.debug(replacingXML);
84 43939 sandro.lab
	}
85
86 44050 sandro.lab
	@Test
87
	public void testSerializeDMF() throws Exception {
88 49184 sandro.lab
		final DLIResolvedObject object = createDMFMock();
89 44050 sandro.lab
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
90
91
		final String replacingXML = serializer.serializeReplacingXML(IOUtils.toString(recordStream), object);
92
93
		log.debug(replacingXML);
94
95
	}
96
97 45805 sandro.lab
98
	@Test
99
	public void testSerializeFromJson() throws Exception {
100
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/resolvedObject.json");
101 49580 sandro.lab
102
103
		final DLIResolvedObject resolvedObject = DLIResolvedObject.fromJson(IOUtils.toString(recordStream));
104 45805 sandro.lab
		Assert.assertEquals(resolvedObject.getType(), ObjectType.dataset);
105
		final String recordTemplate =
106
				"<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>";
107
		final String xml = serializer.serializeToXML(resolvedObject);
108
109
		final String inputRecord = String.format(recordTemplate, xml);
110
111
		final InputStream xsltAsStream = getClass().getResourceAsStream("/eu/dnetlib/resolver/xslt/transformResolvedRecord.xsl");
112
113
		final InputStream xmlAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/transform/inputResolved.xml");
114
115
		final TransformerFactory factory = TransformerFactory.newInstance();
116
		factory.newTransformer();
117
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
118
119
		final Transformer transformer = factory.newTransformer(xsltSource);
120
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
121
		final StringWriter output = new StringWriter();
122
		transformer.transform(new StreamSource(new ByteArrayInputStream(inputRecord.getBytes())), new StreamResult(output));
123
		final String record = output.toString();
124
		System.out.println("record = " + record);
125
	}
126
127 49184 sandro.lab
	private DLIResolvedObject createPMFMock() throws IOException {
128 44359 sandro.lab
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
129 43939 sandro.lab
		String xml = IOUtils.toString(resource);
130
131
		PMFResolverParser parser = new PMFResolverParser();
132
		return parser.parseObject(xml);
133
	}
134
135 49184 sandro.lab
	private DLIResolvedObject createDMFMock() throws Exception {
136 44050 sandro.lab
		final InputStream xsltAsStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/oai_datacite_transform.xsl");
137
138
		final TransformerFactory factory = TransformerFactory.newInstance();
139
		factory.newTransformer();
140
		final StreamSource xsltSource = new StreamSource(xsltAsStream);
141
		final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
142
		final Transformer transformer = factory.newTransformer(xsltSource);
143
		transformer.setOutputProperty(OutputKeys.INDENT, "yes");
144
		final StringWriter output = new StringWriter();
145
		transformer.transform(new StreamSource(recordStream), new StreamResult(output));
146
		final String record = output.toString();
147
		final DMFResolverParser parser = new DMFResolverParser();
148
		return parser.parseObject(record);
149
150
	}
151
152 49184 sandro.lab
	private DLIResolvedObject createScholixMock() {
153 43939 sandro.lab
154 49184 sandro.lab
		final DLIResolvedObject mock = new DLIResolvedObject();
155 43939 sandro.lab
		mock.setPid("mock");
156
		mock.setPidType("mockType");
157 49184 sandro.lab
		final DLIObjectProvenance provenance = new DLIObjectProvenance();
158 43939 sandro.lab
		provenance.setDatasource("Mock Datasource");
159 45628 sandro.lab
        provenance.setDatasourceId("Mock Id");
160
        mock.setDatasourceProvenance(Arrays.asList(provenance));
161 49184 sandro.lab
		final DLIObjectRelation relation = new DLIObjectRelation();
162 43939 sandro.lab
		relation.setTargetPID(new PID("mockTarget", "mockType"));
163
		relation.setTargetType(ObjectType.unknown);
164 45628 sandro.lab
        relation.setRelationSemantics("unknown");
165
        relation.setRelationProvenance(Arrays.asList(provenance));
166 43939 sandro.lab
		mock.setRelations(Arrays.asList(relation));
167
		return mock;
168
	}
169
170
}