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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to