[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