Project

General

Profile

1
package eu.dnetlib.data.claims.parser;
2

    
3
import eu.dnetlib.data.claims.entity.Project;
4
import eu.dnetlib.data.claims.entity.Result;
5
import eu.dnetlib.data.claims.utils.ClaimUtils;
6
import org.apache.logging.log4j.Level;
7
import org.apache.logging.log4j.core.config.Configurator;
8
import org.apache.logging.log4j.core.config.DefaultConfiguration;
9
import org.junit.Assert;
10
import org.junit.Before;
11
import org.junit.Test;
12
import org.xml.sax.SAXException;
13

    
14
import javax.xml.parsers.ParserConfigurationException;
15
import javax.xml.transform.TransformerException;
16
import javax.xml.xpath.XPathExpressionException;
17
import java.io.IOException;
18

    
19
/**
20
 * Created by kiatrop on 22/2/2016.
21
 */
22
public class OafParserTest {
23

    
24
    @Before()
25
    public void init(){
26
        Configurator.initialize(new DefaultConfiguration());
27
        Configurator.setRootLevel(Level.INFO);
28
    }
29

    
30
    private String publicationOaf = "<response>\n" +
31
            "\t  <header>\n" +
32
            "\t\t    <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
33
            "\t\t\t\t  <locale>en_GB</locale>\t\n" +
34
            "\t\t\t\t\t<size>10</size>\n" +
35
            "\t\t\t   <page>1</page>\n" +
36
            "\t\t\t   <total>1</total>\n" +
37
            "\t\t\t\t\t</header>\n" +
38
            "\t  <results>\n" +
39
            "\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
40
            "              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
41
            "              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
42
            "         <header>\n" +
43
            "            <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
44
            "            <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
45
             "         </header>\n" +
46
            "         <metadata>\n" +
47
            "            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
48
            "\t\t             <oaf:result>\n" +
49
            "                  <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
50
            "                         schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
51
            "                  <dateofacceptance>2010-01-01</dateofacceptance>\n" +
52
            "                  <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
53
            "                              schemename=\"dnet:result_typologies\"/>\n" +
54
            "                  <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
55
            "                  <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
56
            "                  <embargoenddate>2099-12-31</embargoenddate>\n" +
57
            "                  <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
58
            "                  <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
59
            "                                 id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
60
            "                  <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
61
            "                       schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
62
            "                  <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
63
            "                       schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
64
            "                  <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
65
            "                       schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
66
    "                  <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
67
            "                               schemename=\"dnet:access_modes\"/>\n" +
68
            "\t\t                <children>\n" +
69
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
70
            "\t\t\t                     <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
71
            "                                 schemename=\"dnet:access_modes\"/>\n" +
72
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
73
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
74
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
75
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
76
            "\t\t\t\t                    <webresource>\n" +
77
            "\t\t\t\t                       <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
78
            "\t\t\t\t                    </webresource>\n" +
79
            "\t\t\t\t                    <webresource>\n" +
80
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
81
            "\t\t\t\t                    </webresource>\n" +
82
            "\t\t\t                  </instance>\n" +
83
            "\t\t                </children>\n" +
84
            "\t\t             </oaf:result>\n" +
85
            "            </oaf:entity>\n" +
86
            "         </metadata>\n" +
87
            "      </result>\n" +
88
            "\t\t\t\t\t\t</results>\n" +
89
            "\t  <browseResults>\n" +
90
            "\t\t\t</browseResults>\n" +
91
            "</response>";
92

    
93

    
94

    
95
    /*
96
            "\t\t                <children>\n" +
97
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
98
            "\t\t\t                     <licence classid=\"CLOSED\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
99
            "                                 schemename=\"dnet:access_modes\"/>\n" +
100
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
101
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
102
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
103
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
104
            "\t\t\t\t                    <webresource>\n" +
105
            "\t\t\t\t                       <url>h CLOSED_ACCESS_URL</url>\n" +
106
            "\t\t\t\t                    </webresource>\n" +
107
            "\t\t\t\t                    <webresource>\n" +
108
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
109
            "\t\t\t\t                    </webresource>\n" +
110
            "\t\t\t                  </instance>\n" +
111
            "\t\t                </children>\n" +
112
 */
113
    @Test
114
    public void oaf2PublicationTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
115
        Result result = OafParser.oaf2Result(publicationOaf);
116
        System.out.println(result.getExternalUrl());
117
        Assert.assertNull(result.getAccessRights());
118
        Assert.assertEquals("EMBARGO",result.getBestLicense());
119
        Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
120
        Assert.assertNull(result.getDoi());
121
        Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
122
        Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
123
        Assert.assertEquals("pmc_test",result.getPmcid());
124
        Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
125
        Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
126
        Assert.assertEquals("xml", result.getRecordFormat());
127

    
128
        Assert.assertEquals("http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki", result.getExternalUrl());
129
        Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
130
        Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
131

    
132
    }
