Revision 50968
Added by Argiro Kokogiannaki about 6 years ago
QueryGenerator.java | ||
---|---|---|
599 | 599 |
} |
600 | 600 |
|
601 | 601 |
private String addFilterByType( List<String> types, ArrayList<Object> params) { |
602 |
if(types == null || types.isEmpty()){ |
|
602 |
logger.debug(types); |
|
603 |
if(types == null || types.isEmpty() || (types.size() == 1 && types.get(0).isEmpty())){ |
|
603 | 604 |
return null; |
604 | 605 |
}else if (types.contains(ClaimUtils.PUBLICATION) && types.contains(ClaimUtils.DATASET) && types.contains(ClaimUtils.SOFTWARE) && types.contains(ClaimUtils.PROJECT) && types.contains(ClaimUtils.CONTEXT) ){ |
605 | 606 |
//it's all types - no need to filter |
... | ... | |
727 | 728 |
String clause = "source.openaire_id =?"; |
728 | 729 |
ArrayList<Object> clauseParams = new ArrayList<>(); |
729 | 730 |
clauseParams.add(projectId); |
731 |
String filterByType = addFilterByType(types, clauseParams); |
|
732 |
clause+= ((filterByType==null)?"":" and ("+filterByType+") "); |
|
730 | 733 |
String query = " select * from ("+" select * from ( " + generateSelectclaimQuery(ClaimUtils.PROJECT, ClaimUtils.PUBLICATION, limit, offset, orderBy, desc, clause, clauseParams, keyword, params) + " ) as claim "+ |
731 | 734 |
") as claim "; |
732 |
String filterByType = addFilterByType(types, params); |
|
733 |
query += ((filterByType==null)?"":" where "+filterByType+" "); |
|
735 |
|
|
734 | 736 |
return query; |
735 | 737 |
} |
736 | 738 |
/* |
... | ... | |
752 | 754 |
String clause= "claim.source_id like ?"; |
753 | 755 |
ArrayList<Object> clauseParams = new ArrayList<>(); |
754 | 756 |
clauseParams.add(contextId+'%'); |
757 |
String filterByType = addFilterByType(types, clauseParams); |
|
758 |
clause+= ((filterByType==null)?"":" and ("+filterByType+") "); |
|
755 | 759 |
String query = " select * from ("+" ( " +generateSelectclaimQuery(ClaimUtils.CONTEXT,ClaimUtils.PUBLICATION,limit, offset, orderBy,desc,clause,clauseParams, keyword, params)+")"+ |
756 |
") as claim "; |
|
757 |
String filterByType = addFilterByType(types, params); |
|
758 |
query += ((filterByType==null)?"":" where "+filterByType+" "); |
|
760 |
") as claim "; |
|
759 | 761 |
return query; |
760 | 762 |
} |
761 | 763 |
public String generateFetchClaimsByFunder(String funderId, Integer limit, Integer offset,String keyword, String orderBy, boolean desc, List<String> types, ArrayList<Object> params) { |
762 | 764 |
String whereClause = "source_id =source.openaire_id "; |
763 | 765 |
ArrayList<Object> whereParams = new ArrayList<>(); |
766 |
String filterByType = addFilterByType(types, whereParams); |
|
767 |
whereClause+= ((filterByType==null)?"":" and ("+filterByType+") "); |
|
764 | 768 |
String query = " select * from ("+" ( " +generateSelectclaimQuery(ClaimUtils.PROJECT,ClaimUtils.PUBLICATION, limit, offset, orderBy,desc,whereClause,whereParams, keyword, params)+" )"+ |
765 | 769 |
") as claim "; |
766 |
String filterByType = addFilterByType(types, params); |
|
767 |
query += ((filterByType==null)?"":" where "+filterByType+" "); |
|
768 | 770 |
|
771 |
|
|
769 | 772 |
return query; |
770 | 773 |
} |
771 | 774 |
public String generateFetchClaimsByResult(String resultId, Integer limit, Integer offset, String keyword, String orderBy, boolean desc, List<String> types, ArrayList<Object> params) { |
... | ... | |
773 | 776 |
ArrayList<Object> whereParams = new ArrayList<>(); |
774 | 777 |
whereParams.add(resultId); |
775 | 778 |
whereParams.add(resultId); |
779 |
String filterByType = addFilterByType(types, whereParams); |
|
780 |
queryWhereClause+= ((filterByType==null)?"":" and ("+filterByType+") "); |
|
776 | 781 |
String query = " select * from ("+" ( " +generateSelectclaimQuery(ClaimUtils.PUBLICATION,ClaimUtils.PUBLICATION, limit, offset, orderBy,desc,queryWhereClause,whereParams, keyword, params)+" ) \nunion "+ |
777 | 782 |
" ( " +generateSelectclaimQuery(ClaimUtils.PROJECT,ClaimUtils.PUBLICATION, limit, offset, orderBy,desc,queryWhereClause,whereParams, keyword, params)+" ) \nunion "+ |
778 | 783 |
" ( " +generateSelectclaimQuery(ClaimUtils.CONTEXT,ClaimUtils.PUBLICATION, limit, offset, orderBy,desc,queryWhereClause,whereParams, keyword, params)+" ) "+ |
779 | 784 |
") as claim "; |
780 |
String filterByType = addFilterByType(types, params); |
|
781 |
query += ((filterByType==null)?"":" where "+filterByType+" "); |
|
785 |
|
|
782 | 786 |
return query; |
783 | 787 |
|
784 | 788 |
} |
Also available in: Unified diff
fixing issues with ordering and types filter