Project

General

Profile

« Previous | Next » 

Revision 41166

keep Refactoring project......

View differences:

modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claims/migration/ClaimValidation.java
1 1
package eu.dnetlib.data.claims.migration;
2 2

  
3 3
import eu.dnetlib.data.claimsDemo.ClaimUtils;
4
import eu.dnetlib.data.claimsDemo.SearchUtils;
4 5

  
5 6
import java.io.BufferedWriter;
6 7
import java.io.FileWriter;
......
157 158
        }
158 159
        return false;
159 160
    }
161

  
162
    /*
163
   Checks if the doi is valid. If it is not  then replaces the existing  DOI with the valid one.
164
    */
165
    public static void checkForDOI(Result r) throws Exception {
166
        if(r.getDoi()==null){
167
            return ;
168
        }
169
         String validDOI=isValidDoi(r.getDoi());
170
        if(!validDOI.equals(r.getDoi())){
171
            if(r.getXml()!=null) {
172
                r.setXml(r.getXml().replace(r.getDoi(), validDOI));
173
            }
174
            if(r.getExternal_url()!=null){
175
                r.setExternal_url(r.getExternal_url().replace(r.getDoi(), validDOI));
176
            }
177
            r.setDoi(validDOI);
178
        }
179
    }
180
    public static String isValidDoi(String doi) throws Exception {
181
        if(doi==null){
182
            return null;
183
        }
184
        try{
185
            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("invalid_dois.txt", true)));
186
            boolean valid=SearchUtils.findDOI(doi);
187
            if(!valid&&(doi.length() - (doi.replace("_", "")).length() > 1)){
188
                String transformDoi = doi.replace("_", "-");
189
                valid=SearchUtils.findDOI(transformDoi);
190
                if(valid){
191
                    Date date= new java.util.Date();
192
                    out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with : "+transformDoi);
193
                    doi=transformDoi;
194
                }
195
            }else if(!valid&&(doi.length() - (doi.replace("_", "")).length() == 1)) {
196
                String transformDoi = doi.replace("_", "-");
197
                valid=SearchUtils.findDOI(transformDoi);
198
                if(valid){
199
                    Date date= new java.util.Date();
200
                    out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with : "+transformDoi);
201
                    doi = transformDoi;
202
                }
203
            }else if(!valid) {
204
                String transformDoi =doi.replaceAll("\\p{C}", "");
205
                valid=SearchUtils.findDOI(transformDoi);
206
                if(valid){
207
                    Date date= new java.util.Date();
208
                    out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with (zero-width-char): "+transformDoi);
209
                    doi = transformDoi;
210
                }
211
            }
212
            out.close();
213
        }catch (IOException e) {
214
            e.printStackTrace();
215
            System.err.println("Couldn't write to file " + "invalid_dois.txt");
216
        }
217
        return doi;
218
    }
160 219
}
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claims/migration/QueryBuilder.java
6 6
import eu.dnetlib.data.claimsDemo.SqlDAO;
7 7
import org.apache.commons.io.FileUtils;
8 8
import org.apache.log4j.Logger;
9
import org.springframework.context.ApplicationContext;
10
import org.springframework.context.support.ClassPathXmlApplicationContext;
11

  
12 9
import java.io.IOException;
13 10
import java.sql.ResultSet;
14 11
import java.io.File;
......
17 14
 * Created by argirok on 12/1/2016.
18 15
 */
19 16
/*
20
     Query Builder is the class that is responsible for the select queries in the old claims table
21
      and the insert queries in the new claim tables
17
     Query Builder is the class that
18
     -gets the claims from old DB using the proper queries
19
     -calls the appropriate  methods from ClaimBuilder to build a claim
20
     -does the migration to the new Claim DB
22 21

  
22

  
23 23
      */
24 24
 public class QueryBuilder {
25 25

  
......
46 46
        while(rs.next()){
47 47
           // log.info(rs.getString("xml"));
48 48
            Claim claim= claimBuilder.getConceptDMFClaim(rs);
49
//           log.info(claim.toString());
49
           log.info(claim.toString());
50 50
            //log.info(JsonldBuilder.toJsonld(claim));
51 51
             if(claimValidation.validateClaim(claim)) {
52 52
                if (insertToDB) {
53
                    claim= createXMLFilesForClaim(claim);
54 53
                    //log.info(claimBuilder.getQueryInsertClaim(claim));
55
                    sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
54
                    insertClaimInDB(claim);
56 55
                }
57 56
            }
58 57
        }
......
73 72
            log.info(claim.toString());
74 73
            if(claimValidation.validateClaim(claim)) {
75 74
                if (insertToDB) {
76
                    claim= createXMLFilesForClaim(claim);
77
                    // log.info(claimBuilder.getQueryInsertClaim(claim));
78
                    sqlDAO.executeUpdateQuery(claimBuilder.getQueryInsertClaim(claim));
75
                    insertClaimInDB(claim);
79 76
                }
80 77
            }
81 78
        }
