Project

General

Profile

« Previous | Next » 

Revision ff732f0a

Added by Patrick Plitzner almost 8 years ago

  • ID ff732f0a45cd8539f08196159f54d69496300ffe
  • Parent 99f6841e

Load taxonNodes in SQL query (unstable) #5458

View differences:

src/main/java/eu/etaxonomy/cdm/vaadin/util/CdmQueryFactory.java
10 10
package eu.etaxonomy.cdm.vaadin.util;
11 11

  
12 12
import java.sql.SQLException;
13
import java.util.Iterator;
13 14
import java.util.List;
14 15

  
15 16
import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
......
50 51
        return generateQueryDelegate(SELECT_QUERY, COUNT_QUERY, CONTAINS_QUERY);
51 52
    }
52 53

  
53
    public static QueryDelegate generateTaxonDistributionQuery(List<String> termList, int classificationID) throws SQLException {
54
//    public static QueryDelegate generateTaxonDistributionQuery(List<String> termList, int classificationID) throws SQLException {
55
//        String FROM_QUERY =
56
//                " FROM TaxonNode tn " +
57
//                        "INNER JOIN TaxonBase tb on tn.taxon_id = tb.id " +
58
//                        "INNER JOIN Classification cl ON tn.classification_id = cl.id " +
59
//                        "LEFT OUTER JOIN TaxonNameBase tnb ON tnb.id=tb.id " +
60
//                        "LEFT OUTER JOIN DescriptionBase db ON db.taxon_id=tb.id " +
61
//                        "LEFT OUTER JOIN (SELECT indescription_id, area_id, status_id, DTYPE, id FROM DescriptionElementBase deb WHERE deb.DTYPE LIKE 'Distribution') AS deb ON deb.indescription_id=db.id " +
62
//                        "LEFT OUTER JOIN DefinedTermBase dtb on deb.status_id=dtb.id " +
63
//                        "LEFT OUTER JOIN DefinedTermBase dtb1 on deb.area_id=dtb1.id " +
64
//                        "LEFT OUTER JOIN DefinedTermBase dtb2 on tnb.rank_id = dtb2.id " +
65
//                        "WHERE tn.classification_id = "+ classificationID +" AND tb.DTYPE = 'Taxon'" ;
66
//
67
//        String GROUP_BY = " GROUP BY tb.id ";
68
//
69
//        String SELECT_QUERY=
70
//                "SELECT tb.DTYPE," +
71
//                        "tb.id, " +
72
//                        "tb.uuid, " +
73
//                        "tn.classification_id, " +
74
//                        "tb.titleCache AS Taxon, " +
75
//                        "dtb2.titleCache AS Rank, ";
76
//
77
//        int count = termList.size();
78
//        for(String term : termList){
79
//            if(count == 1){
80
//                SELECT_QUERY= SELECT_QUERY +
81
//                        "MAX( IF(dtb1.titleCache = '"+ term +"', dtb.titleCache, NULL) ) as '"+ term +"' " ;
82
//            }else{
83
//                SELECT_QUERY= SELECT_QUERY +
84
//                        "MAX( IF(dtb1.titleCache = '"+ term +"', dtb.titleCache, NULL) ) as '"+ term +"'," ;
85
//            }
86
//            count--;
87
//        }
88
//        SELECT_QUERY= SELECT_QUERY + FROM_QUERY + GROUP_BY;
89
//        String COUNT_QUERY = "SELECT count(DISTINCT tb.id)" + FROM_QUERY;
90
////        String CONTAINS_QUERY = "SELECT * FROM TaxonNode tn WHERE tn.id = ?";
91
//        String CONTAINS_QUERY = "SELECT * FROM TaxonBase tb WHERE tb.uuid = ?";
92
//
93
//        return generateQueryDelegate(SELECT_QUERY, COUNT_QUERY, CONTAINS_QUERY);
94
//    }
95

  
96
    public static QueryDelegate generateTaxonDistributionQuery(List<String> termList, List<Integer> taxonNodeIds) throws SQLException {
97
        String idArray = "";
98
        Iterator<Integer> nodeIterator = taxonNodeIds.iterator();
99
        while (nodeIterator.hasNext()) {
100
            idArray += nodeIterator.next();
101
            if(nodeIterator.hasNext()){
102
                idArray += ", ";
103
            }
104
        }
54 105
        String FROM_QUERY =
55 106
        		" FROM TaxonNode tn " +
56 107
        		"INNER JOIN TaxonBase tb on tn.taxon_id = tb.id " +
......
61 112
        		"LEFT OUTER JOIN DefinedTermBase dtb on deb.status_id=dtb.id " +
62 113
        		"LEFT OUTER JOIN DefinedTermBase dtb1 on deb.area_id=dtb1.id " +
63 114
        		"LEFT OUTER JOIN DefinedTermBase dtb2 on tnb.rank_id = dtb2.id " +
64
        		"WHERE tn.classification_id = "+ classificationID +" AND tb.DTYPE = 'Taxon'" ;
115
        		"WHERE tn.id IN ("+ idArray +") AND tb.DTYPE = 'Taxon'" ;
65 116

  
66 117
        String GROUP_BY = " GROUP BY tb.id ";
67 118

  

Also available in: Unified diff