133
    private String publicationOpenAccessUrl = "<response>\n" +
134
            "\t  <header>\n" +
135
            "\t\t    <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
136
            "\t\t\t\t  <locale>en_GB</locale>\t\n" +
137
            "\t\t\t\t\t<size>10</size>\n" +
138
            "\t\t\t   <page>1</page>\n" +
139
            "\t\t\t   <total>1</total>\n" +
140
            "\t\t\t\t\t</header>\n" +
141
            "\t  <results>\n" +
142
            "\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
143
            "              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
144
            "              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
145
            "         <header>\n" +
146
            "            <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
147
            "            <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
148
            "         </header>\n" +
149
            "         <metadata>\n" +
150
            "            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
151
            "\t\t             <oaf:result>\n" +
152
            "                  <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
153
            "                         schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
154
            "                  <dateofacceptance>2010-01-01</dateofacceptance>\n" +
155
            "                  <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
156
            "                              schemename=\"dnet:result_typologies\"/>\n" +
157
            "                  <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
158
            "                  <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
159
            "                  <embargoenddate>2099-12-31</embargoenddate>\n" +
160
            "                  <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
161
            "                  <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
162
            "                                 id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
163
            "                  <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
164
            "                       schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
165
            "                  <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
166
            "                       schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
167
            "                  <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
168
            "                       schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
169
            "                  <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
170
            "                               schemename=\"dnet:access_modes\"/>\n" +
171
            "\t\t                <children>\n" +
172
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
173
            "\t\t\t                     <licence classid=\"CLOSED\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
174
            "                                 schemename=\"dnet:access_modes\"/>\n" +
175
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
176
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
177
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
178
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
179
            "\t\t\t\t                    <webresource>\n" +
180
            "\t\t\t\t                       <url>http://CLOSED_ACCESS_URL</url>\n" +
181
            "\t\t\t\t                    </webresource>\n" +
182
            "\t\t\t\t                    <webresource>\n" +
183
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
184
            "\t\t\t\t                    </webresource>\n" +
185
            "\t\t\t                  </instance>\n" +
186
            "\t\t                </children>\n" +
187
            "\t\t                <children>\n" +
188
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
189
            "\t\t\t                     <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
190
            "                                 schemename=\"dnet:access_modes\"/>\n" +
191
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
192
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
193
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
194
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
195
            "\t\t\t\t                    <webresource>\n" +
196
            "\t\t\t\t                       <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
197
            "\t\t\t\t                    </webresource>\n" +
198
            "\t\t\t\t                    <webresource>\n" +
199
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
200
            "\t\t\t\t                    </webresource>\n" +
201
            "\t\t\t                  </instance>\n" +
202
            "\t\t                </children>\n" +
203

    
204

    
205

    
206
            "\t\t             </oaf:result>\n" +
207
            "            </oaf:entity>\n" +
208
            "         </metadata>\n" +
209
            "      </result>\n" +
210
            "\t\t\t\t\t\t</results>\n" +
211
            "\t  <browseResults>\n" +
212
            "\t\t\t</browseResults>\n" +
213
            "</response>";
214
/*
215
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 )
216
 */
217
    @Test
218
    public void oaf2PublicationOpenAccessUrlTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
219
        Result result = OafParser.oaf2Result(publicationOpenAccessUrl);
220
        System.out.println(result.getExternalUrl());
221
        Assert.assertNull(result.getAccessRights());