82 79
    }
83 80

  
84 81
    public void getAndTransformAllClaims(Integer limit, boolean insertToDB) throws Exception {
85
        ResultSet rs=sqlDAO.executePreparedQuery("Select * from claims_view  limit "+limit);
82
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectAllClaimsQuery(limit));
86 83
         transformAllClaims(insertToDB,rs);
87 84
    }
88 85
    public void getAndTransformClaimById(String id, boolean insertToDB) throws Exception {
......
96 93
            if(claimType!=null && claimType.equals("rels2actions")){
97 94
                log.info("*Relation *");
98 95
                Claim claim= claimBuilder.getRelationClaim(rs);
99
                //log.info(JsonldBuilder.toJsonld(claim));
100 96
                log.info(claim.toString());
101 97
                if(claimValidation.validateClaim(claim)) {
102 98
                    if (insertToDB) {
103
                       // claim= createXMLFilesForClaim(claim);
104
                        //log.info(claimBuilder.getQueryInsertClaim(claim));
105
                        //   sqlDAO.executeUpdateQuery((claimBuilder.getQueryInsertClaim(claim)));
99
                        insertClaimInDB(claim);
106 100
                    }
107 101
                }
108 102
            }else{
......
113 107
                    log.info(claim.toString());
114 108
                    if(claimValidation.validateClaim(claim)) {
115 109
                        if (insertToDB) {
116
                            //log.info(claimBuilder.getQueryInsertClaim(claim));
117
                          //  claim= createXMLFilesForClaim(claim);
118
                        //    sqlDAO.executeUpdateQuery((claimBuilder.getQueryInsertClaim(claim)));
119
                        }
110
                             insertClaimInDB(claim);
111
                       }
120 112
                    }
121 113
                }else{
122 114
                    log.info("* DMF *");
......
126 118
        }
127 119
    }
128 120
    public void getAndTransformDMFClaims(Integer limit) throws Exception {
129
        ResultSet rs=sqlDAO.executePreparedQuery("Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%concept%' limit "+limit);
121
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectDMFClaimsQuery(limit));
130 122
          while(rs.next()){
131 123
             Result r= claimBuilder.getDMFClaim(rs);
132 124
              log.info(r.toString());
133 125
        }
134 126
    }
