[jboss-svn-commits] JBL Code SVN: r7402 - in labs/jbossforums/branches/forums22/forums/src: main/org/jboss/portlet/forums/impl main/org/jboss/portlet/forums/model main/org/jboss/portlet/forums/ui resources/portal-forums-war/WEB-INF resources/portal-forums-war/views/category

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Nov 4 16:30:39 EST 2006


Author: unibrew
Date: 2006-11-04 16:30:34 -0500 (Sat, 04 Nov 2006)
New Revision: 7402

Modified:
   labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/impl/ForumsModuleImpl.java
   labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/model/Forum.java
   labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/ui/ForumUtil.java
   labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/WEB-INF/forums.taglib.xml
   labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/views/category/viewcategory_body.xhtml
Log:
[JBFORUMS-135] More efficient sollution of showing Forums' lastPosts.

Modified: labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/impl/ForumsModuleImpl.java
===================================================================
--- labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/impl/ForumsModuleImpl.java	2006-11-04 21:22:26 UTC (rev 7401)
+++ labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/impl/ForumsModuleImpl.java	2006-11-04 21:30:34 UTC (rev 7402)
@@ -45,6 +45,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Map;
 
 /**
  * @author <a href="mailto:theute at jboss.org">Thomas Heute </a>
@@ -1111,10 +1112,22 @@
       {
          Session session = getSession();
          Query query =
-            session.createQuery("from PostImpl as p where p.topic.forum  = :forumId order by p.createDate desc");
+            
+            // This is old query, considered as less efficient
+            //session.createQuery("from PostImpl as p where p.topic.forum  = :forumId order by p.createDate desc");
+            
+            session.createQuery("select p                           " + 
+                                "from PostImpl as p                 " +
+                                "join fetch p.poster                " + 
+                                "where p.createDate = (             " + 
+                                "   select MAX(topic.lastPostDate)  " + 
+                                "   from TopicImpl as topic         " + 
+                                "   where topic.forum = :forumId    " + 
+                                ")                                  " );
          query.setString("forumId", "" + forum.getId());
          query.setFirstResult(0);
          query.setMaxResults(1);
+         query.setCacheable(true);
          Post lastPost = (Post)query.uniqueResult();
          return lastPost;
       }

Modified: labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/model/Forum.java
===================================================================
--- labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/model/Forum.java	2006-11-04 21:22:26 UTC (rev 7401)
+++ labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/model/Forum.java	2006-11-04 21:30:34 UTC (rev 7402)
@@ -62,14 +62,14 @@
     *
     * @return DOCUMENT_ME
     */
-   Post getLastPost();
+   //Post getLastPost();
 
    /**
     * DOCUMENT_ME
     *
     * @param lastpost DOCUMENT_ME
     */
-   void setLastPost(Post lastpost);
+   //void setLastPost(Post lastpost);
 
    /**
     * DOCUMENT_ME

Modified: labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/ui/ForumUtil.java
===================================================================
--- labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/ui/ForumUtil.java	2006-11-04 21:22:26 UTC (rev 7401)
+++ labs/jbossforums/branches/forums22/forums/src/main/org/jboss/portlet/forums/ui/ForumUtil.java	2006-11-04 21:30:34 UTC (rev 7402)
@@ -38,7 +38,7 @@
 
 /**
  * @author <a href="mailto:sohil.shah at jboss.com">Sohil Shah</a>
- *
+ * @author <a href="mailto:ryszard.kozmik at jbos.scom">Ryszard Kozmik</a>
  */
 public class ForumUtil 
 {    
@@ -103,4 +103,12 @@
         return dateStr;
     }
     
+    public static Post getLastPost(ForumsModule fm, Forum forum) {
+        try {
+            return fm.findLastPost(forum);    
+        } catch (ModuleException e) {
+            return null;
+        }
+    }
+
 }

Modified: labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/WEB-INF/forums.taglib.xml
===================================================================
--- labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/WEB-INF/forums.taglib.xml	2006-11-04 21:22:26 UTC (rev 7401)
+++ labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/WEB-INF/forums.taglib.xml	2006-11-04 21:30:34 UTC (rev 7402)
@@ -44,6 +44,16 @@
   		<function-class>org.jboss.portlet.forums.ui.JSFUtil</function-class>
   		<function-signature>java.lang.String getErrorMsg()</function-signature>
 	</function>
+        <!--
+                function retrieves last post of specified in parameter forum
+        -->
+        <function>
+		<function-name>lastPost</function-name>
+  		<function-class>org.jboss.portlet.forums.ui.ForumUtil</function-class>
+  		<function-signature>
+                    org.jboss.portlet.forums.model.Post getLastPost(org.jboss.portlet.forums.ForumsModule,org.jboss.portlet.forums.model.Forum)
+                </function-signature>
+	</function>	
 	<!-- 
 		 function retrieves a message if one is found
 		 return null if nothing is found

Modified: labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/views/category/viewcategory_body.xhtml
===================================================================
--- labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/views/category/viewcategory_body.xhtml	2006-11-04 21:22:26 UTC (rev 7401)
+++ labs/jbossforums/branches/forums22/forums/src/resources/portal-forums-war/views/category/viewcategory_body.xhtml	2006-11-04 21:30:34 UTC (rev 7402)
@@ -91,22 +91,22 @@
 		        <td class="row2" align="center" valign="middle" height="50" nowrap="nowrap">
 		        	<span class="gensmall">        	    	
 		        	    <c:choose>
-		        	            <c:when test="#{forumrow.lastPost!=null}">
-			        				#{forumrow.lastPost.createDate}
+		        	            <c:when test="#{(forums:lastPost(category.module,forumrow))!=null}">
+			        				#{(forums:lastPost(category.module,forumrow)).createDate}
 			        				<br/>
 			        				<c:choose>
 				        				<c:when test="#{category.anonymous}">
-				        					${forumrow.lastPost.poster.user.userName} 
+				        					${(forums:lastPost(category.module,forumrow)).poster.user.userName} 
 				        				</c:when>
 				        				<c:otherwise>				        				    
 				        					<h:outputLink value="#{forums:outputLink(shared.links['profile'],true)}">
-				        						<f:param name="uid" value="#{forumrow.lastPost.poster.user.id}"/>
-				        						<h:outputText value="${forumrow.lastPost.poster.user.userName}"/>
+				        						<f:param name="uid" value="#{(forums:lastPost(category.module,forumrow)).poster.user.id}"/>
+				        						<h:outputText value="${(forums:lastPost(category.module,forumrow)).poster.user.userName}"/>
 				        					</h:outputLink>
 				        				</c:otherwise>
 			        				</c:choose>			                        
 			        				<h:outputLink value="#{forums:outputLink(shared.links['topic'],true)}" style="text-decoration: none;">
-			        					<f:param name="t" value="#{forumrow.lastPost.topic.id}"/>
+			        					<f:param name="t" value="#{(forums:lastPost(category.module,forumrow)).topic.id}"/>
 			        				    <f:verbatim>
 			        						<img border="0" src="#{forums:themeURL('resourceIconLatestReplyURL')}"/>
 			        					</f:verbatim>




More information about the jboss-svn-commits mailing list