[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