222
        Assert.assertEquals("EMBARGO",result.getBestLicense());
223
        Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
224
        Assert.assertNull(result.getDoi());
225
        Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
226
        Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
227
        Assert.assertEquals("pmc_test",result.getPmcid());
228
        Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
229
        Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
230
        Assert.assertEquals("xml", result.getRecordFormat());
231

    
232
        Assert.assertEquals("http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki", result.getExternalUrl());
233
        Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
234
        Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
235

    
236
    }
237
    private String publicationWithDoiOaf = "<response>\n" +
238
            "\t  <header>\n" +
239
            "\t\t    <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
240
            "\t\t\t\t  <locale>en_GB</locale>\t\n" +
241
            "\t\t\t\t\t<size>10</size>\n" +
242
            "\t\t\t   <page>1</page>\n" +
243
            "\t\t\t   <total>1</total>\n" +
244
            "\t\t\t\t\t</header>\n" +
245
            "\t  <results>\n" +
246
            "\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
247
            "              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
248
            "              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
249
            "         <header>\n" +
250
            "            <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
251
            "            <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
252
            "         </header>\n" +
253
            "         <metadata>\n" +
254
            "            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
255
            "\t\t             <oaf:result>\n" +
256
            "                  <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
257
            "                         schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
258
            "                  <dateofacceptance>2010-01-01</dateofacceptance>\n" +
259
            "                  <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"\n" +
260
            "                              schemename=\"dnet:result_typologies\"/>\n" +
261
            "                  <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
262
            "                  <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
263
            "                  <embargoenddate>2099-12-31</embargoenddate>\n" +
264
            "                  <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
265
            "                  <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
266
            "                                 id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
267
            "                  <pid classid=\"doi\" classname=\"doi\" schemeid=\"dnet:pid_types\"\n" +
268
            "                       schemename=\"dnet:pid_types\">doi_test</pid>\n" +
269
            "                  <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
270
            "                       schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
271
            "                  <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
272
            "                       schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
273
            "                  <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
274
            "                       schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
275
            "                  <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
276
            "                               schemename=\"dnet:access_modes\"/>\n" +
277
            "\t\t                <children>\n" +
278
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
279
            "\t\t\t                     <licence classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
280
            "                                 schemename=\"dnet:access_modes\"/>\n" +
281
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
282
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
283
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
284
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
285
            "\t\t\t\t                    <webresource>\n" +
286
            "\t\t\t\t                       <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
287
            "\t\t\t\t                    </webresource>\n" +
288
            "\t\t\t\t                    <webresource>\n" +
289
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
290
            "\t\t\t\t                    </webresource>\n" +
291
            "\t\t\t                  </instance>\n" +
292
            "\t\t                </children>\n" +
293
            "\t\t             </oaf:result>\n" +
294
            "            </oaf:entity>\n" +
295
            "         </metadata>\n" +
296
            "      </result>\n" +
297
            "\t\t\t\t\t\t</results>\n" +
298
            "\t  <browseResults>\n" +
299
            "\t\t\t</browseResults>\n" +
300
            "</response>";
301
    @Test
302
    public void oafWithDoi2PublicationTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
303
        Result result = OafParser.oaf2Result(publicationWithDoiOaf);
304
        Assert.assertNull(result.getAccessRights());
305
        Assert.assertEquals("EMBARGO",result.getBestLicense());
306
        Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
307
        Assert.assertNotNull(result.getDoi());
308
        Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
309
        Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
310
        Assert.assertEquals("pmc_test",result.getPmcid());
311
        Assert.assertEquals(ClaimUtils.PUBLICATION, result.getResultType());
312
        Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
313

    
314
        Assert.assertEquals("http://dx.doi.org/doi_test", result.getExternalUrl());
315
        Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
316
        Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
317
        Assert.assertEquals("doi_test", result.getDoi());
318

    
319

    
320
    }
321
    private String datasetOaf = "<response>\n" +
322
            "\t  <header>\n" +
323
            "\t\t    <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46)</query>\n" +
324
            "\t\t\t\t  <locale>en_GB</locale>\t\n" +
325
            "\t\t\t\t\t<size>10</size>\n" +
326
            "\t\t\t   <page>1</page>\n" +
