[jboss-cvs] JBossBlog SVN: r182 - in trunk/src: action/org/jboss/blog/session/feed and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 25 12:41:09 EST 2008


Author: adamw
Date: 2008-01-25 12:41:09 -0500 (Fri, 25 Jan 2008)
New Revision: 182

Added:
   trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedStack.java
Modified:
   trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
   trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
   trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
Log:


Modified: trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -29,7 +29,9 @@
         } else {
             //noinspection unchecked
             List<? extends RestrictedPost> posts = (List<? extends RestrictedPost>) invocation.proceed();
-            cacheManager.putFeedPosts(feed, posts, from, to);
+            if (posts != null) {
+                cacheManager.putFeedPosts(feed, posts, from, to);
+            }
 
             return posts;
         }

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -44,12 +44,6 @@
         return entityManager.createQuery("select group from Group group order by group.name").getResultList();
     }
 
-    /* TODO: remove @SuppressWarnings("unchecked")
-    public List<Feed> getAllFeeds() {
-        log.debug("Reading a list of all feeds from the DB.");
-        return entityManager.createQuery("select feed from Feed feed order by feed.name").getResultList();
-    } */
-
     public Post getPost(String titleAsId) throws PostNotFoundException {
         log.debug("Reading post '#0' from the DB.", titleAsId);
         try {

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -1,13 +1,9 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.feed.AggregatedFeed;
-import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Group;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.feed.posts.AggregatedFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
-import org.jboss.blog.session.feed.type.FeedTypes;
-import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -35,28 +31,4 @@
     public void update() {
 
     }
-
-    public boolean linkedTo(Feed feed) {
-        if (GeneralTools.objectsEqual(aggregatedFeed, feed)) {
-            return true;
-        }
-
-        FeedTypes feedTypes = (FeedTypes) Component.getInstance("feedTypes");
-
-        for (Feed containedFeed : aggregatedFeed.getFeeds().keySet()) {
-            if (feedTypes.getFeedDao(containedFeed).linkedTo(feed)) {
-                return true;
-            }
-        }
-
-        for (Group group : aggregatedFeed.getGroups().keySet()) {
-            for (Feed containedFeed : group.getFeeds()) {
-                if (feedTypes.getFeedDao(containedFeed).linkedTo(feed)) {
-                    return true;
-                }
-            }
-        }
-
-        return false;
-    }
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -1,7 +1,6 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.feed.Feed;
 
 import java.util.List;
 
@@ -12,6 +11,4 @@
     public List<? extends RestrictedPost> getPosts(int from, int to);
 
     public void update();
-
-    public boolean linkedTo(Feed feed);
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -1,12 +1,10 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.feed.RemoteFeed;
-import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.feed.update.RemoteFeedUpdate;
-import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -34,8 +32,4 @@
     public void update() {
         ((RemoteFeedUpdate) Component.getInstance("remoteFeedUpdate")).update(remoteFeed);
     }
-
-    public boolean linkedTo(Feed feed) {
-        return GeneralTools.objectsEqual(remoteFeed, feed);
-    }
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -7,12 +7,11 @@
 import org.jboss.blog.model.post.PostFilter;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.session.feed.InvalidFeedTypeException;
-import org.jboss.blog.session.feed.dao.FeedDao;
-import org.jboss.blog.session.feed.type.FeedTypes;
 import org.jboss.blog.session.feed.posts.filter.AndFilter;
 import org.jboss.blog.session.view.LinkServiceBean;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.ScopeType;
+import org.jboss.seam.core.Events;
 import org.jboss.seam.faces.FacesMessages;
 import org.jboss.seam.annotations.*;
 
@@ -42,9 +41,6 @@
     @In
     private LinkServiceBean linkService;
 
-    @In
-    private FeedTypes feedTypes;
-
     private AggregatedFeed aggregatedFeed;
 
     private List<Feed> availableFeeds;
@@ -117,20 +113,13 @@
         availableGroups = feedsService.getAllGroups();
         availableFeeds = new ArrayList<Feed>();
 
-        for (Iterator<Group> iter = availableGroups.iterator(); iter.hasNext();) {
-            for (Feed nextFeed : iter.next().getFeeds()) {
+        for (Group availableGroup : availableGroups) {
+            for (Feed nextFeed : availableGroup.getFeeds()) {
                 if (GeneralTools.objectsEqual(nextFeed, getAggregatedFeed())) {
-                    // Allowing aggregating a group, in which this feed is contained.
                     continue;
                 }
 
-                FeedDao nextFeedDao = feedTypes.getFeedDao(nextFeed);
-
-                if (nextFeedDao.linkedTo(getAggregatedFeed())) {
-                    iter.remove();
-                } else {
-                    availableFeeds.add(nextFeed);
-                }
+                availableFeeds.add(nextFeed);
             }
         }
 
@@ -225,5 +214,7 @@
 
         facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.aggregated.updated",
                 getAggregatedFeed().getName());
+
+        Events.instance().raiseEvent("org.jboss.blog.feed.updated", getAggregatedFeed().getName());
     }
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -7,6 +7,7 @@
 import org.jboss.blog.session.parser.ParserService;
 import org.jboss.blog.tools.StringTools;
 import org.jboss.seam.ScopeType;
+import org.jboss.seam.core.Events;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Scope;
@@ -103,5 +104,7 @@
 
         facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.remote.updated",
                 getRemoteFeed().getName());
+
+        Events.instance().raiseEvent("org.jboss.blog.feed.updated", getRemoteFeed().getName());
     }
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -3,6 +3,7 @@
 import org.jboss.blog.model.feed.AggregatedFeed;
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.Group;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.blog.model.post.PostFilter;
@@ -22,6 +23,9 @@
     @In
     private FeedsService feedsService;
 
