You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/02/27 19:59:37 UTC

svn commit: r512361 - /incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java

Author: snoopdave
Date: Tue Feb 27 10:59:36 2007
New Revision: 512361

URL: http://svn.apache.org/viewvc?view=rev&rev=512361
Log:
Using JOIN rather than sub-select in getWebsites() query.

Modified:
    incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java

Modified: incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java?view=diff&rev=512361&r1=512360&r2=512361
==============================================================================
--- incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java (original)
+++ incubator/roller/branches/roller_4.0/src/org/apache/roller/business/jpa/JPAUserManagerImpl.java Tue Feb 27 10:59:36 2007
@@ -541,10 +541,18 @@
         int size = 0;
         StringBuffer queryString = new StringBuffer();
         StringBuffer whereClause = new StringBuffer();
-        
-        queryString.append("SELECT w FROM WebsiteData w WHERE ");
-                     
+                
+        if (user != null) {
+            queryString.append("SELECT w FROM WebsiteData w WHERE ");
+        } else {
+            queryString.append("SELECT w FROM WebsiteData w JOIN PermissionsData p WHERE ");
+            params.add(size++, user);
+            whereClause.append(" p.user = ?" + size);
+            params.add(size++, Boolean.FALSE);
+            whereClause.append(" p.pending = ?" + size);
+        }    
         if (startDate != null) {
+            if (whereClause.length() > 0) whereClause.append(" AND ");
             params.add(size++, startDate);
             whereClause.append(" w.dateCreated > ?" + size);
         }
@@ -562,13 +570,6 @@
             if (whereClause.length() > 0) whereClause.append(" AND ");
             params.add(size++, active);
             whereClause.append(" w.active = ?" + size);
-        }
-        if (user != null) {    
-            whereClause.append(" AND EXISTS (SELECT p from PermissionsData p WHERE p.website = w ");
-            params.add(size++, user);         
-            whereClause.append("    AND p.user = ?" + size);
-            params.add(size++, Boolean.FALSE);
-            whereClause.append("    AND p.pending = ?" + size + ")");   
         }
         whereClause.append(" ORDER BY w.dateCreated DESC");