Revision ff732f0a
Added by Patrick Plitzner almost 8 years ago
- ID ff732f0a45cd8539f08196159f54d69496300ffe
- Parent 99f6841e
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
Load taxonNodes in SQL query (unstable) #5458