Project

General

Profile

1
package eu.dnetlib.resolver;
2

    
3
import java.io.IOException;
4
import java.io.InputStream;
5
import java.util.Arrays;
6
import java.util.List;
7

    
8
import eu.dnetlib.data.transform.OntologyLoader;
9
import eu.dnetlib.dli.DLIUtils;
10
import eu.dnetlib.dli.resolver.NCBINParser;
11
import eu.dnetlib.dli.resolver.NCBINResolver;
12
import eu.dnetlib.dli.resolver.OpenAireParser;
13
import eu.dnetlib.dli.resolver.model.CompletionStatus;
14
import eu.dnetlib.dli.resolver.model.DLIObjectProvenance;
15
import eu.dnetlib.dli.resolver.model.DLIResolvedObject;
16
import eu.dnetlib.dli.resolver.model.ObjectProvisionMode;
17
import eu.dnetlib.dli.resolver.model.serializer.ResolverSerializer;
18
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
19
import eu.dnetlib.resolver.parser.DMFResolverParser;
20
import eu.dnetlib.resolver.parser.PMFResolverParser;
21
import eu.dnetlib.resolver.parser.ScholixResolverParser;
22
import eu.dnetlib.rmi.enabling.ISLookUpException;
23
import eu.dnetlib.rmi.enabling.ISLookUpService;
24
import org.apache.commons.io.IOUtils;
25
import org.apache.commons.logging.Log;
26
import org.apache.commons.logging.LogFactory;
27
import org.junit.Assert;
28
import org.junit.Before;
29
import org.junit.Ignore;
30
import org.junit.Test;
31
import org.mockito.Mock;
32
import org.mockito.Mockito;
33
import org.springframework.beans.factory.annotation.Autowired;
34

    
35
import static org.mockito.Mockito.when;
36

    
37
/**
38
 * Created by sandro on 9/12/16.
39
 */
