Revision 52857
Added by Argiro Kokogiannaki over 5 years ago
QueryGenerator.java | ||
---|---|---|
3 | 3 |
import eu.dnetlib.data.claims.migration.entity.*; |
4 | 4 |
|
5 | 5 |
import java.lang.reflect.Array; |
6 |
import java.sql.Connection; |
|
6 | 7 |
import java.text.SimpleDateFormat; |
7 | 8 |
import java.util.ArrayList; |
8 | 9 |
import java.util.Date; |
... | ... | |
26 | 27 |
/** |
27 | 28 |
** Insert Queries ** |
28 | 29 |
**/ |
30 |
public String generateInsertQueryForClaimsOrphanIds(String id){ |
|
31 |
return "INSERT INTO claims_orphan_ids values (" + id + ");"; |
|
32 |
} |
|
29 | 33 |
private String generateInsertResultQuery(String openaire_id, String result_type, String title, String collected_from , String external_url, String doi, String orcidworkid, String access_rights , String embargo_end_date, String best_license, String record_path, String record_format, ArrayList<Object> params) { |
30 | 34 |
if(title!=null&&title.contains("'")){ |
31 | 35 |
title=title.replace("'","''"); |
... | ... | |
261 | 265 |
if(type==null){ |
262 | 266 |
return null; |
263 | 267 |
} |
264 |
if(type.equals(ClaimUtils.DATASET)||type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.SOFTWARE)){ |
|
268 |
if(type.equals(ClaimUtils.DATASET)||type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.SOFTWARE)||type.equals(ClaimUtils.OTHER)){
|
|
265 | 269 |
Result result=(Result)openaireEntity; |
266 | 270 |
query=generateInsertResultQuery(result.getOpenaireId(),result.getResultType(),result.getTitle(),result.getCollectedFrom(),result.getExternalUrl(),result.getDoi(), result.getOrcidworkid(), result.getAccessRights(),result.getEmbargoEndDate(),result.getBestLicense(),result.getRecordPath(), result.getRecordFormat(), params); |
267 | 271 |
}else if(type.equals(ClaimUtils.PROJECT)){ |
... | ... | |
346 | 350 |
// semantics="resultResult_supplement_isSupplementTo"; |
347 | 351 |
// } |
348 | 352 |
//add above more specific semantics for pub,data and software |
349 |
if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE))&&(sourceType.equals(ClaimUtils.PUBLICATION)||sourceType.equals(ClaimUtils.DATASET)||sourceType.equals(ClaimUtils.SOFTWARE))){
|
|
353 |
if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE)||targetType.equals(ClaimUtils.OTHER))&&(sourceType.equals(ClaimUtils.PUBLICATION)||sourceType.equals(ClaimUtils.DATASET)||sourceType.equals(ClaimUtils.SOFTWARE)||sourceType.equals(ClaimUtils.OTHER))){
|
|
350 | 354 |
semantics="resultResult_relationship_isRelatedTo"; |
351 | 355 |
} |
352 |
else if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE))&&(sourceType.equals(ClaimUtils.PROJECT))){ |
|
356 |
else if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE)||targetType.equals(ClaimUtils.OTHER))&&(sourceType.equals(ClaimUtils.PROJECT))){
|
|
353 | 357 |
semantics= "resultProject_outcome_produces"; //"resultProject_outcome_isProducedBy"; |
354 | 358 |
} |
355 |
else if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE))&&(sourceType.equals(ClaimUtils.CONTEXT))){ |
|
359 |
else if((targetType.equals(ClaimUtils.PUBLICATION)||targetType.equals(ClaimUtils.DATASET)||targetType.equals(ClaimUtils.SOFTWARE)||targetType.equals(ClaimUtils.OTHER))&&(sourceType.equals(ClaimUtils.CONTEXT))){
|
|
356 | 360 |
semantics= "isRelevantTo"; |
357 | 361 |
} |
358 | 362 |
|
... | ... | |
421 | 425 |
"drop table if exists project;\n" + |
422 | 426 |
"drop table if exists result;\n" + |
423 | 427 |
"drop table if exists context;\n" + |
428 |
"drop table if exists claims_orphan_ids;\n" + |
|
424 | 429 |
"\n "; |
425 | 430 |
|
426 | 431 |
} |
... | ... | |
496 | 501 |
"CREATE TABLE has_target_result(\n" + |
497 | 502 |
"\tclaim_id int references claim(id) NOT NULL,\n" + |
498 | 503 |
"\topenaire_id varchar(60) references result(openaire_id) NOT NULL\n" + |
504 |
");\n"+ |
|
505 |
"CREATE TABLE claims_orphan_ids (\n" + |
|
506 |
" id integer "+ |
|
499 | 507 |
");\n" |
500 | 508 |
|
501 | 509 |
; |
... | ... | |
602 | 610 |
logger.debug(types); |
603 | 611 |
if(types == null || types.isEmpty() || (types.size() == 1 && types.get(0).isEmpty())){ |
604 | 612 |
return null; |
605 |
}else if (types.contains(ClaimUtils.PUBLICATION) && types.contains(ClaimUtils.DATASET) && types.contains(ClaimUtils.SOFTWARE) && types.contains(ClaimUtils.PROJECT) && types.contains(ClaimUtils.CONTEXT) ){ |
|
613 |
}else if (types.contains(ClaimUtils.PUBLICATION) && types.contains(ClaimUtils.DATASET) && types.contains(ClaimUtils.SOFTWARE) && types.contains(ClaimUtils.PROJECT) && types.contains(ClaimUtils.CONTEXT) && types.contains(ClaimUtils.OTHER) ){
|
|
606 | 614 |
//it's all types - no need to filter |
607 | 615 |
return null; |
608 | 616 |
} |
... | ... | |
798 | 806 |
ArrayList<Object> clauseParams = new ArrayList<>(); |
799 | 807 |
clauseParams.add(claimId); |
800 | 808 |
String orderbyLimitClause= null; |
801 |
if(sourceType.equals(ClaimUtils.PUBLICATION)||sourceType.equals(ClaimUtils.DATASET)||sourceType.equals(ClaimUtils.SOFTWARE)){ |
|
809 |
if(sourceType.equals(ClaimUtils.PUBLICATION)||sourceType.equals(ClaimUtils.DATASET)||sourceType.equals(ClaimUtils.SOFTWARE)||sourceType.equals(ClaimUtils.OTHER)){
|
|
802 | 810 |
return generateSelectclaimQuery(sourceType,targetType,null,null,null,false, clause,clauseParams,keyword, params); |
803 | 811 |
}else if(sourceType.equals(ClaimUtils.PROJECT)){ |
804 | 812 |
return generateSelectclaimQuery(sourceType,targetType,null,null,null,false, clause,clauseParams,keyword, params); |
... | ... | |
825 | 833 |
String fields= null; |
826 | 834 |
|
827 | 835 |
if (type != null) { |
828 |
if (type.equals(ClaimUtils.PUBLICATION) || type.equals(ClaimUtils.DATASET) || type.equals(ClaimUtils.SOFTWARE)) { |
|
836 |
if (type.equals(ClaimUtils.PUBLICATION) || type.equals(ClaimUtils.DATASET) || type.equals(ClaimUtils.SOFTWARE)||type.equals(ClaimUtils.OTHER)) {
|
|
829 | 837 |
fields = getResultFields(tableAlias); |
830 | 838 |
|
831 | 839 |
} else if (type.equals(ClaimUtils.PROJECT)) { |
... | ... | |
868 | 876 |
return ""; |
869 | 877 |
} |
870 | 878 |
keyword=keyword.toLowerCase(); |
871 |
if (type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET)||type.equals(ClaimUtils.SOFTWARE)){ |
|
879 |
if (type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET)||type.equals(ClaimUtils.SOFTWARE)||type.equals(ClaimUtils.OTHER)){
|
|
872 | 880 |
params.add("%" + keyword + "%"); |
873 | 881 |
params.add("%" + keyword + "%"); |
874 | 882 |
return " (lower("+tableAlias+".title) like ? or lower("+tableAlias+".doi) like ?"+")"; |
... | ... | |
902 | 910 |
" ( " +generateSelectclaimQuery(ClaimUtils.PUBLICATION,ClaimUtils.PUBLICATION,null,null,null,false, specificWhereClause,whereParams,keyword, params)+" ) \nunion "+ |
903 | 911 |
" ( " +generateSelectclaimQuery(ClaimUtils.DATASET,ClaimUtils.DATASET,null,null,null,false, specificWhereClause, whereParams,keyword, params)+" ) \nunion "+ |
904 | 912 |
" ( " +generateSelectclaimQuery(ClaimUtils.SOFTWARE,ClaimUtils.SOFTWARE,null,null,null,false, specificWhereClause, whereParams,keyword, params)+" ) \nunion "+ |
913 |
" ( " +generateSelectclaimQuery(ClaimUtils.OTHER,ClaimUtils.OTHER,null,null,null,false, specificWhereClause, whereParams,keyword, params)+" ) \nunion "+ |
|
905 | 914 |
" ( " +generateSelectclaimQuery(ClaimUtils.PROJECT,ClaimUtils.PUBLICATION, null,null,null,false, specificWhereClause, whereParams,keyword, params)+" ) \nunion "+ |
906 | 915 |
" ( " +generateSelectclaimQuery(ClaimUtils.CONTEXT,ClaimUtils.PUBLICATION,null,null,null,false, specificWhereClause, whereParams, keyword, params)+" )" + |
907 | 916 |
|
... | ... | |
917 | 926 |
if(type == null){ |
918 | 927 |
return null; |
919 | 928 |
} |
920 |
if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET) ||type.equals(ClaimUtils.SOFTWARE)){ |
|
929 |
if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET) ||type.equals(ClaimUtils.SOFTWARE)||type.equals(ClaimUtils.OTHER)){
|
|
921 | 930 |
return "result"; |
922 | 931 |
}else{ |
923 | 932 |
return type; |
... | ... | |
942 | 951 |
return null; |
943 | 952 |
} |
944 | 953 |
String query = null; |
945 |
if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET) ||type.equals(ClaimUtils.SOFTWARE)){ |
|
954 |
if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET) ||type.equals(ClaimUtils.SOFTWARE) ||type.equals(ClaimUtils.OTHER)){
|
|
946 | 955 |
query = generateDeleteResultQuery(resultid,claimId, params); |
947 | 956 |
}else if(type.equals(ClaimUtils.PROJECT)){ |
948 | 957 |
query = generateDeleteProjectQuery(resultid,claimId, params); |
Also available in: Unified diff
Enable claiming for ORPs
Set direct index url in properties
Migration:
save orphan Ids, claims
uncomment fetch dedup