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