Project

General

Profile

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
}
(4-4/5)