327
            "\t\t\t   <total>1</total>\n" +
328
            "\t\t\t\t\t</header>\n" +
329
            "\t  <results>\n" +
330
            "\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
331
            "              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
332
            "              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
333
            "         <header>\n" +
334
            "            <dri:objIdentifier>od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46</dri:objIdentifier>\n" +
335
            "            <dri:dateOfCollection>2016-02-02T08:07:14Z</dri:dateOfCollection>\n" +
336
            "         </header>\n" +
337
            "         <metadata>\n" +
338
            "            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
339
            "\t\t             <oaf:result>\n" +
340
            "                  <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"\n" +
341
            "                         schemename=\"dnet:dataCite_title\">ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ</title>\n" +
342
            "                  <dateofacceptance>2010-01-01</dateofacceptance>\n" +
343
            "                  <resulttype classid=\"dataset\" classname=\"dataset\" schemeid=\"dnet:result_typologies\"\n" +
344
            "                              schemename=\"dnet:result_typologies\"/>\n" +
345
            "                  <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
346
            "                  <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
347
            "                  <embargoenddate>2099-12-31</embargoenddate>\n" +
348
            "                  <originalId>oai:cyberleninka.ru:article/5969541</originalId>\n" +
349
            "                  <collectedfrom name=\"CyberLeninka - Russian open access scientific library\"\n" +
350
            "                                 id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
351
            "                  <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"\n" +
352
            "                       schemename=\"dnet:pid_types\">oai:cyberleninka.ru:article/5969541</pid>\n" +
353
            "                  <pid classid=\"doi\" classname=\"doi\" schemeid=\"dnet:pid_types\"\n" +
354
            "                       schemename=\"dnet:pid_types\">doi_test</pid>\n" +
355
            "                  <pid classid=\"pmc\" classname=\"pmc\" schemeid=\"dnet:pid_types\"\n" +
356
            "                       schemename=\"dnet:pid_types\">pmc_test</pid>\n" +
357
            "                  <pid classid=\"orcidworkid\" classname=\"orcidworkid\" schemeid=\"dnet:pid_types\"\n" +
358
            "                       schemename=\"dnet:pid_types\">orcidworkid_test</pid>\n" +
359
            "                  <bestlicense classid=\"EMBARGO\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
360
            "                               schemename=\"dnet:access_modes\"/>\n" +
361
            "\t\t                <children>\n" +
362
            "\t\t\t                  <instance id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\">\n" +
363
            "\t\t\t                     <licence classid=\"OPEN\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"\n" +
364
            "                                 schemename=\"dnet:access_modes\"/>\n" +
365
            "                        <instancetype classid=\"0001\" classname=\"Article\" schemeid=\"dnet:publication_resource\"\n" +
366
            "                                      schemename=\"dnet:publication_resource\"/>\n" +
367
            "                        <hostedby name=\"CyberLeninka - Russian open access scientific library\"\n" +
368
            "                                  id=\"opendoar____::c0f971d8cd24364f2029fcb9ac7b71f5\"/>\n" +
369
            "\t\t\t\t                    <webresource>\n" +
370
            "\t\t\t\t                       <url>http://cyberleninka.ru/article/n/postkonversionnaya-asistoliya-zheludochkov-serdtsa-u-bolnyh-infarktom-miokarda-i-vozmozhnosti-ee-profilaktiki</url>\n" +
371
            "\t\t\t\t                    </webresource>\n" +
372
            "\t\t\t\t                    <webresource>\n" +
373
            "\t\t\t\t                       <url>http://cyberleninka.ru/article_covers/5969541.png</url>\n" +
374
            "\t\t\t\t                    </webresource>\n" +
375
            "\t\t\t                  </instance>\n" +
376
            "\t\t                </children>\n" +
377
            "\t\t             </oaf:result>\n" +
378
            "            </oaf:entity>\n" +
379
            "         </metadata>\n" +
380
            "      </result>\n" +
381
            "\t\t\t\t\t\t</results>\n" +
382
            "\t  <browseResults>\n" +
383
            "\t\t\t</browseResults>\n" +
384
            "</response>";
385

    
386

    
387
    @Test