40

    
41

    
42
//@RunWith(SpringJUnit4ClassRunner.class)
43
//@ContextConfiguration(classes = { ConfigurationTestConfig.class, ConfigurationResolverStoreTestConfig.class })
44

    
45
@Ignore
46
public class DLIParserTest {
47

    
48
	private static final Log log = LogFactory.getLog(DLIParserTest.class);
49

    
50
	@Mock
51
	private DLIUtils dliUtilsInstance;
52

    
53

    
54
	@Mock
55
	private UniqueServiceLocator uniqueServiceLocator;
56

    
57
	@Mock
58
	private ISLookUpService isLookUpServiceMock;
59

    
60
	@Autowired
61
	private ResolverSerializer serializer;
62

    
63

    
64
	@Before
65
	public void initialize() throws ISLookUpException, IOException {
66

    
67
		final String query = "for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') "
68
				+ "return concat($x//FIELD[./key='NamespacePrefix']/value/text(),'@--@',$x//FIELD[./key='DataSourceId']/value/text(),'@--@',$x//ENGLISH_NAME )";
69
		dliUtilsInstance = Mockito.mock(DLIUtils.class);
70

    
71
		uniqueServiceLocator = Mockito.mock(UniqueServiceLocator.class);
72
		isLookUpServiceMock = Mockito.mock(ISLookUpService.class);
73
		dliUtilsInstance.setServiceLocator(uniqueServiceLocator);
74
		DLIUtils.setInstance(dliUtilsInstance);
75
		when(dliUtilsInstance.getServiceLocator()).thenReturn(uniqueServiceLocator);
76
		when(uniqueServiceLocator.getService(ISLookUpService.class)).thenReturn(isLookUpServiceMock);
77
		List<String> resutlDS = Arrays.asList(
78
				"r3d100010255@--@dli_________::r3d100010255@--@icpsr",
79
				"datacite____@--@dli_________::datacite____@--@Datasets in Datacite",
80
                "r3d100010134@--@dli_________::r3d100010134@--@pangaea",
81
                "r3d100010527@--@dli_________::r3d100010527@--@European Nucleotide Archive"
82

    
83
		);
84
		when(isLookUpServiceMock.quickSearchProfile(query)).thenReturn(resutlDS);
85
		DLIUtils.ontologies = OntologyLoader.loadOntologiesFromCp();
86

    
87

    
88
	}
89

    
90
	@Test
91
	public void testDMFParser() throws IOException {
92
		final InputStream resourceAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml");
93
		String str = IOUtils.toString(resourceAsStream);
94
		DMFResolverParser parser = new DMFResolverParser();
95
        DLIResolvedObject object = parser.parseObject(str);
96
        Assert.assertNotNull(object);
97
		Assert.assertNotNull(object.getTitles());
98
		Assert.assertNotNull(object.getType());
99
		object.setTitles(Arrays.asList("TITOLO 1", "TITOLO 2"));
100
		Assert.assertEquals(CompletionStatus.complete.toString(), object.getCompletionStatus());
101
        DLIResolvedObject nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordScholix.xml")));
102
        Assert.assertNull(nullObject);
103
		nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMFRecord.xml")));
104
		Assert.assertNull(nullObject);
105

    
106
	}
107

    
108

    
109
	@Test
110
	public void testResolvedDate() throws IOException {
111
		final InputStream resourceAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
112
		String str = IOUtils.toString(resourceAsStream);
113

    
114
		PMFResolverParser parser = new PMFResolverParser();
115
        DLIResolvedObject object = parser.parseObject(str);
116
        Assert.assertNotNull(object.getResolvedDate());
117
	}
118

    
119

    
120
	@Test
121
	public void testDataciteParser() throws Exception {
122

    
123
		final InputStream resourceAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordOpenaire.xml");
124
		String str = IOUtils.toString(resourceAsStream);
125
		DMFResolverParser parser = new DMFResolverParser();
126
        DLIResolvedObject object = parser.parseObject(str);
127
        System.out.println(object.getType());
128
		object.getRelations().forEach(it -> System.out.println(it.getTargetPID()));
129
		Assert.assertTrue(object.getCompletionStatus().equals("complete"));
130
		System.out.println("object = " + object);
131

    
132
		final String replacingXML = serializer.serializeReplacingXML(str, object);
133

    
134
		log.debug(replacingXML);
135

    
136

    
137

    
138
	}
139

    
140
	@Test
141
	public void testScholixParser() throws IOException {
142
		final InputStream resourceAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordScholix.xml");
143

    
144
		String str = IOUtils.toString(resourceAsStream);
145
		ScholixResolverParser parser = new ScholixResolverParser();
146
        DLIResolvedObject object = parser.parseObject(str);
147

    
148
		log.debug("object = " + object);
149

    
150
		Assert.assertNotNull(object);
151
		log.debug("object.getCompletionStatus() = " + object.getCompletionStatus());
152

    
153
		Assert.assertTrue(object.getCompletionStatus().equals(CompletionStatus.incomplete.toString()));
154

    
155
		Assert.assertNotNull(object.getRelations());
156

    
157
		Assert.assertTrue(object.getRelations().size() == 1);
158

    
159
        DLIResolvedObject nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml")));
160
        Assert.assertNull(nullObject);
161
		nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMFRecord.xml")));
162
		Assert.assertNull(nullObject);
163

    
164
	}
165

    
166
	@Test
167
	public void testScholixCompleteParser() throws IOException {
168
		final InputStream resourceAsStream = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordScholix.xml");
169

    
170
		String str = IOUtils.toString(resourceAsStream);
171
		ScholixResolverParser parser = new ScholixResolverParser();
172
        DLIResolvedObject object = parser.parseObject(str);
173

    
174
		log.debug("object = " + object);
175

    
176
		Assert.assertNotNull(object);
177
		log.debug("object.getCompletionStatus() = " + object.getCompletionStatus());
178

    
179
//		Assert.assertTrue(object.getCompletionStatus().equals(CompletionStatus.complete.toString()));
180
//
181
//		Assert.assertNotNull(object.getDate());
182
//		Assert.assertNotNull(object.getTitles());
183
//		Assert.assertTrue(object.getTitles().size() == 1);
184
//
185
//		Assert.assertNotNull(object.getDatasourceProvenance());
186
//		Assert.assertTrue(object.getDatasourceProvenance().size() == 1);
187
//		Assert.assertNotNull(object.getDatasourceProvenance().get(0).getPublisher());
188
//		Assert.assertNotNull(object.getDatasourceProvenance().get(0).getPublisherId());
189
//
190
//
191
//		Assert.assertNotNull(object.getRelations());
192
//
193
//		Assert.assertTrue(object.getRelations().size() == 1);
194
//
195
//		Assert.assertNotNull(object.getRelations().get(0).getTargetPID().getId());
196
//		Assert.assertNotNull(object.getRelations().get(0).getTargetPID().getType());
197
//
198
//
199
//		DLIResolvedObject nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml")));
200
//		Assert.assertNull(nullObject);
201
//		nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMFRecord.xml")));
202
//		Assert.assertNull(nullObject);
203

    
204
	}
205

    
206

    
207
	@Test
208
	public void testPMFParser() throws Exception {
209
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputPMF.xml");
210
		String xml = IOUtils.toString(resource);
211

    
212
		PMFResolverParser parser = new PMFResolverParser();
213
        final DLIResolvedObject resolvedObject = parser.parseObject(xml);
214
        Assert.assertNotNull(resolvedObject);
215
		log.debug("resolvedObject = " + resolvedObject);
216

    
217
		Assert.assertNotNull(resolvedObject.getRelations());
218
		resolvedObject.getRelations().forEach(it -> Assert.assertNotNull(it));
219

    
220
        DLIResolvedObject nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordScholix.xml")));
221
        Assert.assertNull(nullObject);
222
		nullObject = parser.parseObject(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordDMF.xml")));
223
		Assert.assertNull(nullObject);
224
	}
225

    
226
	@Test
227
	public void testOpenAIREParser() throws Exception {
228

    
229
		final InputStream resource = getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputRecordOpenaire.xml");
230

    
231
		final String record = IOUtils.toString(resource);
232

    
233
		final OpenAireParser parser = new OpenAireParser();
234
        final DLIResolvedObject object = parser.parseObject(record);
235
        object.setPid("od_______908::ff0270cae25acd9367ef26a53ee5e4a3");
236
		object.setPidType("openaire");
237

    
238
        final DLIObjectProvenance provenance = new DLIObjectProvenance();
239
        provenance.setCompletionStatus(CompletionStatus.complete.toString());
240
		provenance.setDatasourceId("dli::r3d100010778");
241
		provenance.setDatasource("NCBI Nucleotide");
242
		provenance.setProvisionMode(ObjectProvisionMode.resolved.toString());
243
		object.setDatasourceProvenance(Arrays.asList(provenance));
244

    
245
		log.debug(object);
246

    
247
	}
248

    
249
	@Test
250
	public void testProteinParser() throws IOException {
251
		final NCBINResolver resolver = new NCBINResolver();
252
		resolver.setNCBINParser(new NCBINParser());
253
        final DLIResolvedObject p02768 = resolver.resolve("U36380", "protein");
254

    
255
		log.debug(p02768.getDescription());
256
		Assert.assertNotNull(p02768);
257
		Assert.assertNotNull(p02768.getDescription());
258

    
259
		log.debug("p02768 = " + p02768);
260

    
261
	}
262

    
263

    
264

    
265

    
266

    
267

    
268

    
269

    
270

    
271
}
(2-2/5)