135
    public Claim createXMLFilesForClaim(Claim claim) throws Exception {
127
    public void exportMetadataFilesForClaim(Claim claim) throws Exception {
136 128
        if(claim.getSourceType().equals(ClaimUtils.PUBLICATION)|| claim.getSourceType().equals(ClaimUtils.DATASET)){
137 129
            Result r=(Result)claim.getSource();
138
            String xml=createXMLFile(r);
130
            String xml= exportMetadataFileForResult(r);
139 131
            if(xml!=null){
140 132
                r.setXml(xml);
141 133
                claim.setSource(r);
......
144 136
        }
145 137
        if(claim.getTargetType().equals(ClaimUtils.PUBLICATION)|| claim.getTargetType().equals(ClaimUtils.DATASET)){
146 138
            Result r=(Result)claim.getTarget();
147
            String xml=createXMLFile(r);
139
            String xml= exportMetadataFileForResult(r);
148 140
            if(xml!=null){
149 141
                r.setXml(xml);
150 142
                claim.setTarget(r);
151 143
            }
152 144

  
153 145
        }
154

  
155
        return claim;
156 146
    }
157 147

  
158
    public String createXMLFile(Result result)  {
148
    public String exportMetadataFileForResult(Result result)  {
159 149
        if(result.getOpenaireId()!=null && result.getXml()!=null){
160 150
            try {
161 151
                FileUtils.writeStringToFile(new File(ClaimUtils.PATHTOSAVEXML + result.getOpenaireId()), result.getXml());
......
170 160

  
171 161
        return null;
172 162
    }
173

  
163
    public void insertClaimInDB(Claim claim) throws Exception {
164
        String query=null;
165
        if (claim.getSourceType().equals(ClaimUtils.CONTEXT)) {
166
            query = queryGenerator.generateInsertClaimContextQuery((Result)claim.getTarget(), (Context) claim.getSource(), claim);
167
        } else if (claim.getSourceType().equals(ClaimUtils.PROJECT)) {
168
            query = queryGenerator.generateInsertClaimProjectQuery((Result)claim.getTarget(), (Project) claim.getSource(), claim);
169
        } else{
170
            query = queryGenerator.generateInsertClaimResultQuery((Result)claim.getTarget(), (Result) claim.getSource(), claim);
171
        }
172
        if(query!=null){
173
            //log.info(query);
174
            exportMetadataFilesForClaim(claim);
175
            sqlDAO.executeUpdateQuery(query);
176
        }
177
    }
174 178
    public SqlDAO getSqlDAO() {
175 179
        return sqlDAO;
176 180
    }
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/TestClass.java
60 60
	@Test
61 61
	public void testJob() throws Exception {
62 62

  
63
		log.info(queryGenerator.generateSelectAllClaimsQuery());
63
		log.info(queryGenerator.generateSelectAllClaimsQuery(1));
64 64

  
65 65

  
66 66
	}
67 67

  
68

  
69
	@Test
70
	public void executePreparedQuery() throws Exception {
71

  
72
		log.info(sqlDAO.executePreparedQuery("Select * from claims limit 1"));
73

  
74

  
75
	}
76

  
77

  
78 68
    @Test
79 69
    public void transformClaims() throws Exception {
80 70
        queryBuilder.getAndTransformAllClaims(1, false);
......
115 105
    @Test
116 106
    public void getConceptDMFClaims() throws Exception {
117 107
        //total 203
118
        queryBuilder.getAndTransformConceptClaims(203, true);
108
        queryBuilder.getAndTransformConceptClaims(1, false);
119 109
    }
120 110
    @Test
121 111
    public void testHttpRequest() throws Exception {
......
196 186
    @Test
197 187
    public void validDoiTest() throws Exception {
198 188
        //10.1523/​JNEUROSCI.2900-11.2012
199
        SearchUtils s= new SearchUtils();
200 189
        String doi="10.1523/​JNEUROSCI.2900-11.2012";
201
        String tr_doi=doi=s.isValidDoi(doi);
202
        System.out.println("Initial doi:"+doi.length()+" "+tr_doi.length());
190
        String tr_doi=doi=ClaimValidation.isValidDoi(doi);
203 191
        System.out.println("Initial doi:"+doi+" "+((doi.equals(tr_doi))?"":" Transformed to"+tr_doi));
204 192

  
205 193
    }
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/SearchUtils.java
18 18
 */
19 19
public class SearchUtils {
20 20
//    private String searchUrl="http://beta.services.openaire.eu:8380/search/search?action=search";
21
    private String searchUrl="http://services.openaire.eu:8380/search/search?action=search";
22
    private String apiUrlForResults="http://api.openaire.eu/search/";
23
    private String apiUrlForProjects="http://rudie.di.uoa.gr:8080/dnet-functionality-services-1.2.0-SNAPSHOT/api/";
24
    private String crossrefUrl="http://api.crossref.org/works?filter=doi:";
25
    private String dataciteUrl="http://data.datacite.org/application/rdf+xml/";
26
    private String orcidUrlPrefix="http://pub.orcid.org/";
27
    private String orcidUrlSuffix="/orcid-works";
21
    private static String searchUrl="http://services.openaire.eu:8380/search/search?action=search";
22
    private static String apiUrlForResults="http://api.openaire.eu/search/";
23
    private static String apiUrlForProjects="http://rudie.di.uoa.gr:8080/dnet-functionality-services-1.2.0-SNAPSHOT/api/";
24
    private static String crossrefUrl="http://api.crossref.org/works?filter=doi:";
25
    private static String dataciteUrl="http://data.datacite.org/application/rdf+xml/";
26
    private static String orcidUrlPrefix="http://pub.orcid.org/";
27
    private static String orcidUrlSuffix="/orcid-works";
28 28
    private boolean useApi=true;
29 29

  
30
    SearchUtils(){
30
    public SearchUtils(){
31 31

  
32 32
    }
33 33
     public String getProjectApiUrl(String id)  {
......
99 99
         return response.toString();
100 100
    }
101 101
    // HTTP GET request
102
    public String getCrossrefJsonRecord(String doi){
102
    public static String getCrossrefJsonRecord(String doi){
103 103
        String url=crossrefUrl+doi;
104 104
        URL obj = null;
105 105
        String responseStr=null;
......
131 131
        }
132 132
        return responseStr;
133 133
    }
134
     private boolean findDOI(String doi) throws IOException {
134
     public static boolean findDOI(String doi) throws IOException {
135 135
            boolean found=false;
136 136
            String responseStr=getCrossrefJsonRecord(doi);
137 137
             if(responseStr!=null){
......
143 143
Checks if the the crossref API returns a response for the requested DOI
144 144
If there is no such a DOI  we try some transformations to resolve an bug in the portal
145 145
 */
146
    public String isValidDoi(String doi) throws Exception {
147
        if(doi==null){
148
            return null;
149
        }
150
         try{
151
             PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("invalid_dois.txt", true)));
152
             boolean valid=findDOI(doi);
153
             if(!valid&&(doi.length() - (doi.replace("_", "")).length() > 1)){
154
                 String transformDoi = doi.replace("_", "-");
155
                 valid=findDOI(transformDoi);
156
                 if(valid){
157
                     Date date= new java.util.Date();
158
                     out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with : "+transformDoi);
159
                     doi=transformDoi;
160
                 }
161
            }else if(!valid&&(doi.length() - (doi.replace("_", "")).length() == 1)) {
162
                 String transformDoi = doi.replace("_", "-");
163
                 valid=findDOI(transformDoi);
164
                 if(valid){
165
                     Date date= new java.util.Date();
166
                     out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with : "+transformDoi);
167
                     doi = transformDoi;
168
                 }
169
             }else if(!valid) {
170
                 String transformDoi =doi.replaceAll("\\p{C}", "");
171
                 valid=findDOI(transformDoi);
172
                 if(valid){
173
                     Date date= new java.util.Date();
174
                     out.println(new Timestamp(date.getTime())+" - Invalid doi: "+doi+" replaced with (zero-width-char): "+transformDoi);
175
                     doi = transformDoi;
176
                 }
177
             }
178
            out.close();
179
         }catch (IOException e) {
180
            e.printStackTrace();
181
            System.err.println("Couldn't write to file " + "invalid_dois.txt");
182
        }
183
        return doi;
184
    }
146

  
185 147
    public String getDataciteXmlRecord(String doi)  {
186 148
        String url=dataciteUrl+doi;
187 149
        URL obj = null;
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/ParsingClaimUtils.java
197 197
        }
198 198
        return r;
199 199
    }
200
    static public Claim getClaimFromConceptDMF(Claim claim, String xml)  {
200
    static public void getClaimFromConceptDMF(Claim claim, String xml)  {
201 201
        Result r=new Result();
202 202
        Context context =new Context();
203 203

  
......
218 218
            }
219 219
         } catch (Exception e) {
220 220
            e.printStackTrace();
221
            return null;
222 221

  
223 222
        }
224 223

  
225 224
        claim.setTarget(buildResult(r.getOpenaireId(), null,claim.getId(),ClaimUtils.USEAPIRESULTS));
226
        claim.setSource(buildContext(context));
227
        return claim;
228
    }
229
    static public Claim getRelationClaim(Claim claim, String xml) throws IOException, SAXException, ParserConfigurationException {
225
        buildContext(context);
226
        claim.setSource(context);
227
     }
228
    static public void getRelationClaim(Claim claim, String xml) throws IOException, SAXException, ParserConfigurationException {
230 229
        String relationType="";
231 230
        String sourceId=""; //Annotation source
232 231
        String targetId=""; //Annotation target
......
253 252
            }
254 253
        } catch (Exception e) {
255 254
            e.printStackTrace();
256
            return null;
257 255

  
258 256
        }
259 257
        claim.setTarget(buildResult(targetId, getTargetType(relationType),claim.getId(),ClaimUtils.USEAPIRESULTS));
......
266 264
        }
267 265
        claim.setTargetType(((Result) claim.getTarget()).getResultType());
268 266
        claim.setSourceType(bodyType);
269
        return claim;
270
    }
271
static public Context buildContext(Context context){
272
    if(context!=null&&context.getOpenaireId()!=null){
273
        try {
274
             context.setTitle(ContextUtils.extractEgiLabel(context.getOpenaireId()));
275
        }catch (Exception e){
276
            e.printStackTrace();
277
            System.err.println("ContextUtils: Couldn't get Egi label for id "+context.getId());
267
     }
268
    static public void buildContext(Context context){
269
        if(context!=null&&context.getOpenaireId()!=null){
270
            try {
271
                 context.setTitle(ContextUtils.extractEgiLabel(context.getOpenaireId()));
272
            }catch (Exception e){
273
                e.printStackTrace();
274
                System.err.println("ContextUtils: Couldn't get Egi label for id "+context.getId());
275
            }
278 276
        }
279 277
    }
280
    return  context;
281
}
282 278
    static Result buildResult(String id, String type,String claimId,boolean useApi)  {
283 279
        Result body= new Result();
284 280
        if (id.contains("|")) {
......
288 284
        body.setResultType(type);
289 285
        if(useApi){
290 286
            //look for a publication
291
            body=getResultFromAPI(body, claimId,true);
287
            getResultFromAPI(body, claimId,true);
292 288
            String openaireId=body.getOpenaireId();
293 289
            String objId=getObjIdentifierFromSearch(openaireId);
294 290
            if(!body.isFound()){
......
296 292
                    // not found! look for a publication with objId
297 293
                    //if result not found in API with openaireId, search for it with objIdentifier
298 294
                    body.setOpenaireId(objId);
299
                    body=getResultFromAPI(body, claimId,true);
295
                    getResultFromAPI(body, claimId,true);
300 296
                    body.setOpenaireId(openaireId);
301 297
                    //TODO check which one of the ids we should keep!!!!
302 298
                }
303 299
                if(!body.isFound()){
304 300
                    //if still not found search for Dataset with the id
305
                        body = getResultFromAPI(body, claimId, false);
301
                        getResultFromAPI(body, claimId, false);
306 302
                        if (!body.isFound() && (objId = getObjIdentifierFromSearch(openaireId)) != null && !openaireId.equals(objId)) {
307 303
                            // still not found!! search for Dataset with the onjId
308 304
                            //if result not found in API with openaireId, search for it with objIdentifier
309 305
                            body.setOpenaireId(objId);
310
                            body = getResultFromAPI(body, claimId, false);
306
                            getResultFromAPI(body, claimId, false);
311 307
                            body.setOpenaireId(openaireId);
312 308
                            //TODO check which one of the ids we should keep!!!!
313 309
                        }
......
326 322
                }
327 323
            }
328 324
        }else {
329
            body = getResultFromSearch(body, claimId);
325
            getResultFromSearch(body, claimId);
330 326
        }
331 327
        return body;
332 328
    }
333 329

  
334
    private static Result getResultFromSearch(Result  r,String claimId){
330
    private static void getResultFromSearch(Result  r,String claimId){
335 331
        SearchUtils searchUtils= new SearchUtils();
336 332
        String searchUri=searchUtils.getResultSearchUrl(r.getOpenaireId());
337 333
        if(searchUri==null){
338
            return r;
334
            return ;
339 335
        }
340 336
        System.out.println("Result query: "+searchUri);
341 337
        try {
......
408 404

  
409 405
        } catch (Exception e) {
410 406
            e.printStackTrace();
411
            return null;
407
            return ;
412 408
        }
413
        return r;
414 409
    }
415 410
    public static String getObjIdentifierFromSearch(String id){
416 411
        SearchUtils searchUtils= new SearchUtils();
......
447 442
        }
448 443
        return objIdentifier;
449 444
    }
450
    private static Result getResultFromAPI(Result  r,String claimId, boolean isPublication){
445
    private static void getResultFromAPI(Result  r,String claimId, boolean isPublication){
451 446
        SearchUtils searchUtils= new SearchUtils();
452 447
        String searchUri;
453 448
        if(isPublication) {
......
456 451
            searchUri = searchUtils.getDatasetApiUrl(r.getOpenaireId());
457 452
        }
458 453
        if(searchUri==null){
459
            return r;
454
            return;
460 455
        }
461 456
        System.out.println("Result query: "+searchUri);
462 457
        try {
......
536 531

  
537 532
        } catch (Exception e) {
538 533
            e.printStackTrace();
539
            return null;
540 534
        }
541
        return r;
542 535
    }
543
    public static Result getXmlfromDatacite(Result  r){
536
    public static void getXmlfromDatacite(Result  r){
544 537
        r.setResultType(ClaimUtils.DATASET);
545 538
        SearchUtils searchUtils= new SearchUtils();
546 539
        if(r!=null&&r.getDoi()==null){
547
            return r;
540
            return ;
548 541
        }
549 542
        String xml =searchUtils.getDataciteXmlRecord(r.getDoi());
550 543
         if(xml==null){
551
            return r;
544
            return ;
552 545
        }
553 546
         try {
554 547
            String size=null;
......
574 567
                r.setFound(true);
575 568
        } catch (Exception e) {
576 569
            e.printStackTrace();
577
            return null;
578 570
        }
579
        return r;
580 571
    }
581
    public static Result getJsonfromCrossref(Result  r){
572
    public static void getJsonfromCrossref(Result  r){
582 573
        SearchUtils searchUtils= new SearchUtils();
583 574
        if(r!=null&&r.getDoi()==null){
584
            return r;
575
            return ;
585 576
        }
586 577
        String xml =searchUtils.getCrossrefJsonRecord(r.getDoi());
587 578
        if(xml!=null){
588 579
            r.setXml(xml);
589 580
            r.setCollectedFrom(ClaimUtils.COLLECTED_FROM_CROSSREF);
590 581
        }
591
        return r;
592 582
    }
593
    public static Result getXmlfromOrcid(Result  r){
583
    public static void getXmlfromOrcid(Result  r){
594 584
        r.setResultType(ClaimUtils.PUBLICATION);
595 585
        SearchUtils searchUtils= new SearchUtils();
596 586
        if(r!=null&&r.getOrcidworkid()==null){
597
            return r;
587
            return ;
598 588
        }
599 589
        System.out.println("OWI: " + r.getOrcidworkid());
600 590
        String orcid=r.getOrcidworkid().substring(0,19);
......
604 594
        System.out.println("OWI: "+orcidworkid);
605 595
        String xml =searchUtils.getOrcidXmlRecord(orcid);
606 596
        if(xml==null){
607
            return r;
597
            return ;
608 598
        }
609 599
        try {
610 600
            String size=null;
......
650 640
            }
651 641
        } catch (Exception e) {
652 642
            e.printStackTrace();
653
            return null;
654 643
        }
655
        return r;
656 644
    }
657 645
        public static Project buildProject(String id, String claimId, boolean useAPI){
658 646
        Project body=new Project();
......
661 649
        }
662 650
        body.setOpenaireId(id);
663 651
        if(useAPI){
664
            return getProjectFromAPI(body,claimId);
652
            getProjectFromAPI(body,claimId);
653
            return body;
665 654
        }else{
666
            return getProjectFromSearch(body, claimId);
655
            getProjectFromSearch(body, claimId);
656
            return body;
667 657
        }
668 658

  
669 659

  
670 660
    }
671 661

  
672
    private static Project getProjectFromSearch(Project project, String claimId){
662
    private static void getProjectFromSearch(Project project, String claimId){
673 663
        SearchUtils s=new SearchUtils();
674 664
        String searchUri=s.getProjectSearchUrl(project.getOpenaireId());
675 665
        if(searchUri==null){
676
            return project;
666
            return ;
677 667
        }
678 668
       System.out.println("Project query: "+searchUri);
679 669
        try {
......
728 718
            }
729 719

  
730 720
        } catch (Exception e) {
731
            return null;
732 721
        }
733
         return project;
734 722
    }
735
    private static Project getProjectFromAPI(Project project, String claimId){
723
    private static void getProjectFromAPI(Project project, String claimId){
736 724

  
737 725

  
738 726
        SearchUtils s=new SearchUtils();
739 727
        String searchUri=s.getProjectApiUrl(project.getOpenaireId());
740 728
        searchUri="http://api.openaire.eu/search//projects?format=xml&openaireParticipantID=dedup_wf_001::82c87f641bb6219626a0ceca81e0d434";
741 729
        if(searchUri==null){
742
            return project;
730
            return ;
743 731
        }
744 732
         //TODO the parsing from API
745 733
        System.out.println("Project query: "+searchUri);
......
806 794

  
807 795
        } catch (Exception e) {
808 796
            e.printStackTrace();
809
            return null;
810 797
        }
811
        return project;
812 798
    }
813 799
}
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/ClaimBuilder.java
1 1
package eu.dnetlib.data.claimsDemo;
2 2

  
3
import eu.dnetlib.data.claims.migration.Claim;
4
import eu.dnetlib.data.claims.migration.Context;
5
import eu.dnetlib.data.claims.migration.Project;
6
import eu.dnetlib.data.claims.migration.Result;
3
import eu.dnetlib.data.claims.migration.*;
7 4
import org.xml.sax.SAXException;
8 5

  
9 6
import javax.xml.parsers.ParserConfigurationException;
......
20 17
 * Created by argirok on 24/11/2015.
21 18
 */
22 19
 /*
23
    Build operations is the class that is responsible for building of a claim Object
20
    ClaimBuilder is the class that is responsible for building a claim Object
24 21
     given a tupple (rs) from the claim db.
25 22
 */
26 23
public class ClaimBuilder {
......
31 28

  
32 29
    }
33 30

  
34
    public SqlDAO getSqlDAO() {
35
        return sqlDAO;
36
    }
37

  
38
    public void setSqlDAO(SqlDAO sqlDAO) {
39
        this.sqlDAO = sqlDAO;
40
    }
41

  
42
    public QueryGenerator getQueryGenerator() {
43
        return queryGenerator;
44
    }
45

  
46
    public void setQueryGenerator(QueryGenerator queryGenerator) {
47
        this.queryGenerator = queryGenerator;
48
    }
49

  
50 31
    public Result getDMFClaim(ResultSet rs) throws Exception {
51 32
        String xml = rs.getString("xml");
52 33
        Result r = ParsingClaimUtils.getResultFromDMF(xml);
......
58 39
        claim.setDate(rs.getDate("date"));
59 40
        claim.setUserMail(rs.getString("agent"));
60 41
        String xml = rs.getString("xml");
61
        claim = ParsingClaimUtils.getClaimFromConceptDMF(claim, xml);
42
//        claim =
43
                ParsingClaimUtils.getClaimFromConceptDMF(claim, xml);
62 44
        claim.setTargetType(((Result) claim.getTarget()).getResultType());
63 45
        claim.setSourceType(ClaimUtils.CONTEXT);
64
        claim=this.enrichClaimFromDMFAndExternalSources(claim);
46
//        claim=
47
                this.enrichClaimFromDMFAndExternalSources(claim);
65 48
        return claim;
66 49
    }
67 50

  
......
70 53
        claim.setId(rs.getString("id"));
71 54
        claim.setDate(rs.getDate("date"));
72 55
        claim.setUserMail(rs.getString("agent"));
73
        claim=ParsingClaimUtils.getRelationClaim(claim,rs.getString("xml"));
74
        claim=this.enrichClaimFromDMFAndExternalSources(claim);
56
//        claim=
57
                ParsingClaimUtils.getRelationClaim(claim,rs.getString("xml"));
58
//        claim=
59
                this.enrichClaimFromDMFAndExternalSources(claim);
75 60
        return claim;
76 61
    }
77
    public String getQueryInsertClaim(Claim claim) {
78
        if (claim.getSourceType().equals(ClaimUtils.CONTEXT)) {
79
            return queryGenerator.generateInsertClaimContextQuery((Result)claim.getTarget(), (Context) claim.getSource(), claim);
80
        } else if (claim.getSourceType().equals(ClaimUtils.PROJECT)) {
81
            return queryGenerator.generateInsertClaimProjectQuery((Result)claim.getTarget(), (Project) claim.getSource(), claim);
82
        } else{
83
            return queryGenerator.generateInsertClaimResultQuery((Result)claim.getTarget(), (Result) claim.getSource(), claim);
84
        }
85
    }
62

  
86 63
@Deprecated
87 64
    private Claim enrichClaimFromDMF(Claim claim){
88 65
        if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){
89 66
            Result source=(Result)claim.getSource();
90
            claim.setSource(enrichResultFromDMF(claim.getId(), source));
67
            enrichResultFromDMF(claim.getId(), (Result) claim.getSource());
91 68
            claim.setSourceType(((Result) claim.getSource()).getResultType());
92 69
        }
93 70
        if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){
94 71
            Result target=(Result)claim.getTarget();
95
            claim.setTarget(enrichResultFromDMF(claim.getId(),target));
72
            enrichResultFromDMF(claim.getId(), (Result) claim.getTarget());
96 73
            claim.setTargetType(((Result) claim.getTarget()).getResultType());
97 74
        }
98 75
        return claim;
99 76
    }
100
    private Claim enrichClaimFromDMFAndExternalSources(Claim claim){
77
    private void enrichClaimFromDMFAndExternalSources(Claim claim){
101 78
        if((claim.getSourceType()==null)||(claim.getSourceType().equals(ClaimUtils.PUBLICATION)||claim.getSourceType().equals(ClaimUtils.DATASET))){
102
            claim.setSource(enrichResultFromDMF(claim.getId(), (Result)claim.getSource()));
79
            enrichResultFromDMF(claim.getId(), (Result) claim.getSource());
103 80
            if(((Result)claim.getSource()).getOpenaireId().contains("datacite")){
104
                claim.setSource(ParsingClaimUtils.getXmlfromDatacite(((Result)claim.getSource())));
81
                ParsingClaimUtils.getXmlfromDatacite(((Result) claim.getSource()));
105 82
            }else if(((Result)claim.getSource()).getOpenaireId().contains("crossref")){
106
                claim.setSource(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getSource()));
83
                ParsingClaimUtils.getJsonfromCrossref((Result) claim.getSource());
107 84
            }
108 85
            claim.setSourceType(((Result) claim.getSource()).getResultType());
109 86
        }
110 87
        if(claim.getTargetType()==null||(claim.getTargetType().equals(ClaimUtils.PUBLICATION)||claim.getTargetType().equals(ClaimUtils.DATASET))){
111 88
            //Result target=(Result)claim.getTarget();
112
            claim.setTarget(enrichResultFromDMF(claim.getId(),(Result)claim.getTarget()));
89
            enrichResultFromDMF(claim.getId(), (Result) claim.getTarget());
113 90
            if(((Result) claim.getTarget()).getOpenaireId().contains("datacite")){
114
                claim.setTarget(ParsingClaimUtils.getXmlfromDatacite((Result) claim.getTarget()));
91
                ParsingClaimUtils.getXmlfromDatacite((Result) claim.getTarget());
115 92
            }else if(((Result) claim.getTarget()).getOpenaireId().contains("crossref")){
116 93

  
117
                claim.setTarget(ParsingClaimUtils.getJsonfromCrossref((Result) claim.getTarget()));
94
                ParsingClaimUtils.getJsonfromCrossref((Result) claim.getTarget());
118 95
            }
119 96
            claim.setTargetType(((Result) claim.getTarget()).getResultType());
120 97
        }
121
        return claim;
122 98
    }
123
    private Result enrichResultFromDMF(String claimId, Result r){
99
    private void enrichResultFromDMF(String claimId, Result r){
124 100
        try {
125 101
            /*if(r.getCollectedFrom().contains("::openaire")){
126 102
                return r;
127 103
            }*/
128
            r=checkForDOI(r);
104
            ClaimValidation.checkForDOI(r);
129 105
            Result dmfResult=this.getDMFClaimById(r.getOpenaireId());
130 106
            if(dmfResult!=null){
131 107
                if(r.getResultType()==null){
......
166 142
                    System.err.println("Couldn't write to file " + "enriched_results.txt");
167 143
                }
168 144
            }
169
            r=checkForDOI(r);
145
            ClaimValidation.checkForDOI(r);
170 146
            //if type is still null => decide on  provider
171 147
            if(r.getResultType()==null){
172 148
                if(r.getCollectedFrom()!=null) {
......
187 163
                    }
188 164
                }
189 165
            }
190
            return r;
191
        } catch (Exception e) {
166
         } catch (Exception e) {
192 167
            e.printStackTrace();
193
            return r;
194
        }
168
         }
195 169
    }
196
    /*
197
    Checks if the doi is valid. If it is not  then replaces the DOI with the valid one.
198
     */
199
    private Result checkForDOI(Result r) throws Exception {
200
        if(r.getDoi()==null){
201
            return r;
202
        }
203
        SearchUtils s= new SearchUtils();
204
        String validDOI=s.isValidDoi(r.getDoi());
205
        if(!validDOI.equals(r.getDoi())){
206
            if(r.getXml()!=null) {
207
                r.setXml(r.getXml().replace(r.getDoi(), validDOI));
208
            }
209
            if(r.getExternal_url()!=null){
210
                r.setExternal_url(r.getExternal_url().replace(r.getDoi(), validDOI));
211
            }
212
            r.setDoi(validDOI);
213
        }
214
        return r;
215
    }
170

  
216 171
    public Result getDMFClaimById(String resultId) throws Exception {
217 172
        ResultSet rs=sqlDAO.executePreparedQuery(queryGenerator.generateSelectDMFByIdQuery((resultId)));
218 173
        Result r =null;
......
221 176
        }
222 177
        return r;
223 178
    }
179

  
180
    public SqlDAO getSqlDAO() {
181
        return sqlDAO;
182
    }
183

  
184
    public void setSqlDAO(SqlDAO sqlDAO) {
185
        this.sqlDAO = sqlDAO;
186
    }
187

  
188
    public QueryGenerator getQueryGenerator() {
189
        return queryGenerator;
190
    }
191

  
192
    public void setQueryGenerator(QueryGenerator queryGenerator) {
193
        this.queryGenerator = queryGenerator;
194
    }
224 195
}
modules/uoa-claims -demo/claims-demo/src/main/java/eu/dnetlib/data/claimsDemo/QueryGenerator.java
277 277
    }
