Project

General

Profile

1
package eu.dnetlib.data.claimsDemo;
2

    
3
/**
4
 * Created by Eri on 18/11/2015.
5
 */
6

    
7

    
8
//import eu.dnetlib.data.claims.migration.Claim;
9

    
10
import eu.dnetlib.data.claims.migration.*;
11
import eu.dnetlib.data.claims.migration.handler.*;
12
import eu.dnetlib.data.claims.migration.parser.DMFParser;
13
import eu.dnetlib.data.claims.migration.parser.OafParser;
14
import org.apache.log4j.BasicConfigurator;
15
import org.apache.log4j.Logger;
16
import org.junit.Before;
17
import org.junit.Test;
18
import org.junit.runner.RunWith;
19
import org.springframework.beans.factory.annotation.Autowired;
20
import org.springframework.context.ApplicationContext;
21
import org.springframework.context.support.ClassPathXmlApplicationContext;
22
import org.springframework.test.context.ContextConfiguration;
23
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
24
import org.xml.sax.SAXException;
25

    
26
import javax.xml.parsers.ParserConfigurationException;
27
import javax.xml.transform.TransformerException;
28
import javax.xml.xpath.XPathExpressionException;
29
import java.io.IOException;
30
import java.sql.ResultSet;
31

    
32
import static junit.framework.Assert.assertNotNull;
33

    
34
/**
35
 * @author eri
36
 */