388
    public void oaf2DatasetTest() throws Exception, ParserConfigurationException, SAXException, XPathExpressionException, IOException, TransformerException {
389
        Result result = OafParser.oaf2Result(datasetOaf);
390

    
391
        Assert.assertNull(result.getAccessRights());
392
        Assert.assertEquals("EMBARGO",result.getBestLicense());
393
        Assert.assertEquals("infrastruct_::openaire", result.getCollectedFrom());
394
        Assert.assertEquals("oai:cyberleninka.ru:article/5969541",result.getOai());
395
        Assert.assertEquals("od______2806::d19b8560e0c4ce1f25dd9d661f4b2b46",result.getOpenaireId());
396
        Assert.assertEquals("pmc_test",result.getPmcid());
397
        Assert.assertEquals(ClaimUtils.DATASET, result.getResultType());
398
        Assert.assertEquals("ПОСТКОНВЕРСИОННАЯ АСИСТОЛИЯ ЖЕЛУДОЧКОВ СЕРДЦА У БОЛЬНЫХ ИНФАРКТОМ МИОКАРДА И ВОЗМОЖНОСТИ ЕЕ ПРОФИЛАКТИКИ",result.getTitle());
399
        Assert.assertEquals("xml", result.getRecordFormat());
400

    
401
        Assert.assertEquals("http://dx.doi.org/doi_test", result.getExternalUrl());
402
        Assert.assertEquals("2099-12-31",result.getEmbargoEndDate());
403
        Assert.assertEquals("orcidworkid_test", result.getOrcidworkid());
404
        Assert.assertEquals("doi_test", result.getDoi());
405

    
406
    }
407

    
408

    
409

    
410
    private String projectOaf = "<response>\n" +
411
            "\t  <header>\n" +
412
            "\t\t    <query>((deletedbyinference = false) AND (oaftype exact project)) and (projectcode exact 314867)</query>\n" +
413
            "\t\t\t\t  <locale>en_GB</locale>\t\n" +
414
            "\t\t\t\t\t<size>10</size>\n" +
415
            "\t\t\t   <page>1</page>\n" +
416
            "\t\t\t   <total>1</total>\n" +
417
            "\t\t\t\t\t</header>\n" +
418
            "\t  <results>\n" +
419
            "\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
420
            "              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"\n" +
421
            "              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
422
            "         <header>\n" +
423
            "            <dri:objIdentifier>corda_______::073d0a668885f9e7292a5d9c323e4a20</dri:objIdentifier>\n" +
424
            "            <dri:dateOfCollection>2015-08-24</dri:dateOfCollection>\n" +
425
            "            <counters>\n" +
426
            "\t              <counter_participation value=\"8\"/>\n" +
427
            "               <counter_contactPerson value=\"1\"/>\n" +
428
            "\t           </counters>\n" +
429
            "         </header>\n" +
430
            "         <metadata>\n" +
431
            "            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\n" +
432
            "\t\t             <oaf:project>\n" +
433
            "\t\t\t               <code>314867</code>\n" +
434
            "                  <acronym>ADAW</acronym>\n" +
435
            "                  <title>Saponification pre-treatment and biosensors based control system for slaughterhouse waste anaerobic digestion improvement</title>\n" +
436
            "                  <startdate>2013-03-01</startdate>\n" +
437
            "                  <enddate>2015-02-28</enddate>\n" +
438
            "                  <callidentifier>FP7-SME-2012</callidentifier>\n" +
439
            "                  <ecsc39>false</ecsc39>\n" +
440
            "                  <oamandatepublications>false</oamandatepublications>\n" +
441
            "                  <contracttype classid=\"BSG\" classname=\"Research for the benefit of specific groups\"\n" +
442
            "                                schemeid=\"ec:FP7contractTypes\"\n" +
443
            "                                schemename=\"ec:FP7contractTypes\"/>\n" +
444
            "                  <fundingtree>\n" +
445
            "                     <funder>\n" +
446
            "                        <id>ec__________::EC</id>\n" +
447
            "                        <shortname>EC</shortname>\n" +
448
            "                        <name>European Commission</name>\n" +
449
            "                        <jurisdiction>EU</jurisdiction>\n" +
