[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