1
|
package eu.dnetlib.data.claims.migration.parser;
|
2
|
|
3
|
import eu.dnetlib.data.claims.migration.entity.Result;
|
4
|
import eu.dnetlib.data.claimsDemo.ClaimUtils;
|
5
|
import eu.dnetlib.data.claims.migration.entity.Project;
|
6
|
import org.apache.log4j.BasicConfigurator;
|
7
|
import org.junit.Assert;
|
8
|
import org.junit.Before;
|
9
|
import org.junit.Test;
|
10
|
import org.xml.sax.SAXException;
|
11
|
|
12
|
import javax.xml.parsers.ParserConfigurationException;
|
13
|
import javax.xml.transform.TransformerException;
|
14
|
import javax.xml.xpath.XPathExpressionException;
|
15
|
import java.io.IOException;
|
16
|
|
17
|
/**
|
18
|
* Created by kiatrop on 22/2/2016.
|
19
|
*/
|
20
|
public class OafParserTest {
|
21
|
|
22
|
@Before()
|
23
|
public void init(){
|
24
|
BasicConfigurator.configure();
|
25
|
}
|
26
|
|
27
|
private String publicationOaf = "<response>\n" +
|
28
|
"\t <header>\n" +
|
29
|
"\t\t <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
|
30
|
"\t\t\t\t <locale>en_GB</locale>\t\n" +
|
31
|
"\t\t\t\t\t<size>10</size>\n" +
|
32
|
"\t\t\t <page>1</page>\n" +
|
33
|
"\t\t\t <total>1</total>\n" +
|
34
|
"\t\t\t\t\t</header>\n" +
|
35
|
"\t <results>\n" +
|
36
|
"\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
37
|
" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
|
38
|
" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
|
39
|
" <header>\n" +
|
40
|
" <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
|
41
|
" <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
|
42
|
" </header>\n" +
|
43
|
" <metadata>\n" +
|
44
|
" <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
|
45
|
"\t\t <oaf:result>\n" +
|
46
|
" <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
|
47
|
" schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
|
48
|
" <dateofacceptance>2010-01-01</dateofacceptance>\n" +
|
49
|
" <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
|
50
|
" schemename=\"dnet:result_typologies\"/>\n" +
|
51
|
" <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
52
|
" <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
53
|
" <embargoenddate>2099-12-31</embargoenddate>\n" +
|
54
|
" <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
|
55
|
" <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
56
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
57
|
" <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
|
58
|
" schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
|
59
|
" <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
|
60
|
" schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
|
61
|
" <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
|
62
|
" schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
|
63
|
" <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
64
|
" schemename=\"dnet:access_modes\"/>\n" +
|
65
|
"\t\t <children>\n" +
|
66
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
67
|
"\t\t\t <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
68
|
" schemename=\"dnet:access_modes\"/>\n" +
|
69
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
70
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
71
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
72
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
73
|
"\t\t\t\t <webresource>\n" +
|
74
|
"\t\t\t\t <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
|
75
|
"\t\t\t\t </webresource>\n" +
|
76
|
"\t\t\t\t <webresource>\n" +
|
77
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
78
|
"\t\t\t\t </webresource>\n" +
|
79
|
"\t\t\t </instance>\n" +
|
80
|
"\t\t </children>\n" +
|
81
|
"\t\t </oaf:result>\n" +
|
82
|
" </oaf:entity>\n" +
|
83
|
" </metadata>\n" +
|
84
|
" </result>\n" +
|
85
|
"\t\t\t\t\t\t</results>\n" +
|
86
|
"\t <browseResults>\n" +
|
87
|
"\t\t\t</browseResults>\n" +
|
88
|
"</response>";
|
89
|
|
90
|
|
91
|
|
92
|
/*
|
93
|
"\t\t <children>\n" +
|
94
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
95
|
"\t\t\t <licence classid=\"CLOSED\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
96
|
" schemename=\"dnet:access_modes\"/>\n" +
|
97
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
98
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
99
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
100
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
101
|
"\t\t\t\t <webresource>\n" +
|
102
|
"\t\t\t\t <url>h CLOSED_ACCESS_URL</url>\n" +
|
103
|
"\t\t\t\t </webresource>\n" +
|
104
|
"\t\t\t\t <webresource>\n" +
|
105
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
106
|
"\t\t\t\t </webresource>\n" +
|
107
|
"\t\t\t </instance>\n" +
|
108
|
"\t\t </children>\n" +
|
109
|
*/
|
110
|
@Test
|
111
|
public void oaf2PublicationTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
|
112
|
Result result = OafParser.oaf2Result(publicationOaf);
|
113
|
System.out.println(result.getExternalUrl());
|
114
|
Assert.assertNull(result.getAccessRights());
|
115
|
Assert.assertEquals("EMBARGO",result.getBestLicense());
|
116
|
Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
|
117
|
Assert.assertNull(result.getDoi());
|
118
|
Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
|
119
|
Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
|
120
|
Assert.assertEquals("pmc_test",result.getPmcid());
|
121
|
Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
|
122
|
Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
|
123
|
Assert.assertEquals("xml", result.getRecordFormat());
|
124
|
|
125
|
Assert.assertEquals("http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki", result.getExternalUrl());
|
126
|
Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
|
127
|
Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
|
128
|
|
129
|
}
|
130
|
private String publicationOpenAccessUrl = "<response>\n" +
|
131
|
"\t <header>\n" +
|
132
|
"\t\t <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
|
133
|
"\t\t\t\t <locale>en_GB</locale>\t\n" +
|
134
|
"\t\t\t\t\t<size>10</size>\n" +
|
135
|
"\t\t\t <page>1</page>\n" +
|
136
|
"\t\t\t <total>1</total>\n" +
|
137
|
"\t\t\t\t\t</header>\n" +
|
138
|
"\t <results>\n" +
|
139
|
"\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
140
|
" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
|
141
|
" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
|
142
|
" <header>\n" +
|
143
|
" <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
|
144
|
" <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
|
145
|
" </header>\n" +
|
146
|
" <metadata>\n" +
|
147
|
" <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
|
148
|
"\t\t <oaf:result>\n" +
|
149
|
" <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
|
150
|
" schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
|
151
|
" <dateofacceptance>2010-01-01</dateofacceptance>\n" +
|
152
|
" <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
|
153
|
" schemename=\"dnet:result_typologies\"/>\n" +
|
154
|
" <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
155
|
" <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
156
|
" <embargoenddate>2099-12-31</embargoenddate>\n" +
|
157
|
" <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
|
158
|
" <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
159
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
160
|
" <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
|
161
|
" schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
|
162
|
" <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
|
163
|
" schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
|
164
|
" <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
|
165
|
" schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
|
166
|
" <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
167
|
" schemename=\"dnet:access_modes\"/>\n" +
|
168
|
"\t\t <children>\n" +
|
169
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
170
|
"\t\t\t <licence classid=\"CLOSED\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
171
|
" schemename=\"dnet:access_modes\"/>\n" +
|
172
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
173
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
174
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
175
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
176
|
"\t\t\t\t <webresource>\n" +
|
177
|
"\t\t\t\t <url>http://CLOSED_ACCESS_URL</url>\n" +
|
178
|
"\t\t\t\t </webresource>\n" +
|
179
|
"\t\t\t\t <webresource>\n" +
|
180
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
181
|
"\t\t\t\t </webresource>\n" +
|
182
|
"\t\t\t </instance>\n" +
|
183
|
"\t\t </children>\n" +
|
184
|
"\t\t <children>\n" +
|
185
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
186
|
"\t\t\t <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
187
|
" schemename=\"dnet:access_modes\"/>\n" +
|
188
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
189
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
190
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
191
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
192
|
"\t\t\t\t <webresource>\n" +
|
193
|
"\t\t\t\t <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
|
194
|
"\t\t\t\t </webresource>\n" +
|
195
|
"\t\t\t\t <webresource>\n" +
|
196
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
197
|
"\t\t\t\t </webresource>\n" +
|
198
|
"\t\t\t </instance>\n" +
|
199
|
"\t\t </children>\n" +
|
200
|
|
201
|
|
202
|
|
203
|
"\t\t </oaf:result>\n" +
|
204
|
" </oaf:entity>\n" +
|
205
|
" </metadata>\n" +
|
206
|
" </result>\n" +
|
207
|
"\t\t\t\t\t\t</results>\n" +
|
208
|
"\t <browseResults>\n" +
|
209
|
"\t\t\t</browseResults>\n" +
|
210
|
"</response>";
|
211
|
/*
|
212
|
In this test, the oaf xml has multiple urls. The method should get the first "more" open Access with the following order (Open Access,Embargo, Closed )
|
213
|
*/
|
214
|
@Test
|
215
|
public void oaf2PublicationOpenAccessUrlTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
|
216
|
Result result = OafParser.oaf2Result(publicationOpenAccessUrl);
|
217
|
System.out.println(result.getExternalUrl());
|
218
|
Assert.assertNull(result.getAccessRights());
|
219
|
Assert.assertEquals("EMBARGO",result.getBestLicense());
|
220
|
Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
|
221
|
Assert.assertNull(result.getDoi());
|
222
|
Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
|
223
|
Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
|
224
|
Assert.assertEquals("pmc_test",result.getPmcid());
|
225
|
Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
|
226
|
Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
|
227
|
Assert.assertEquals("xml", result.getRecordFormat());
|
228
|
|
229
|
Assert.assertEquals("http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki", result.getExternalUrl());
|
230
|
Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
|
231
|
Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
|
232
|
|
233
|
}
|
234
|
private String publicationWithDoiOaf = "<response>\n" +
|
235
|
"\t <header>\n" +
|
236
|
"\t\t <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
|
237
|
"\t\t\t\t <locale>en_GB</locale>\t\n" +
|
238
|
"\t\t\t\t\t<size>10</size>\n" +
|
239
|
"\t\t\t <page>1</page>\n" +
|
240
|
"\t\t\t <total>1</total>\n" +
|
241
|
"\t\t\t\t\t</header>\n" +
|
242
|
"\t <results>\n" +
|
243
|
"\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
244
|
" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
|
245
|
" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
|
246
|
" <header>\n" +
|
247
|
" <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
|
248
|
" <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
|
249
|
" </header>\n" +
|
250
|
" <metadata>\n" +
|
251
|
" <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
|
252
|
"\t\t <oaf:result>\n" +
|
253
|
" <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
|
254
|
" schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
|
255
|
" <dateofacceptance>2010-01-01</dateofacceptance>\n" +
|
256
|
" <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
|
257
|
" schemename=\"dnet:result_typologies\"/>\n" +
|
258
|
" <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
259
|
" <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
260
|
" <embargoenddate>2099-12-31</embargoenddate>\n" +
|
261
|
" <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
|
262
|
" <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
263
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
264
|
" <pid classid=\"doi\" classname=\"doi\" schemeid=\"dnet:pid_types\"\n" +
|
265
|
" schemename=\"dnet:pid_types\">doi_test</pid>\n" +
|
266
|
" <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
|
267
|
" schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
|
268
|
" <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
|
269
|
" schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
|
270
|
" <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
|
271
|
" schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
|
272
|
" <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
273
|
" schemename=\"dnet:access_modes\"/>\n" +
|
274
|
"\t\t <children>\n" +
|
275
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
276
|
"\t\t\t <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
277
|
" schemename=\"dnet:access_modes\"/>\n" +
|
278
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
279
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
280
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
281
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
282
|
"\t\t\t\t <webresource>\n" +
|
283
|
"\t\t\t\t <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
|
284
|
"\t\t\t\t </webresource>\n" +
|
285
|
"\t\t\t\t <webresource>\n" +
|
286
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
287
|
"\t\t\t\t </webresource>\n" +
|
288
|
"\t\t\t </instance>\n" +
|
289
|
"\t\t </children>\n" +
|
290
|
"\t\t </oaf:result>\n" +
|
291
|
" </oaf:entity>\n" +
|
292
|
" </metadata>\n" +
|
293
|
" </result>\n" +
|
294
|
"\t\t\t\t\t\t</results>\n" +
|
295
|
"\t <browseResults>\n" +
|
296
|
"\t\t\t</browseResults>\n" +
|
297
|
"</response>";
|
298
|
@Test
|
299
|
public void oafWithDoi2PublicationTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
|
300
|
Result result = OafParser.oaf2Result(publicationWithDoiOaf);
|
301
|
Assert.assertNull(result.getAccessRights());
|
302
|
Assert.assertEquals("EMBARGO",result.getBestLicense());
|
303
|
Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
|
304
|
Assert.assertNotNull(result.getDoi());
|
305
|
Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
|
306
|
Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
|
307
|
Assert.assertEquals("pmc_test",result.getPmcid());
|
308
|
Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
|
309
|
Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
|
310
|
|
311
|
Assert.assertEquals("http://dx.doi.org/doi_test", result.getExternalUrl());
|
312
|
Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
|
313
|
Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
|
314
|
Assert.assertEquals("doi_test", result.getDoi());
|
315
|
|
316
|
|
317
|
}
|
318
|
private String datasetOaf = "<response>\n" +
|
319
|
"\t <header>\n" +
|
320
|
"\t\t <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
|
321
|
"\t\t\t\t <locale>en_GB</locale>\t\n" +
|
322
|
"\t\t\t\t\t<size>10</size>\n" +
|
323
|
"\t\t\t <page>1</page>\n" +
|
324
|
"\t\t\t <total>1</total>\n" +
|
325
|
"\t\t\t\t\t</header>\n" +
|
326
|
"\t <results>\n" +
|
327
|
"\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
328
|
" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
|
329
|
" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
|
330
|
" <header>\n" +
|
331
|
" <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
|
332
|
" <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
|
333
|
" </header>\n" +
|
334
|
" <metadata>\n" +
|
335
|
" <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
|
336
|
"\t\t <oaf:result>\n" +
|
337
|
" <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
|
338
|
" schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
|
339
|
" <dateofacceptance>2010-01-01</dateofacceptance>\n" +
|
340
|
" <resulttype classid=\"dataset\" classname=\"dataset\" schemeid=\"dnet:result_typologies\"\n" +
|
341
|
" schemename=\"dnet:result_typologies\"/>\n" +
|
342
|
" <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
343
|
" <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
344
|
" <embargoenddate>2099-12-31</embargoenddate>\n" +
|
345
|
" <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
|
346
|
" <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
347
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
348
|
" <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
|
349
|
" schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
|
350
|
" <pid classid=\"doi\" classname=\"doi\" schemeid=\"dnet:pid_types\"\n" +
|
351
|
" schemename=\"dnet:pid_types\">doi_test</pid>\n" +
|
352
|
" <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
|
353
|
" schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
|
354
|
" <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
|
355
|
" schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
|
356
|
" <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
357
|
" schemename=\"dnet:access_modes\"/>\n" +
|
358
|
"\t\t <children>\n" +
|
359
|
"\t\t\t <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
|
360
|
"\t\t\t <licence classid=\"OPEN\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
|
361
|
" schemename=\"dnet:access_modes\"/>\n" +
|
362
|
" <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
|
363
|
" schemename=\"dnet:publication_resource\"/>\n" +
|
364
|
" <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
|
365
|
" id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
|
366
|
"\t\t\t\t <webresource>\n" +
|
367
|
"\t\t\t\t <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
|
368
|
"\t\t\t\t </webresource>\n" +
|
369
|
"\t\t\t\t <webresource>\n" +
|
370
|
"\t\t\t\t <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
|
371
|
"\t\t\t\t </webresource>\n" +
|
372
|
"\t\t\t </instance>\n" +
|
373
|
"\t\t </children>\n" +
|
374
|
"\t\t </oaf:result>\n" +
|
375
|
" </oaf:entity>\n" +
|
376
|
" </metadata>\n" +
|
377
|
" </result>\n" +
|
378
|
"\t\t\t\t\t\t</results>\n" +
|
379
|
"\t <browseResults>\n" +
|
380
|
"\t\t\t</browseResults>\n" +
|
381
|
"</response>";
|
382
|
|
383
|
|
384
|
@Test
|
385
|
public void oaf2DatasetTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
|
386
|
Result result = OafParser.oaf2Result(datasetOaf);
|
387
|
|
388
|
Assert.assertNull(result.getAccessRights());
|
389
|
Assert.assertEquals("EMBARGO",result.getBestLicense());
|
390
|
Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
|
391
|
Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
|
392
|
Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
|
393
|
Assert.assertEquals("pmc_test",result.getPmcid());
|
394
|
Assert.assertEquals(ClaimUtils.DATASET, result.getResultType());
|
395
|
Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
|
396
|
Assert.assertEquals("xml", result.getRecordFormat());
|
397
|
|
398
|
Assert.assertEquals("http://dx.doi.org/doi_test", result.getExternalUrl());
|
399
|
Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
|
400
|
Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
|
401
|
Assert.assertEquals("doi_test", result.getDoi());
|
402
|
|
403
|
}
|
404
|
|
405
|
|
406
|
|
407
|
private String projectOaf = "<response>\n" +
|
408
|
"\t <header>\n" +
|
409
|
"\t\t <query>((deletedbyinference = false) AND (oaftype exact project)) and (projectcode exact 314867)</query>\n" +
|
410
|
"\t\t\t\t <locale>en_GB</locale>\t\n" +
|
411
|
"\t\t\t\t\t<size>10</size>\n" +
|
412
|
"\t\t\t <page>1</page>\n" +
|
413
|
"\t\t\t <total>1</total>\n" +
|
414
|
"\t\t\t\t\t</header>\n" +
|
415
|
"\t <results>\n" +
|
416
|
"\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
|
417
|
" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
|
418
|
" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
|
419
|
" <header>\n" +
|
420
|
" <dri:objIdentifier>corda_______::073d0a668885f9e7292a5d9c323e4a20</dri:objIdentifier>\n" +
|
421
|
" <dri:dateOfCollection>2015-08-24</dri:dateOfCollection>\n" +
|
422
|
" <counters>\n" +
|
423
|
"\t <counter_participation value=\"8\"/>\n" +
|
424
|
" <counter_contactPerson value=\"1\"/>\n" +
|
425
|
"\t </counters>\n" +
|
426
|
" </header>\n" +
|
427
|
" <metadata>\n" +
|
428
|
" <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
|
429
|
"\t\t <oaf:project>\n" +
|
430
|
"\t\t\t <code>314867</code>\n" +
|
431
|
" <acronym>ADAW</acronym>\n" +
|
432
|
" <title>Saponification pre-treatment and biosensors based control system for slaughterhouse waste anaerobic digestion improvement</title>\n" +
|
433
|
" <startdate>2013-03-01</startdate>\n" +
|
434
|
" <enddate>2015-02-28</enddate>\n" +
|
435
|
" <callidentifier>FP7-SME-2012</callidentifier>\n" +
|
436
|
" <ecsc39>false</ecsc39>\n" +
|
437
|
" <oamandatepublications>false</oamandatepublications>\n" +
|
438
|
" <contracttype classid=\"BSG\" classname=\"Research for the benefit of specific groups\"\n" +
|
439
|
" schemeid=\"ec:FP7contractTypes\"\n" +
|
440
|
" schemename=\"ec:FP7contractTypes\"/>\n" +
|
441
|
" <fundingtree>\n" +
|
442
|
" <funder>\n" +
|
443
|
" <id>ec__________::EC</id>\n" +
|
444
|
" <shortname>EC</shortname>\n" +
|
445
|
" <name>European Commission</name>\n" +
|
446
|
" <jurisdiction>EU</jurisdiction>\n" +
|
447
|
" </funder>\n" +
|
448
|
" <funding_level_2>\n" +
|
449
|
" <id>ec__________::EC::FP7::SP4::SME</id>\n" +
|
450
|
" <description>Research for the benefit of SMEs</description>\n" +
|
451
|
" <name>SME</name>\n" +
|
452
|
" <class>ec:program</class>\n" +
|
453
|
" <parent>\n" +
|
454
|
" <funding_level_1>\n" +
|
455
|
" <id>ec__________::EC::FP7::SP4</id>\n" +
|
456
|
" <description>SP4-Capacities</description>\n" +
|
457
|
" <name>SP4</name>\n" +
|
458
|
" <class>ec:specificprogram</class>\n" +
|
459
|
" <parent>\n" +
|
460
|
" <funding_level_0>\n" +
|
461
|
" <id>ec__________::EC::FP7</id>\n" +
|
462
|
" <description>SEVENTH FRAMEWORK PROGRAMME</description>\n" +
|
463
|
" <name>FP7</name>\n" +
|
464
|
" <parent/>\n" +
|
465
|
" <class>ec:frameworkprogram</class>\n" +
|
466
|
" </funding_level_0>\n" +
|
467
|
" </parent>\n" +
|
468
|
" </funding_level_1>\n" +
|
469
|
" </parent>\n" +
|
470
|
" </funding_level_2>\n" +
|
471
|
" </fundingtree>\n" +
|
472
|
" <websiteurl/>\n" +
|
473
|
" <keywords/>\n" +
|
474
|
" <duration/>\n" +
|
475
|
" <ecarticle29_3/>\n" +
|
476
|
" <subjects classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
477
|
" <originalId>corda_______::314867</originalId>\n" +
|
478
|
" <collectedfrom name=\"CORDA - COmmon Research DAta Warehouse\"\n" +
|
479
|
" id=\"openaire____::b30dac7baac631f3da7c2bb18dd9891f\"/>\n" +
|
480
|
" <pid classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
|
481
|
" <datainfo>\n" +
|
482
|
" <inferred>false</inferred>\n" +
|
483
|
" <deletedbyinference>false</deletedbyinference>\n" +
|
484
|
" <trust>0.9</trust>\n" +
|
485
|
" <inferenceprovenance/>\n" +
|
486
|
" <provenanceaction classid=\"sysimport:crosswalk:entityregistry\"\n" +
|
487
|
" classname=\"sysimport:crosswalk:entityregistry\"\n" +
|
488
|
" schemeid=\"dnet:provenanceActions\"\n" +
|
489
|
" schemename=\"dnet:provenanceActions\"/>\n" +
|
490
|
" </datainfo>\n" +
|
491
|
"\t\t <rels>\n" +
|
492
|
"<rel inferred=\"true\" trust=\"0.9\" inferenceprovenance=\"\" provenanceaction=\"UNKNOWN\"><to class=\"hasContact\" scheme=\"dnet:project_person_relations\" type=\"person\">dedup_wf_001::2b56ecf626015b620e97915cb0686ca1</to><fax> </fax><email>email@gmail.com</email><phone> </phone><fullname>Contact, Name</fullname></rel>" +
|
493
|
"\t\t </rels>\n" +
|
494
|
"\t\t <children>\n" +
|
495
|
"\t\t </children>\n" +
|
496
|
"\t\t </oaf:project>\n" +
|
497
|
"\n" +
|
498
|
" </oaf:entity>\n" +
|
499
|
" </metadata>\n" +
|
500
|
" </result>\n" +
|
501
|
"\t\t\t\t\t\t</results>\n" +
|
502
|
"\t <browseResults>\n" +
|
503
|
"\t\t\t</browseResults>\n" +
|
504
|
"</response>";
|
505
|
|
506
|
|
507
|
|
508
|
@Test
|
509
|
public void oaf2ProjectTest() throws Exception {
|
510
|
Project project = OafParser.oaf2Project(projectOaf);
|
511
|
|
512
|
Assert.assertEquals("corda_______::073d0a668885f9e7292a5d9c323e4a20", project.getOpenaireId());
|
513
|
Assert.assertEquals("ADAW", project.getAcronym());
|
514
|
Assert.assertEquals("ec__________::EC", project.getFunderId());
|
515
|
Assert.assertEquals("EC", project.getFunderShortName());
|
516
|
Assert.assertEquals("European Commission", project.getFunderName());
|
517
|
Assert.assertEquals("Saponification pre-treatment and biosensors based control system for slaughterhouse waste anaerobic digestion improvement", project.getName());
|
518
|
Assert.assertEquals(1, project.getContactEmails().size());
|
519
|
Assert.assertEquals("email@gmail.com", project.getContactEmails().get(0));
|
520
|
}
|
521
|
|
522
|
|
523
|
}
|