450
            "                     </funder>\n" +
451
            "                     <funding_level_2>\n" +
452
            "                        <id>ec__________::EC::FP7::SP4::SME</id>\n" +
453
            "                        <description>Research for the benefit of SMEs</description>\n" +
454
            "                        <name>SME</name>\n" +
455
            "                        <class>ec:program</class>\n" +
456
            "                        <parent>\n" +
457
            "                           <funding_level_1>\n" +
458
            "                              <id>ec__________::EC::FP7::SP4</id>\n" +
459
            "                              <description>SP4-Capacities</description>\n" +
460
            "                              <name>SP4</name>\n" +
461
            "                              <class>ec:specificprogram</class>\n" +
462
            "                              <parent>\n" +
463
            "                                 <funding_level_0>\n" +
464
            "                                    <id>ec__________::EC::FP7</id>\n" +
465
            "                                    <description>SEVENTH FRAMEWORK PROGRAMME</description>\n" +
466
            "                                    <name>FP7</name>\n" +
467
            "                                    <parent/>\n" +
468
            "                                    <class>ec:frameworkprogram</class>\n" +
469
            "                                 </funding_level_0>\n" +
470
            "                              </parent>\n" +
471
            "                           </funding_level_1>\n" +
472
            "                        </parent>\n" +
473
            "                     </funding_level_2>\n" +
474
            "                  </fundingtree>\n" +
475
            "                  <websiteurl/>\n" +
476
            "                  <keywords/>\n" +
477
            "                  <duration/>\n" +
478
            "                  <ecarticle29_3/>\n" +
479
            "                  <subjects classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
480
            "                  <originalId>corda_______::314867</originalId>\n" +
481
            "                  <collectedfrom name=\"CORDA - COmmon Research DAta Warehouse\"\n" +
482
            "                                 id=\"openaire____::b30dac7baac631f3da7c2bb18dd9891f\"/>\n" +
483
            "                  <pid classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>\n" +
484
            "                  <datainfo>\n" +
485
            "                     <inferred>false</inferred>\n" +
486
            "                     <deletedbyinference>false</deletedbyinference>\n" +
487
            "                     <trust>0.9</trust>\n" +
488
            "                     <inferenceprovenance/>\n" +
489
            "                     <provenanceaction classid=\"sysimport:crosswalk:entityregistry\"\n" +
490
            "                                       classname=\"sysimport:crosswalk:entityregistry\"\n" +
491
            "                                       schemeid=\"dnet:provenanceActions\"\n" +
492
            "                                       schemename=\"dnet:provenanceActions\"/>\n" +
493
            "                  </datainfo>\n" +
494
            "\t\t                <rels>\n" +
495
                                    "<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>" +
496
            "\t\t                </rels>\n" +
497
            "\t\t                <children>\n" +
498
            "\t\t  </children>\n" +
499
            "\t\t             </oaf:project>\n" +
500
            "\n" +
501
            "            </oaf:entity>\n" +
502
            "         </metadata>\n" +
503
            "      </result>\n" +
504
            "\t\t\t\t\t\t</results>\n" +
505
            "\t  <browseResults>\n" +
506
            "\t\t\t</browseResults>\n" +
507
            "</response>";
508

    
509

    
510

    
511
    @Test
512
    public void oaf2ProjectTest() throws Exception {
513
        Project project = OafParser.oaf2Project(projectOaf);
514

    
515
        Assert.assertEquals("corda_______::073d0a668885f9e7292a5d9c323e4a20", project.getOpenaireId());
516
        Assert.assertEquals("ADAW", project.getAcronym());
517
        Assert.assertEquals("ec__________::EC", project.getFunderId());
518
        Assert.assertEquals("EC", project.getFunderShortName());
519
        Assert.assertEquals("European Commission", project.getFunderName());
520
        Assert.assertEquals("Saponification pre-treatment and biosensors based control system for slaughterhouse waste anaerobic digestion improvement", project.getName());
521
        Assert.assertEquals(1, project.getContactEmails().size());
522
        Assert.assertEquals("email@gmail.com", project.getContactEmails().get(0));
523
    }
524

    
525

    
526
}
(3-3/3)