[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory ...
Christian Bauer
christian at hibernate.org
Tue Dec 18 23:29:19 EST 2007
User: cbauer
Date: 07/12/18 23:29:19
Modified: examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory
BlogEntry.java BlogDAO.java BlogDirectory.java
Log:
Major rewrite of the most of the application
Revision Changes Path
1.5 +6 -6 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogEntry.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BlogEntry.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogEntry.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- BlogEntry.java 25 Aug 2007 17:59:21 -0000 1.4
+++ BlogEntry.java 19 Dec 2007 04:29:19 -0000 1.5
@@ -1,30 +1,30 @@
package org.jboss.seam.wiki.plugin.blogdirectory;
-import org.jboss.seam.wiki.core.model.Document;
+import org.jboss.seam.wiki.core.model.WikiDocument;
import java.io.Serializable;
public class BlogEntry implements Serializable {
- Document entryDocument;
+ WikiDocument entryDocument;
Long commentCount;
public BlogEntry() {}
- public BlogEntry(Document entryDocument) {
+ public BlogEntry(WikiDocument entryDocument) {
this.entryDocument = entryDocument;
}
- public BlogEntry(Document entryDocument, Long commentCount) {
+ public BlogEntry(WikiDocument entryDocument, Long commentCount) {
this.entryDocument = entryDocument;
this.commentCount = commentCount;
}
- public Document getEntryDocument() {
+ public WikiDocument getEntryDocument() {
return entryDocument;
}
- public void setEntryDocument(Document entryDocument) {
+ public void setEntryDocument(WikiDocument entryDocument) {
this.entryDocument = entryDocument;
}
1.10 +58 -43 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogDAO.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BlogDAO.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogDAO.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- BlogDAO.java 9 Nov 2007 15:08:25 -0000 1.9
+++ BlogDAO.java 19 Dec 2007 04:29:19 -0000 1.10
@@ -1,16 +1,19 @@
package org.jboss.seam.wiki.plugin.blogdirectory;
-import org.jboss.seam.wiki.core.model.Node;
import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.wiki.core.model.WikiDocument;
+import org.jboss.seam.wiki.core.model.WikiDirectory;
+import org.jboss.seam.wiki.core.model.WikiNode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
+import org.hibernate.transform.AliasToBeanResultTransformer;
import javax.persistence.EntityManager;
import java.util.List;
+import java.util.ArrayList;
@Name("blogDAO")
@AutoCreate
@@ -19,8 +22,8 @@
@In
protected EntityManager restrictedEntityManager;
- public List<BlogEntry> findBlogEntriesWithCommentCount(Node startNode,
- Node ignoreNode,
+ public List<BlogEntry> findBlogEntriesWithCommentCount(WikiDirectory startDir,
+ WikiDocument ignoreDoc,
String orderByProperty,
boolean orderDescending,
long firstResult,
@@ -28,49 +31,42 @@
Integer year,
Integer month,
Integer day,
- String tag) {
+ final String tag) {
StringBuilder queryString = new StringBuilder();
- queryString.append("select n1 as entryDocument").append(", ");
- queryString.append("(select count(c) from Comment c where c.document.id = n1.id) as commentCount").append(" ");
+ queryString.append("select d as entryDocument").append(", ");
+ queryString.append("(select count(c) from WikiComment c where c.file = d) as commentCount").append(" ");
- queryString.append("from ").append(startNode.getTreeSuperclassEntityName()).append(" n1, ");
- queryString.append(startNode.getTreeSuperclassEntityName()).append(" n2 ");
- queryString.append("fetch all properties").append(" ");
- queryString.append("where n1.nsThread = :thread and n2.nsThread = :thread").append(" ");
- queryString.append("and n1.nsLeft between n2.nsLeft and n2.nsRight").append(" ");
- queryString.append("and n2.nsLeft > :startLeft and n2.nsRight < :startRight").append(" ");
- queryString.append("and n2.class = :clazz").append(" ");
+ queryString.append("from WikiDocument d fetch all properties where d.parent.id in").append(" ");
+ queryString.append("(");
+ queryString.append("select d1.id from ").append(startDir.getTreeSuperclassEntityName()).append(" d1, ");
+ queryString.append(startDir.getTreeSuperclassEntityName()).append(" d2 ");
+ queryString.append("where d1.nsThread = :thread and d2.nsThread = :thread").append(" ");
+ queryString.append("and d1.nsLeft between d2.nsLeft and d2.nsRight").append(" ");
+ queryString.append("and d2.nsLeft >= :startLeft and d2.nsRight <= :startRight").append(" ");
+ queryString.append(")");
+
+ if (ignoreDoc != null && ignoreDoc.getId() != null)
+ queryString.append("and not d = :ignoreDoc").append(" ");
+
+ queryString.append("and not d.macros like '%blogDirectory%'").append(" ");
+ queryString.append("and not d.macros like '%feedTeasers%'").append(" ");
+
+ if (year != null) queryString.append("and year(d.createdOn) = :limitYear").append(" ");
+ if (month != null) queryString.append("and month(d.createdOn) = :limitMonth").append(" ");
+ if (day != null) queryString.append("and day(d.createdOn) = :limitDay").append(" ");
+ if (tag != null && tag.length()>0) queryString.append("and d.tags like :tag").append(" ");
- if (ignoreNode.getId() != null)
- queryString.append("and not n1 = :ignoreNode").append(" ");
-
- queryString.append("and not n1.macros like '%blogDirectory%'").append(" ");
- queryString.append("and not n1.macros like '%feedTeasers%'").append(" ");
-
- if (year != null) queryString.append("and year(n1.createdOn) = :limitYear").append(" ");
- if (month != null) queryString.append("and month(n1.createdOn) = :limitMonth").append(" ");
- if (day != null) queryString.append("and day(n1.createdOn) = :limitDay").append(" ");
- if (tag != null && tag.length()>0) queryString.append("and n1.tags like :tag").append(" ");
-
- queryString.append("group by").append(" ");
- for (int i = 0; i < startNode.getTreeSuperclassPropertiesForGrouping().length; i++) {
- queryString.append("n1.").append(startNode.getTreeSuperclassPropertiesForGrouping()[i]);
- if (i != startNode.getTreeSuperclassPropertiesForGrouping().length-1) queryString.append(", ");
- }
- queryString.append(" ");
-
- queryString.append("order by n1.").append(orderByProperty).append(" ");
+ queryString.append("order by d.").append(orderByProperty).append(" ");
queryString.append( orderDescending ? "desc" : "asc").append("");
Query nestedSetQuery = getSession().createQuery(queryString.toString());
- nestedSetQuery.setParameter("thread", startNode.getNsThread());
- nestedSetQuery.setParameter("startLeft", startNode.getNsLeft());
- nestedSetQuery.setParameter("startRight", startNode.getNsRight());
- nestedSetQuery.setParameter("clazz", "DOCUMENT"); // TODO: Hibernate can't bind the discriminator? Not even with Hibernate.CLASS type...
- if (ignoreNode.getId() != null)
- nestedSetQuery.setParameter("ignoreNode", ignoreNode);
+ nestedSetQuery.setParameter("thread", startDir.getNsThread());
+ nestedSetQuery.setParameter("startLeft", startDir.getNsLeft());
+ nestedSetQuery.setParameter("startRight", startDir.getNsRight());
+ if (ignoreDoc != null && ignoreDoc.getId() != null)
+ nestedSetQuery.setParameter("ignoreDoc", ignoreDoc);
if (year != null) nestedSetQuery.setParameter("limitYear", year);
if (month != null) nestedSetQuery.setParameter("limitMonth", month);
@@ -79,20 +75,35 @@
nestedSetQuery.setFirstResult( new Long(firstResult).intValue() );
nestedSetQuery.setMaxResults( new Long(maxResults).intValue() );
- nestedSetQuery.setResultTransformer(Transformers.aliasToBean(BlogEntry.class));
+ nestedSetQuery.setResultTransformer(
+ new AliasToBeanResultTransformer(BlogEntry.class) {
+ public Object transformTuple(Object[] result, String[] aliases) {
+ WikiDocument doc = (WikiDocument)result[0];
+ if (tag == null || doc.isTagged(tag)) {
+ return super.transformTuple(result, aliases);
+ }
+ return null;
+ }
+ public List transformList(List list) {
+ List listWithoutNulls = new ArrayList();
+ for (Object o : super.transformList(list)) if (o != null) listWithoutNulls.add(o);
+ return listWithoutNulls;
+ }
+ }
+ );
return (List<BlogEntry>)nestedSetQuery.list();
}
- public Long countBlogEntries(Node startNode, Node ignoreNode, Integer year, Integer month, Integer day, String tag) {
+ public Long countBlogEntries(WikiNode startNode, WikiNode ignoreNode, Integer year, Integer month, Integer day, String tag) {
return countBlogEntries(startNode, ignoreNode, false, false, false, year, month, day, tag).get(0).getNumOfEntries();
}
- public List<BlogEntryCount> countAllBlogEntriesGroupByYearMonth(Node startNode, Node ignoreNode, String tag) {
+ public List<BlogEntryCount> countAllBlogEntriesGroupByYearMonth(WikiNode startNode, WikiNode ignoreNode, String tag) {
return countBlogEntries(startNode, ignoreNode, true, true, false, null, null, null, tag);
}
- private List<BlogEntryCount> countBlogEntries(Node startNode, Node ignoreNode,
+ private List<BlogEntryCount> countBlogEntries(WikiNode startNode, WikiNode ignoreNode,
boolean projectYear, boolean projectMonth, boolean projectDay,
Integer limitYear, Integer limitMonth, Integer limitDay,
String tag) {
@@ -106,8 +117,10 @@
if (projectDay) queryString.append(", ").append("day(n1.createdOn) as day");
queryString.append(" ");
+ /*
queryString.append("from ").append(startNode.getTreeSuperclassEntityName()).append(" n1, ");
queryString.append(startNode.getTreeSuperclassEntityName()).append(" n2 ");
+ */
queryString.append("where n1.nsThread = :thread and n2.nsThread = :thread").append(" ");
queryString.append("and n1.nsLeft between n2.nsLeft and n2.nsRight").append(" ");
queryString.append("and n2.nsLeft > :startLeft and n2.nsRight < :startRight").append(" ");
@@ -136,9 +149,11 @@
queryString.append(" ");
Query nestedSetQuery = getSession().createQuery(queryString.toString());
+ /*
nestedSetQuery.setParameter("thread", startNode.getNsThread());
nestedSetQuery.setParameter("startLeft", startNode.getNsLeft());
nestedSetQuery.setParameter("startRight", startNode.getNsRight());
+ */
nestedSetQuery.setParameter("clazz", "DOCUMENT"); // TODO: Hibernate can't bind the discriminator? Not even with Hibernate.CLASS type...
if (ignoreNode.getId() != null)
nestedSetQuery.setParameter("ignoreNode", ignoreNode);
1.20 +6 -6 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogDirectory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: BlogDirectory.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/plugin/blogdirectory/BlogDirectory.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- BlogDirectory.java 12 Oct 2007 16:31:27 -0000 1.19
+++ BlogDirectory.java 19 Dec 2007 04:29:19 -0000 1.20
@@ -12,9 +12,9 @@
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.web.RequestParameter;
import org.jboss.seam.annotations.datamodel.DataModel;
-import org.jboss.seam.wiki.core.dao.NodeDAO;
-import org.jboss.seam.wiki.core.model.Directory;
-import org.jboss.seam.wiki.core.model.Document;
+import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
+import org.jboss.seam.wiki.core.model.WikiDirectory;
+import org.jboss.seam.wiki.core.model.WikiDocument;
import org.jboss.seam.wiki.util.WikiUtil;
import java.io.Serializable;
@@ -25,16 +25,16 @@
public class BlogDirectory implements Serializable {
@In
- NodeDAO nodeDAO;
+ WikiNodeDAO wikiNodeDAO;
@In
BlogDAO blogDAO;
@In
- Directory currentDirectory;
+ WikiDirectory currentDirectory;
@In
- Document currentDocument;
+ WikiDocument currentDocument;
private Integer page = 0;
private Integer year;
More information about the jboss-cvs-commits
mailing list