278 278
    //TODO Argiro here you can set up your mostly used queries and call them from the SQLDAO class
279 279
    // without having to change them in your test methods
280
    public String generateSelectAllClaimsQuery() {
281
        return " Select * from claims  where id = ?";
280
    public String generateSelectAllClaimsQuery(Integer limit ) {
281
        return " Select * from claims "+(limit>0?" limit "+limit:"");
282 282

  
283 283
    }
284 284
    public String generateSelectDMFClaimsQuery(Integer limit) {
285
        return " Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%<oaf:concept%' limit "+limit;
286

  
285
        return " Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%<oaf:concept%' "+(limit>0?" limit "+limit:"");
287 286
    }
288 287
    public String generateSelectDMFByIdQuery(String id) {
289 288
        return " Select * from claims_view  where type='dmf2actions' and xml NOT ILIKE '%<oaf:concept%' and  resultid='"+id+"'  order by date desc limit 1";
290 289
    }
291 290
    public String generateSelectConceptDMFClaimsQuery(Integer limit) {
292
        return " Select * from claims_view  where ( type='dmf2actions' or type='updates2actions' ) and xml LIKE '%<oaf:concept%' limit "+limit;
291
        return " Select * from claims_view  where ( type='dmf2actions' or type='updates2actions' ) and xml LIKE '%<oaf:concept%' "+(limit>0?" limit "+limit:"");
293 292
    }
294 293
    public String generateSelectRelationClaimsQuery(Integer limit) {
295
        return " Select * from claims_view  where type='rels2actions'  limit "+limit;
294
        return " Select * from claims_view  where type='rels2actions'  "+(limit>0?" limit "+limit:"");
296 295

  
297 296
    }
298 297
    public String generateSelectRelationClaimsQuery(String startId, String endId, Integer limit) {
299
        return " Select * from claims_view  where type='rels2actions'  and id>= "+startId+" and id <="+endId+ " order by id limit "+limit;
298
        return " Select * from claims_view  where type='rels2actions'  and id>= "+startId+" and id <="+endId+ " order by id " +(limit>0?" limit "+limit:"");
300 299

  
301 300
    }
301
    //used just for Testing
302 302
    public String generateSelectRelationClaimsWithResultidLikeQuery(String resultidLike, int limit) {
303
        return " Select * from claims_view  where type='rels2actions'  and resultid like '%"+resultidLike+"%' limit " +limit ;
303
        return " Select * from claims_view  where type='rels2actions'  and resultid like '%"+resultidLike+"%' " +(limit>0?" limit "+limit:"") ;
304 304

  
305 305
    }
306 306
    public static String generateSelectClaimByIdQuery(String id) {

Also available in: Unified diff