+    @In
+    private AggregatedFeedStack aggregatedFeedStack;
+
     private void filterPostList(List<? extends RestrictedPost> posts, PostFilter filter) {
         for (Iterator<? extends RestrictedPost> iter = posts.iterator(); iter.hasNext();) {
             if (!filter.filter(iter.next())) {
@@ -32,21 +36,30 @@
 
     @SuppressWarnings("unchecked")
     public List<? extends RestrictedPost> getPosts(AggregatedFeed aggregatedFeed, int from, int to) {
-        /*return entityManager.createQuery(
-                "select post from Post post " +
-                        "where post.feed in " +
-                        "(select feed from AggregatedFeed af, Feed feed where af = ?1 and feed in elements(af.feeds)) " +
-                        "order by post.published desc, post.link")
-                .setParameter(1, feed).setMaxResults(to-from).setFirstResult(from).getResultList();*/
+        if (aggregatedFeedStack.contains(aggregatedFeed)) {
+            return null;
+        }
 
+        // Adding this feed to the stack, so it's posts won't be read again.
+        aggregatedFeedStack.push(aggregatedFeed);        
+
         Map<Feed, PostFilter> feedsAndFilters = aggregatedFeed.getFeeds();
+
+        Map<Group, PostFilter> groupsAndFilters = aggregatedFeed.getGroups();
+        for (Group group : groupsAndFilters.keySet()) {
+            PostFilter groupFilter = groupsAndFilters.get(group);
+            for (Feed feedInGroup : group.getFeeds()) {
+                feedsAndFilters.put(feedInGroup, groupFilter);
+            }
+        }
+
         PostFilter globalFilter = aggregatedFeed.getGlobalFilter(); 
 
         // Initial list of aggregated feeds.
         Set<Feed> availableFeeds = feedsAndFilters.keySet();
 
         // Generating the list of posts.
-        List<RestrictedPost> posts = new ArrayList<RestrictedPost>();
+        SortedSet<RestrictedPost> posts = new TreeSet<RestrictedPost>();
 
         // Bounds for the number of posts read from each feed.
         int feedPostsFrom = 0;
@@ -59,6 +72,10 @@
             for (Feed feed : availableFeeds) {
                 List<? extends RestrictedPost> feedPosts = feedsService.getPosts(feed, feedPostsFrom, feedPostsTo);
 
+                if (feedPosts == null) {
+                    continue;
+                }
+
                 // Checking if this feed has any more posts; if so, remembering it so it can be checked for more posts,
                 // if needed.
                 if (feedPosts.size() == feedPostsTo-feedPostsFrom) {
@@ -80,10 +97,10 @@
             feedPostsTo += to;
         } while (availableFeeds.size() != 0 && posts.size() < to);
 
-        // Sort the posts
-        Collections.sort(posts);
+        // Popping this feed from the stack.
+        aggregatedFeedStack.pop();
 
         // Cut the list to the desired length
-        return GeneralTools.subList(posts, from, to);
+        return GeneralTools.subList(new ArrayList(posts), from, to);
     }
 }

Added: trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedStack.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedStack.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedStack.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -0,0 +1,38 @@
+package org.jboss.blog.session.feed.posts;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.model.feed.AggregatedFeed;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("aggregatedFeedStack")
+ at Scope(ScopeType.CONVERSATION)
+ at AutoCreate
+public class AggregatedFeedStack {
+    private List<AggregatedFeed> stack;
+
+    @PostConstruct
+    public void initStack() {
+        stack = new ArrayList<AggregatedFeed>();
+    }
+
+    public void push(AggregatedFeed feed) {
+        stack.add(feed);
+    }
+
+    public void pop() {
+        stack.remove(stack.size()-1);
+    }
+
+    public boolean contains(AggregatedFeed feed) {
+        return stack.contains(feed);
+    }
+}

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-24 21:00:16 UTC (rev 181)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-25 17:41:09 UTC (rev 182)
@@ -16,8 +16,6 @@
 public interface FeedsService {
     List<Group> getAllGroups();
 
-    // remove ? List<? extends RestrictedFeed> getAllFeeds();
-
     Post getPost(String titleAsId) throws PostNotFoundException;
 
     Feed getFeed(String feedName) throws FeedNotFoundException;




More information about the jboss-cvs-commits mailing list