37
@RunWith(SpringJUnit4ClassRunner.class)
38
@ContextConfiguration(locations = {"springContext-claimsDemo.xml"})
39

    
40
public class TestClass {
41
	private Logger log = Logger.getLogger(this.getClass());
42

    
43

    
44
    @Autowired
45
	private SqlDAO sqlDAO;
46

    
47
    @Autowired
48
    private QueryGenerator queryGenerator;
49

    
50
    RelationHandler relationHandler = null;
51
    ContextRelationHandler contextRelationHandler = null;
52
    ProjectHandler projectHandler = null;
53
    DMFContextHandler dmfContextHandler = null;
54
    DMFResultHandler dmfResultHandler = null;
55
    IndexResultHandler indexResultHandler = null;
56
    ExternalRecordHandler externalRecordHandler = null;
57
    ResultHandler resultHandler = null;
58

    
59
    ClaimHandler claimHandler = null;
60
    ClaimValidation claimValidation = new ClaimValidation();
61

    
62

    
63
    @Before
64
	public void init() throws Exception {
65
		BasicConfigurator.configure();
66
		assertNotNull(sqlDAO);
67
        ApplicationContext context = new ClassPathXmlApplicationContext("eu/dnetlib/data/claims/migration/springContext-claimsDemo.xml");
68
        relationHandler = context.getBean(RelationHandler.class);
69
        contextRelationHandler = context.getBean(ContextRelationHandler.class);
70
        projectHandler = context.getBean(ProjectHandler.class);
71
        dmfContextHandler = context.getBean(DMFContextHandler.class);
72
        dmfResultHandler = context.getBean(DMFResultHandler.class);
73
        externalRecordHandler = context.getBean(ExternalRecordHandler.class);
74
        indexResultHandler = context.getBean(IndexResultHandler.class);
75
        resultHandler = context.getBean(ResultHandler.class);
76
        claimHandler = context.getBean(ClaimHandler.class);
77

    
78
	}
79

    
80

    
81
	@Test
82
	public void testJob() throws Exception {
83

    
84
        ResultSet rs = sqlDAO.executePreparedQuery(queryGenerator.generateSelectCountConceptClaimsQuery(-1));
85

    
86
        while(rs.next()) {
87
            log.info("Concept claims: "+rs.getInt(1));
88
        }
89
         rs = sqlDAO.executePreparedQuery(queryGenerator.generateSelectCountRelationClaimsQuery(-1));
90

    
91
        while(rs.next()) {
92
            log.info("Relation claims: "+rs.getInt(1));
93
        }
94

    
95
	}
96

    
97
    @Test
98
    public void testHttpRequest() throws Exception {
99
        SearchUtils searchUtils= new SearchUtils();
100
        log.info(searchUtils.fetchPublicationXmlFromIndex("doajarticles::eb8a123eb82b25013b0001d0e2d1842b"));
101
        log.info(searchUtils.fetchDatasetXmlFromIndex("doajarticles::eb8a123eb82b25013b0001d0e2d1842b"));
102
    }
103

    
104
    @Test
105
    public void testXpath() throws Exception {
106
            Result r=indexResultHandler.fetchResultById("dedup_wf_001::88a1eedd1ffce63dccf51d8ce2053c85");
107
     }
108

    
109
    @Test
110
    public void testParsingDMF() throws IOException, SAXException, ParserConfigurationException, XPathExpressionException, TransformerException {
111
        Result r=DMFParser.dmf2Result("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
112
                "<record xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
113
                "  <header xmlns=\"http://namespace.openaire.eu/\">\n" +
114
                "    <dri:objIdentifier>crossref____::47593e13b24bcdd0f3d5573499f1d3a9</dri:objIdentifier>\n" +
115
                "    <dri:recordIdentifier>10.1088/0004-637X/761/1/34</dri:recordIdentifier>\n" +
116
                "    <dri:dateOfCollection></dri:dateOfCollection>\n" +
117
                "    <dri:mdFormat></dri:mdFormat>\n" +
118
                "    <dri:mdFormatInterpretation></dri:mdFormatInterpretation>\n" +
119
                "    <dri:repositoryId></dri:repositoryId>\n" +
120
                "    <dr:objectIdentifier></dr:objectIdentifier>\n" +
121
                "    <dr:dateOfCollection>2014-10-10T14:59:49+00:00</dr:dateOfCollection>\n" +
122
                "    <oaf:datasourceprefix>crossref____</oaf:datasourceprefix>\n" +
123
                "  </header>\n" +
124
                "  <metadata xmlns=\"http://namespace.openaire.eu/\">\n" +
125
                "      <dc:dateAccepted>2012-01-01T00:00:00Z</dc:dateAccepted>\n" +
126
                "             <dc:identifier>http://stacks.iop.org/0004-637X/761/i=1/a=34?key=crossref.d14dae8ac205453af63561a69c108e13</dc:identifier>\n" +
127
                "          <dc:title>A THREE-DIMENSIONAL VIEW OF THE REMNANT OF NOVA PERSEI 1901 (GK Per)</dc:title>\n" +
128
                "             <oaf:collectedDatasourceid>openaire____::crossref</oaf:collectedDatasourceid>\n" +
129
                "       <oaf:accessrights></oaf:accessrights>\n" +
130
                "       <oaf:hostedBy name=\"Unknown Repository\" id=\"openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18\"/>\n" +
131
                "    <oaf:collectedFrom name=\"Crossref\" id=\"openaire____::crossref\" />\n" +
132
                "\n" +
133
                "     <dc:creator>Liimets, T.</dc:creator>\n" +
134
                "   generateCreateClaimTablesQuery  <dc:creator>Corradi, R. L. M.</dc:creator>\n" +
135
                "     <dc:creator>Santander-Garc&#237;a, M.</dc:creator>\n" +
136
                "     <dc:creator>Villaver, E.</dc:creator>\n" +
137
                "     <dc:creator>Rodr&#237;guez-Gil, P.</dc:creator>\n" +
138
                "     <dc:creator>Verro, K.</dc:creator>\n" +
139
                "     <dc:creator>Kolka, I.</dc:creator>\n" +
140
                "\n" +
141
                "        <dc:identifier identifierType=\"doi\">10.1088/0004-637X/761/1/34</dc:identifier>\n" +
142
                "        <dr:CobjIdentifier>10.1088/0004-637X/761/1/34</dr:CobjIdentifier>\n" +
143
                "  </metadata>\n" +
144
                "</record>");
145
        log.info(r.toString());
146

    
147
    }
148
    @Test
149
    public void dropClaimTables() throws Exception {
150
//        sqlDAO.executeUpdateQuery(queryGenerator.generateDeleteClaimTablesQuery());
151
    }
152
    @Test
153
    public void createClaimTables() throws Exception {
154
        sqlDAO.executeUpdateQuery(queryGenerator.generateCreateClaimTablesQuery());
155
    }
156

    
157
    @Test
158
    public void validDoiTest() throws Exception {
159
        String doi="10.1523/​JNEUROSCI.2900-11.2012";
160
        doi="10.1523/​JNEUROSCI.2900-11.2012";
161
        String tr_doi=doi=dmfResultHandler.checkDoiValidity(doi);
162
        System.out.println("Initial doi:"+doi+" "+((doi.equals(tr_doi))?"":" Transformed to"+tr_doi));
163

    
164
    }
165

    
166
    @Test
167
    public void buildProject() throws Exception {
168
        String id = "arc_________::089188bbc5db213fb2b00a0d93043fc4";
169
        Project pr = projectHandler.fetchProjectByID(id);
170
        log.info(pr.toString());
171
        id="corda_______::404d91e07cd4d32fddd8fc636ad4daf7";
172
        pr = projectHandler.fetchProjectByID(id);
173
        log.info(pr.toString());
174

    
175
    }
176
    @Test
177
    public void test() throws Exception {
178
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?><response>\t  <header>\t\t    <query>(((deletedbyinference = false) AND (oaftype exact result)) and (resulttypeid exact publication)) and (objidentifier exact od______1266::af81022e9c489007a8f9ab27c2c725cb)</query>\t\t\t\t  <locale>en_GB</locale>\t\t\t\t\t\t<size>10</size>\t\t\t   <page>1</page>\t\t\t   <total>1</total>\t\t\t\t\t</header>\t  <results>\t\t\t\t\t\t\t\t\t<result xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"              xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\"              xmlns:oaf=\"http://namespace.openaire.eu/oaf\">         <header>            <dri:objIdentifier>od______1266::af81022e9c489007a8f9ab27c2c725cb</dri:objIdentifier>            <dri:dateOfCollection>2015-08-14T07:08:53.549Z</dri:dateOfCollection>            <counters>\t              <counter_authorship value=\"2\"/>               <counter_outcome value=\"1\"/>\t           </counters>         </header>         <metadata>            <oaf:entity xsi:schemaLocation=\"http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/0.3/oaf-0.3.xsd\">\t\t             <oaf:result>\t\t\t               <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">MATLAB</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Lecture</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Exercises</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Exercises in Linear Vibration Theory</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">System Conditions</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">MATLAB</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Exercises</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Exercises in Linear Vibration Theory</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">System Conditions</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Damping Coefficient</subject>                  <subject classid=\"keyword\" classname=\"keyword\" schemeid=\"dnet:result_subject\"                           schemename=\"dnet:result_subject\">Lecture</subject>                  <title classid=\"main title\" classname=\"main title\" schemeid=\"dnet:dataCite_title\"                         schemename=\"dnet:dataCite_title\">Vibration Theory, Vol. 1B:linear vibration theory, MATLAB exercises</title>                  <dateofacceptance>1996-02-01</dateofacceptance>                  <publisher>Department of Mechanical Engineering, Aalborg University</publisher>                  <resulttype classid=\"publication\" classname=\"publication\" schemeid=\"dnet:result_typologies\"                              schemename=\"dnet:result_typologies\"/>                  <language classid=\"eng\" classname=\"English\" schemeid=\"dnet:languages\"                            schemename=\"dnet:languages\"/>                  <format>application/pdf</format>                  <description>The present collection of MATLAB exercises has been published as a supplement to the textbook, Svingningsteori, Bind 1 and the collection of exercises in Vibration theory, Vol. 1A, Solved Problems. Throughout the exercise references are made to these books.&lt;br/&gt;&lt;br/&gt;The purpose of the MATLAB exercises is to give a better understanding of the physical problems in linear vibration theory and to surpress the mathematical analysis used to solve the problems. For this purpose the MATLAB environment is excellent.</description>                  <description>The present collection of MATLAB exercises has been published as a supplement to the textbook, Svingningsteori, Bind 1 and the collection of exercises in Vibration theory, Vol. 1A, Solved Problems. Throughout the exercise references are made to these books.&lt;br/&gt;&lt;br/&gt;The purpose of the MATLAB exercises is to give a better understanding of the physical problems in linear vibration theory and to surpress the mathematical analysis used to solve the problems. For this purpose the MATLAB environment is excellent.</description>                  <source>Asmussen , J C &amp; Nielsen , S R K 1996 , Vibration Theory, Vol. 1B : linear vibration theory, MATLAB exercises . Department of Mechanical Engineering, Aalborg University , Aalborg . U/ , no. 9601</source>                  <country classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>                  <relevantdate classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>                  <embargoenddate/>                  <fulltext/>                  <storagedate/>                  <resourcetype classid=\"\" classname=\"\" schemeid=\"\" schemename=\"\"/>                  <device/>                  <size/>                  <version/>                  <lastmetadataupdate/>                  <metadataversionnumber/>                  <originalId>oai:pure.atira.dk:publications/0b993280-a86a-11da-8341-000ea68e967b</originalId>                  <collectedfrom name=\"VBN\" id=\"opendoar____::8e2cfdc275761edc592f73a076197c33\"/>                  <pid classid=\"oai\" classname=\"oai\" schemeid=\"dnet:pid_types\"                       schemename=\"dnet:pid_types\">oai:pure.atira.dk:publications/0b993280-a86a-11da-8341-000ea68e967b</pid>                  <bestlicense classid=\"OPEN\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"                               schemename=\"dnet:access_modes\"/>                  <context id=\"FCT\" label=\"Fundação para a Ciência e a Tecnologia, I.P.\" type=\"funding\">                     <category id=\"FCT::3599-PPCDT\" label=\"3599-PPCDT\"/>                  </context>                  <datainfo>                     <inferred>false</inferred>                     <deletedbyinference>false</deletedbyinference>                     <trust>0.9</trust>                     <inferenceprovenance/>                     <provenanceaction classid=\"sysimport:crosswalk:repository\"                                       classname=\"sysimport:crosswalk:repository\"                                       schemeid=\"dnet:provenanceActions\"                                       schemename=\"dnet:provenanceActions\"/>                  </datainfo>\t\t                <rels>\t\t                   <rel inferred=\"false\" trust=\"0.9\" inferenceprovenance=\"\"                          provenanceaction=\"user:claim:search\">\t\t                      <to class=\"isProducedBy\" scheme=\"dnet:result_project_relations\" type=\"project\">fct_________::0432268334291febec6d0dbc1f8bae5d</to>\t\t                      <websiteurl>http://www.fct.pt/apoios/projectos/consulta/vglobal_projecto.phtml.en?idProjecto=83907&amp;idElemConcurso=2612</websiteurl>                        <code>83907</code>                        <acronym>MIT-Pt/BS-CTRM/0051/2008</acronym>                        <title>Smart small-scale devices: systems for controlled delivery of bioactive molecules, cell expansion and for sensing cell environment.</title>                        <contracttype classid=\"UNKNOWN\" classname=\"UNKNOWN\" schemeid=\"fct:contractTypes\"                                      schemename=\"fct:contractTypes\"/>                        <funding>                           <funder id=\"fct_________::FCT\" shortname=\"FCT\"                                   name=\"Fundação para a Ciência e a Tecnologia, I.P.\"                                   jurisdiction=\"PT\"/>                           <funding_level_0 name=\"3599-PPCDT\">fct_________::FCT::3599-PPCDT</funding_level_0>                        </funding>\t\t                   </rel>                     <rel inferred=\"true\" trust=\"0.9\" inferenceprovenance=\"\"                          provenanceaction=\"sysimport:crosswalk:repository\">\t\t                      <to class=\"hasAuthor\" scheme=\"dnet:personroles\" type=\"person\">dedup_wf_001::b3bccc606f9dfe608199defb1f89b4d2</to>\t\t                      <ranking>1</ranking>                        <fullname>Asmussen, J.C.</fullname>\t\t                   </rel>                     <rel inferred=\"true\" trust=\"0.9\" inferenceprovenance=\"\"                          provenanceaction=\"sysimport:crosswalk:repository\">\t\t                      <to class=\"hasAuthor\" scheme=\"dnet:personroles\" type=\"person\">dedup_wf_001::facd63932e76860852cdd2ca9d33f45c</to>\t\t                      <ranking>2</ranking>                        <fullname>Søren R. K. Nielsen</fullname>\t\t                   </rel>\t\t                </rels>\t\t                <children>\t\t\t                  <instance id=\"opendoar____::8e2cfdc275761edc592f73a076197c33\">\t\t\t                     <licence classid=\"OPEN\" classname=\"Open Access\" schemeid=\"dnet:access_modes\"                                 schemename=\"dnet:access_modes\"/>                        <instancetype classid=\"0002\" classname=\"Book\" schemeid=\"dnet:publication_resource\"                                      schemename=\"dnet:publication_resource\"/>                        <hostedby name=\"VBN\" id=\"opendoar____::8e2cfdc275761edc592f73a076197c33\"/>\t\t\t\t                    <webresource>\t\t\t\t                       <url>http://vbn.aau.dk/da/publications/vibration-theory-vol-1b(0b993280-a86a-11da-8341-000ea68e967b).html</url>\t\t\t\t                    </webresource>\t\t\t\t                    <webresource>\t\t\t\t                       <url>http://vbn.aau.dk/ws/files/57794257/vibration_theory_vol._1b_linear_vibration_theory_MATLAB_exercises.pdf</url>\t\t\t\t                    </webresource>\t\t\t                  </instance>\t\t                </children>\t\t             </oaf:result>            </oaf:entity>         </metadata>      </result>\t\t\t\t\t\t</results>\t  <browseResults>\t\t\t</browseResults></response>\n";
179
        SearchUtils searchUtils = new SearchUtils();
180
        Integer size=searchUtils.getNumberOfResultsInAPIXML(xml);
181
        log.info(size);
182
        xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
183
                "<record xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:prov=\"http://www.openarchives.org/OAI/2.0/provenance\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dri=\"http://www.driver-repository.eu/namespace/dri\" xmlns:dr=\"http://www.driver-repository.eu/namespace/dr\" xmlns:oaf=\"http://namespace.openaire.eu/oaf\">\n" +
184
                "  <header xmlns=\"http://namespace.openaire.eu/\">\n" +
185
                "    <dri:objIdentifier>orcid_______::4f9638b3f0fecbe3de2f9dde824c36d1</dri:objIdentifier>\n" +
186
                "    <dri:recordIdentifier>0000-0002-3477-3082-5288651</dri:recordIdentifier>\n" +
187
                "    <dri:dateOfCollection></dri:dateOfCollection>\n" +
188
                "    <dri:mdFormat></dri:mdFormat>\n" +
189
                "    <dri:mdFormatInterpretation></dri:mdFormatInterpretation>\n" +
190
                "    <dri:repositoryId></dri:repositoryId>\n" +
191
                "    <dr:objectIdentifier></dr:objectIdentifier>\n" +
192
                "    <dr:dateOfCollection>2015-08-19T14:40:37+00:00</dr:dateOfCollection>\n" +
193
                "    <oaf:datasourceprefix>openaire____</oaf:datasourceprefix>\n" +
194
                "  </header>\n" +
195
                "  <metadata xmlns=\"http://namespace.openaire.eu/\">\n" +
196
                "      <dc:dateAccepted>2012-01-01T00:00:00Z</dc:dateAccepted>\n" +
197
                "             <dc:identifier>http://dx.doi.org/10.1007/978_3_642_27169_4_2</dc:identifier>\n" +
198
                "          <dc:title>A Survey of Context-Aware Cross-Digital Library Personalization</dc:title>\n" +
199
                "             <oaf:collectedDatasourceid>openaire____::orcid</oaf:collectedDatasourceid>\n" +
200
                "       <oaf:accessrights>OPEN</oaf:accessrights>\n" +
201
                "         <oaf:embargoenddate></oaf:embargoenddate>\n" +
202
                "       <oaf:hostedBy name=\"Unknown Repository\" id=\"openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18\"/>\n" +
203
                "    <oaf:collectedFrom name=\"ORCID\" id=\"openaire____::orcid\" />\n" +
204
                "          \n" +
205
                "     <dc:creator>Manola, Natalia</dc:creator>\n" +
206
                "     <dc:creator>Nika, Ana</dc:creator>\n" +
207
                "     <dc:creator>Catarci, Tiziana</dc:creator>\n" +
208
                "     <dc:creator>Ioannidis, Yannis</dc:creator>\n" +
209
                "     <dc:creator>Katifori, Akrivi</dc:creator>\n" +
210
                "     <dc:creator>Koutrika, Georgia</dc:creator>\n" +
211
                "     <dc:creator>Manola, Natalia</dc:creator>\n" +
212
                "     <dc:creator>N&#252;rnberger, Andreas</dc:creator>\n" +
213
                "     <dc:creator>Thaller, Manfred</dc:creator>\n" +
214
                " \n" +
215
                "\n" +
216
                "        <oaf:identifier identiferType=\"orcidworkid\">0000-0002-3477-3082-5288651</oaf:identifier>\n" +
217
                "\n" +
218
                "  </metadata>\n" +
219
                "</record>";
220
        dmfResultHandler.fetchAccessRights(xml);
221
        dmfResultHandler.fetchDoiByDMF(xml);
222
        dmfResultHandler.fetchEmbargoEndDateByDMF(xml);
223
        dmfResultHandler.fetchOrcidWorkByDMF(xml);
224

    
225

    
226
    }
227

    
228
    @Test
229
    public void buildOpenaireResult() throws Exception {
230

    
231
        Migration migration= new Migration();
232
        Result r=migration.buildOpenaireResult("datacite____::ddbd5c4c76598f27793bccf4a99843f7","");
233
        log.info(r);
234

    
235
    }
236

    
237
}
(7-7/7)