You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2010/01/04 19:58:10 UTC
svn commit: r895747 - in /labs/magma/trunk:
foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java
website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
Author: simoneg
Date: Mon Jan 4 18:58:06 2010
New Revision: 895747
URL: http://svn.apache.org/viewvc?rev=895747&view=rev
Log:
Minor fixes on QBE
Modified:
labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
Modified: labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java?rev=895747&r1=895746&r2=895747&view=diff
==============================================================================
--- labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java (original)
+++ labs/magma/trunk/foundation-database/src/main/java/org/apache/magma/database/QueryByExampleBuilder.java Mon Jan 4 18:58:06 2010
@@ -137,7 +137,10 @@
clause += " AND x." + name + "<=";
clause += "?" + (params.size() + 1) + ")";
params.add(calendar.getTime());
- } else {
+ } else if
+ (Boolean.class.isAssignableFrom(type) ||
+ Boolean.TYPE.isAssignableFrom(type) ||
+ DatabasePersisted.class.isAssignableFrom(type)) {
Object val = rm.invoke(qbe);
if (val == null) continue;
clause = "x." + name;
Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java?rev=895747&r1=895746&r2=895747&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java Mon Jan 4 18:58:06 2010
@@ -55,6 +55,7 @@
private MagmaBeanSupport tempQbe = null;
private MagmaBeanSupport sessionReservedQbe = null;
private QueryByExampleBuilder qbuilder = null;
+ private boolean qbuilderused = false;
private Set<String> sortables = null;
private boolean withFilter = false;
@@ -104,6 +105,10 @@
protected void computeQbeQuery() {
if (this.qbuilder == null) {
this.qbuilder = new QueryByExampleBuilder();
+ }
+ // Avoid double query generation
+ if (!this.qbuilderused) {
+ this.qbuilderused = true;
Query bequery = this.qbuilder.generateQuery(sessionReservedQbe, this.myclass);
if (bequery.from != null) {
this.query = "SELECT x " + bequery.from + " " + bequery.query;
@@ -118,14 +123,19 @@
if (this.sessionReservedQbe != null) {
computeQbeQuery();
}
+ // A query could start with "SELECT" or directly with "WHERE"
StringBuilder countquery = new StringBuilder(this.query);
if (!this.query.toLowerCase().startsWith("select")) {
+ // If it starts with "WHERE" push a "SELECT COUNT(x) ...." before the WHERE
countquery.insert(0, "SELECT COUNT(x) FROM " + this.myclass.getName() + " x ");
} else {
+ // Check if it has a FROM clause
int index = this.query.toLowerCase().indexOf("from");
if (index == -1) {
+ // It starts with SELECT but has not FROM !?
countquery = null;
} else {
+ // Replace the SELECT ... FROM part with SELECT count(x) FROM
countquery.delete(0, index);
countquery.insert(0, "SELECT COUNT(x) ");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org