[jboss-cvs] JBossBlog SVN: r181 - in trunk: src/action/org/jboss/blog/session/cache and 18 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 24 16:00:16 EST 2008
Author: adamw
Date: 2008-01-24 16:00:16 -0500 (Thu, 24 Jan 2008)
New Revision: 181
Added:
trunk/src/model/org/jboss/blog/model/RestrictedCategory.java
trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java
trunk/src/model/org/jboss/blog/model/RestrictedPost.java
trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
Removed:
trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedInterceptor.java
trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedsInterceptor.java
trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostInterceptor.java
trunk/src/action/org/jboss/blog/session/converter/writeable/
Modified:
trunk/resources/WEB-INF/pages.xml
trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java
trunk/src/action/org/jboss/blog/session/converter/FeedConverter.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/posts/AggregatedFeedPosts.java
trunk/src/action/org/jboss/blog/session/feed/posts/DatabaseFeedPosts.java
trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java
trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java
trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java
trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java
trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java
trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java
trunk/src/action/org/jboss/blog/session/merge/FeedsServicePostsIterator.java
trunk/src/action/org/jboss/blog/session/merge/ListPostsIterator.java
trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
trunk/src/action/org/jboss/blog/session/merge/PostsIterator.java
trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
trunk/src/model/org/jboss/blog/model/Category.java
trunk/src/model/org/jboss/blog/model/Enclosure.java
trunk/src/model/org/jboss/blog/model/Post.java
trunk/src/model/org/jboss/blog/model/feed/Feed.java
trunk/src/model/org/jboss/blog/model/post/PostFilter.java
trunk/src/services/org/jboss/blog/service/FeedsService.java
trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
trunk/view/home.xhtml
trunk/view/manage/index.xhtml
Log:
Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/resources/WEB-INF/pages.xml 2008-01-24 21:00:16 UTC (rev 181)
@@ -52,7 +52,7 @@
<page view-id="/manage/feed_edit.xhtml">
<begin-conversation flush-mode="manual" join="true" />
- <param name="name" converterId="writeableFeedConverter" value="#{feedMod.feed}" />
+ <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
<navigation from-action="#{feedMod.saveExisting}">
<end-conversation />
<redirect view-id="/manage/index.xhtml" />
@@ -60,7 +60,7 @@
</page>
<page view-id="/manage/feed_delete.xhtml">
- <param name="name" converterId="writeableFeedConverter" value="#{feedMod.feed}" />
+ <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
<navigation from-action="#{feedMod.delete}">
<redirect view-id="/manage/index.xhtml" />
</navigation>
@@ -77,7 +77,7 @@
<page view-id="/manage/remote/remote_edit.xhtml">
<begin-conversation flush-mode="manual" join="true" />
- <param name="name" converterId="writeableFeedConverter" value="#{feedMod.feed}" />
+ <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
<navigation from-action="#{remoteFeedMod.saveExisting}">
<end-conversation />
<redirect view-id="/manage/index.xhtml" />
@@ -109,7 +109,7 @@
<page view-id="/manage/aggregated/aggregated_edit.xhtml">
<begin-conversation flush-mode="manual" join="true" />
- <param name="name" converterId="writeableFeedConverter" value="#{feedMod.feed}" />
+ <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
<navigation from-action="#{aggregatedFeedMod.saveExisting}">
<end-conversation />
<redirect view-id="/manage/index.xhtml" />
Modified: trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManager.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManager.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -8,14 +8,15 @@
import org.jboss.cache.aop.PojoCache;
import org.jboss.cache.Fqn;
import org.jboss.cache.CacheException;
-import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.feed.RestrictedFeed;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.session.xml.content.InMemoryContentResponse;
import java.lang.ref.SoftReference;
import java.util.List;
/**
+ * TODO: check Soft References
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Name("cacheManager")
@@ -40,113 +41,52 @@
return reference.get();
}
- //
-
- public void evictAll() {
- try {
- log.debug("Evicting all feeds from the cache.");
- pojoCache.remove(BASE_FQN);
- } catch (CacheException e) {
- log.error(e);
- }
+ private void readPost(RestrictedPost post) {
+ post.getFeed();
+ post.getCategories();
+ post.getEnclosures();
}
- //
-
- private final static Object ALL_FEEDS = new Object();
-
- private Fqn getAllFeedsListFqn() {
- return new Fqn(BASE_FQN, ALL_FEEDS);
- }
-
- public void putAllFeedsList(List<Feed> feeds) {
- try {
- log.debug("Putting all feeds list into the cache.");
- pojoCache.put(getAllFeedsListFqn(), CACHE_MAP_KEY, new SoftReference<List<Feed>>(feeds));
- } catch (CacheException e) {
- log.error(e);
+ private void readPosts(List<? extends RestrictedPost> posts) {
+ for (RestrictedPost post : posts) {
+ readPost(post);
}
}
- public List<Feed> getAllFeedsList() {
- try {
- //noinspection unchecked
- List<Feed> inCache = getFromSoftReference((SoftReference<List<Feed>>) pojoCache.get(getAllFeedsListFqn(),
- CACHE_MAP_KEY));
- log.debug("Getting all feeds list from the cache, result: #0.", inCache);
- return inCache;
- } catch (CacheException e) {
- log.error(e);
- return null;
- }
- }
-
- public void evictAllFeedsList() {
- try {
- log.debug("Evicting all feeds list from the cache.");
- pojoCache.remove(getAllFeedsListFqn());
- } catch (CacheException e) {
- log.error(e);
- }
- }
-
//
- private Fqn getFeedFqn(String feedName) {
- return new Fqn(BASE_FQN, feedName);
- }
-
- public void putFeed(Feed feed) {
+ public void evictAll() {
try {
- log.debug("Putting feed '#0' into the cache.", feed.getName());
- pojoCache.put(getFeedFqn(feed.getName()), CACHE_MAP_KEY, new SoftReference<Feed>(feed));
+ log.debug("Evicting everything from the cache.");
+ pojoCache.remove(BASE_FQN);
} catch (CacheException e) {
log.error(e);
}
}
- public Feed getFeed(String feedName) {
- try {
- //noinspection unchecked
- Feed inCache = getFromSoftReference((SoftReference<Feed>) pojoCache.get(getFeedFqn(feedName),
- CACHE_MAP_KEY));
- log.debug("Getting feed '#0' from the cache, result: #1.", feedName, inCache);
- return inCache;
- } catch (CacheException e) {
- log.error(e);
- return null;
- }
- }
-
- public void evictFeed(String feedName) {
- try {
- log.debug("Evicting feed '#0' from the cache.", feedName);
- pojoCache.remove(getFeedFqn(feedName));
- } catch (CacheException e) {
- log.error(e);
- }
- }
-
//
private Fqn getFeedPostsFqn(String feedName, int from, int to) {
return new Fqn(BASE_FQN, feedName, from, to);
}
- public void putFeedPosts(Feed feed, List<Post> posts, int from, int to) {
+ public void putFeedPosts(RestrictedFeed feed, List<? extends RestrictedPost> posts, int from, int to) {
try {
+ readPosts(posts);
+
log.debug("Putting feed '#0' posts into the cache, from #1 to #2.", feed.getName(), from, to);
pojoCache.put(getFeedPostsFqn(feed.getName(), from, to), CACHE_MAP_KEY,
- new SoftReference<List<Post>>(posts));
+ new SoftReference<List<? extends RestrictedPost>>(posts));
} catch (CacheException e) {
log.error(e);
}
}
- public List<Post> getFeedPosts(String feedName, int from, int to) {
+ public List<? extends RestrictedPost> getFeedPosts(String feedName, int from, int to) {
try {
//noinspection unchecked
- List<Post> inCache = getFromSoftReference(((SoftReference<List<Post>>) pojoCache.get(
+ List<? extends RestrictedPost> inCache =
+ getFromSoftReference(((SoftReference<List<? extends RestrictedPost>>) pojoCache.get(
getFeedPostsFqn(feedName, from, to), CACHE_MAP_KEY)));
log.debug("Getting feed '#0' posts from the cache, from #1 to #2, result: #3.",
feedName, from, to, inCache);
@@ -188,35 +128,4 @@
return null;
}
}
-
- //
-
- private final static Object POSTS_INDIVIDUAL = new Object();
-
- private Fqn getPostFqn(String titleAsId) {
- return new Fqn(BASE_FQN, POSTS_INDIVIDUAL, titleAsId);
- }
-
- public void putPost(Post post) {
- try {
- log.debug("Putting post '#0' into the cache.", post.getTitleAsId());
- pojoCache.put(getPostFqn(post.getTitleAsId()), CACHE_MAP_KEY,
- new SoftReference<Post>(post));
- } catch (CacheException e) {
- log.error(e);
- }
- }
-
- public Post getPost(String titleAsId) {
- try {
- //noinspection unchecked
- Post inCache = getFromSoftReference(((SoftReference<Post>) pojoCache.get(getPostFqn(titleAsId),
- CACHE_MAP_KEY)));
- log.debug("Getting post '#0' from the cache, result: #1.", titleAsId, inCache);
- return inCache;
- } catch (CacheException e) {
- log.error(e);
- return null;
- }
- }
}
Deleted: trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedInterceptor.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedInterceptor.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedInterceptor.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,40 +0,0 @@
-package org.jboss.blog.session.cache;
-
-import org.jboss.seam.annotations.intercept.Interceptor;
-import org.jboss.seam.Component;
-import org.jboss.blog.model.feed.Feed;
-
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.InvocationContext;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Interceptor(stateless = true)
-public class FeedsServiceGetFeedInterceptor {
- @AroundInvoke
- public Object cacheFeed(InvocationContext invocation) throws Exception {
- CacheManager cacheManager = (CacheManager) Component.getInstance("cacheManager");
-
- String feedName = (String) invocation.getParameters()[0];
- Boolean writeable = false;
- if (invocation.getParameters().length > 1) {
- writeable = (Boolean) invocation.getParameters()[1];
- }
-
- if (writeable) {
- return invocation.proceed();
- }
-
- Feed inCache = cacheManager.getFeed(feedName);
-
- if (inCache != null) {
- return inCache;
- } else {
- Feed feed = (Feed) invocation.proceed();
- cacheManager.putFeed(feed);
-
- return feed;
- }
- }
-}
\ No newline at end of file
Deleted: trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedsInterceptor.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedsInterceptor.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetFeedsInterceptor.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,32 +0,0 @@
-package org.jboss.blog.session.cache;
-
-import org.jboss.seam.annotations.intercept.Interceptor;
-import org.jboss.seam.Component;
-import org.jboss.blog.model.feed.Feed;
-
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.InvocationContext;
-import java.util.List;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Interceptor(stateless = true)
-public class FeedsServiceGetFeedsInterceptor {
- @AroundInvoke
- public Object cacheFeeds(InvocationContext invocation) throws Exception {
- CacheManager cacheManager = (CacheManager) Component.getInstance("cacheManager");
-
- List<Feed> inCache = cacheManager.getAllFeedsList();
-
- if (inCache != null) {
- return inCache;
- } else {
- //noinspection unchecked
- List<Feed> feeds = (List<Feed>) invocation.proceed();
- cacheManager.putAllFeedsList(feeds);
-
- return feeds;
- }
- }
-}
\ No newline at end of file
Deleted: trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostInterceptor.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostInterceptor.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostInterceptor.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,40 +0,0 @@
-package org.jboss.blog.session.cache;
-
-import org.jboss.seam.annotations.intercept.Interceptor;
-import org.jboss.seam.Component;
-import org.jboss.blog.model.Post;
-
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.InvocationContext;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Interceptor(stateless = true)
-public class FeedsServiceGetPostInterceptor {
- @AroundInvoke
- public Object cachePost(InvocationContext invocation) throws Exception {
- CacheManager cacheManager = (CacheManager) Component.getInstance("cacheManager");
-
- String titleAsId = (String) invocation.getParameters()[0];
- Boolean writeable = false;
- if (invocation.getParameters().length > 1) {
- writeable = (Boolean) invocation.getParameters()[1];
- }
-
- if (writeable) {
- return invocation.proceed();
- }
-
- Post inCache = cacheManager.getPost(titleAsId);
-
- if (inCache != null) {
- return inCache;
- } else {
- Post post = (Post) invocation.proceed();
- cacheManager.putPost(post);
-
- return post;
- }
- }
-}
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsServiceGetPostsInterceptor.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -3,7 +3,7 @@
import org.jboss.seam.annotations.intercept.Interceptor;
import org.jboss.seam.Component;
import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
@@ -22,13 +22,13 @@
Integer from = (Integer) invocation.getParameters()[1];
Integer to = (Integer) invocation.getParameters()[2];
- List<Post> inCache = cacheManager.getFeedPosts(feed.getName(), from, to);
+ List<? extends RestrictedPost> inCache = cacheManager.getFeedPosts(feed.getName(), from, to);
if (inCache != null) {
return inCache;
} else {
//noinspection unchecked
- List<Post> posts = (List<Post>) invocation.proceed();
+ List<? extends RestrictedPost> posts = (List<? extends RestrictedPost>) invocation.proceed();
cacheManager.putFeedPosts(feed, posts, from, to);
return posts;
Modified: trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,7 +1,6 @@
package org.jboss.blog.session.converter;
import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.service.FeedNotFoundException;
import org.jboss.blog.service.FeedsService;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Name;
@@ -11,8 +10,6 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceException;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -24,9 +21,6 @@
@Transactional
public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
FeedsService feedsService = (FeedsService) Component.getInstance("feedsService");
-
- // TODO: entityManager.joinTransaction();
- // EntityManager entityManager = (EntityManager) Component.getInstance("entityManager");
return feedsService.getFeed(value);
}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,16 +1,15 @@
package org.jboss.blog.session.feed;
import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.feed.RestrictedFeed;
import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.Group;
import org.jboss.blog.service.FeedNotFoundException;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.service.PostNotFoundException;
import org.jboss.blog.session.feed.type.FeedTypes;
import org.jboss.blog.session.cache.FeedsServiceGetPostsInterceptor;
-import org.jboss.blog.session.cache.FeedsServiceGetFeedInterceptor;
-import org.jboss.blog.session.cache.FeedsServiceGetPostInterceptor;
-import org.jboss.blog.session.cache.FeedsServiceGetFeedsInterceptor;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -42,25 +41,17 @@
@SuppressWarnings("unchecked")
public List<Group> getAllGroups() {
- // TODO: add caching
return entityManager.createQuery("select group from Group group order by group.name").getResultList();
}
- @SuppressWarnings("unchecked")
- @Interceptors(FeedsServiceGetFeedsInterceptor.class)
+ /* 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();
- }
+ } */
- @Interceptors(FeedsServiceGetPostInterceptor.class)
public Post getPost(String titleAsId) throws PostNotFoundException {
- return getPost(titleAsId, false);
- }
-
- @Interceptors(FeedsServiceGetPostInterceptor.class)
- public Post getPost(String titleAsId, boolean writeable) throws PostNotFoundException {
- log.debug("Reading post '#0' from the DB, writeable: #1.", titleAsId, writeable);
+ log.debug("Reading post '#0' from the DB.", titleAsId);
try {
return (Post) entityManager.createQuery("select post from Post post where post.titleAsId = ?1")
.setParameter(1, titleAsId).getSingleResult();
@@ -69,14 +60,8 @@
}
}
- @Interceptors(FeedsServiceGetFeedInterceptor.class)
public Feed getFeed(String feedName) throws FeedNotFoundException {
- return getFeed(feedName, false);
- }
-
- @Interceptors(FeedsServiceGetFeedInterceptor.class)
- public Feed getFeed(String feedName, boolean writeable) throws FeedNotFoundException {
- log.debug("Reading feed '#0' from the DB, writeable: #1.", feedName, writeable);
+ log.debug("Reading feed '#0' from the DB.", feedName);
try {
return (Feed) entityManager.createQuery("select feed from Feed feed where feed.name = ?1")
.setParameter(1, feedName).getSingleResult();
@@ -86,7 +71,7 @@
}
@Interceptors(FeedsServiceGetPostsInterceptor.class)
- public List<Post> getPosts(Feed feed, int from, int to) {
+ public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to) {
log.debug("Reading feed '#0' posts from the DB, from #1 to #2.", feed.getName(), from, to);
return feedTypes.getFeedDao(feed).getPosts(from, to);
}
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-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/AggregatedFeedDao.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,9 +1,13 @@
package org.jboss.blog.session.feed.dao;
import org.jboss.blog.model.feed.AggregatedFeed;
-import org.jboss.blog.model.Post;
+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;
@@ -23,7 +27,7 @@
this.aggregatedFeed = aggregatedFeed;
}
- public List<Post> getPosts(int from, int to) {
+ public List<? extends RestrictedPost> getPosts(int from, int to) {
return ((AggregatedFeedPosts) Component.getInstance("aggregatedFeedPosts")).getPosts(
aggregatedFeed, from, to);
}
@@ -31,4 +35,28 @@
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-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,7 @@
package org.jboss.blog.session.feed.dao;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.feed.Feed;
import java.util.List;
@@ -8,7 +9,9 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
public interface FeedDao {
- public List<Post> getPosts(int from, int to);
+ 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-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,10 +1,12 @@
package org.jboss.blog.session.feed.dao;
import org.jboss.blog.model.feed.RemoteFeed;
-import org.jboss.blog.model.Post;
+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;
@@ -24,7 +26,7 @@
this.remoteFeed = remoteFeed;
}
- public List<Post> getPosts(int from, int to) {
+ public List<? extends RestrictedPost> getPosts(int from, int to) {
return ((DatabaseFeedPosts) Component.getInstance("databaseFeedPosts")).getPosts(
remoteFeed, from, to);
}
@@ -32,4 +34,8 @@
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-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -7,8 +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.faces.FacesMessages;
import org.jboss.seam.annotations.*;
@@ -32,13 +35,16 @@
@In
private FeedsService feedsService;
-
+
@In
private FacesMessages facesMessages;
@In
private LinkServiceBean linkService;
+ @In
+ private FeedTypes feedTypes;
+
private AggregatedFeed aggregatedFeed;
private List<Feed> availableFeeds;
@@ -78,23 +84,6 @@
return aggregatedFeed;
}
- private boolean containsFeed(Feed containing, Feed checked) {
- if (checked.equals(containing)) {
- return true;
- }
-
- if (containing instanceof AggregatedFeed) {
- AggregatedFeed aggChecked = (AggregatedFeed) containing;
- for (Feed newContaining : aggChecked.getFeeds().keySet()) {
- if (containsFeed(newContaining, checked)) {
- return true;
- }
- }
- }
-
- return false;
- }
-
private void fillPostFilterList(List<PostFilter> toFill, PostFilter source) {
if (source instanceof AndFilter) {
AndFilter andFilter = (AndFilter) source;
@@ -124,28 +113,35 @@
@Create
public void populateLists() {
- // Populating available feeds
- availableFeeds = feedsService.getAllFeeds();
- // TODO
- /*for (Iterator<Feed> iter = availableFeeds.iterator(); iter.hasNext();) {
- if (containsFeed(iter.next(), getAggregatedFeed())) {
- iter.remove();
+ // Populating available groups
+ availableGroups = feedsService.getAllGroups();
+ availableFeeds = new ArrayList<Feed>();
+
+ for (Iterator<Group> iter = availableGroups.iterator(); iter.hasNext();) {
+ for (Feed nextFeed : iter.next().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);
+ }
}
- } */
+ }
selectedFeedsFilters = new HashMap<Feed, List<PostFilter>>();
- Map<Feed, PostFilter> realFeedsFilters = getAggregatedFeed().getFeeds();
selectedFeeds = new HashMap<Feed, Boolean>();
- readSelectedEntities(availableFeeds, realFeedsFilters, selectedFeeds, selectedFeedsFilters);
+ readSelectedEntities(availableFeeds, getAggregatedFeed().getFeeds(), selectedFeeds, selectedFeedsFilters);
- // Populating available groups
- availableGroups = feedsService.getAllGroups();
selectedGroupsFilters = new HashMap<Group, List<PostFilter>>();
- Map<Group, PostFilter> realGroupsFilters = getAggregatedFeed().getGroups();
selectedGroups = new HashMap<Group, Boolean>();
+ readSelectedEntities(availableGroups, getAggregatedFeed().getGroups(), selectedGroups, selectedGroupsFilters);
- readSelectedEntities(availableGroups, realGroupsFilters, selectedGroups, selectedGroupsFilters);
-
// Populating global filters
globalFilters = new ArrayList<PostFilter>();
fillPostFilterList(globalFilters, getAggregatedFeed().getGlobalFilter());
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-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/AggregatedFeedPosts.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -2,7 +2,7 @@
import org.jboss.blog.model.feed.AggregatedFeed;
import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.tools.GeneralTools;
import org.jboss.blog.model.post.PostFilter;
@@ -22,8 +22,8 @@
@In
private FeedsService feedsService;
- private void filterPostList(List<Post> posts, PostFilter filter) {
- for (Iterator<Post> iter = posts.iterator(); iter.hasNext();) {
+ private void filterPostList(List<? extends RestrictedPost> posts, PostFilter filter) {
+ for (Iterator<? extends RestrictedPost> iter = posts.iterator(); iter.hasNext();) {
if (!filter.filter(iter.next())) {
iter.remove();
}
@@ -31,7 +31,7 @@
}
@SuppressWarnings("unchecked")
- public List<Post> getPosts(AggregatedFeed aggregatedFeed, int from, int to) {
+ public List<? extends RestrictedPost> getPosts(AggregatedFeed aggregatedFeed, int from, int to) {
/*return entityManager.createQuery(
"select post from Post post " +
"where post.feed in " +
@@ -46,7 +46,7 @@
Set<Feed> availableFeeds = feedsAndFilters.keySet();
// Generating the list of posts.
- List<Post> posts = new ArrayList<Post>();
+ List<RestrictedPost> posts = new ArrayList<RestrictedPost>();
// Bounds for the number of posts read from each feed.
int feedPostsFrom = 0;
@@ -57,7 +57,7 @@
Set<Feed> newAvailableFeeds = new HashSet<Feed>();
for (Feed feed : availableFeeds) {
- List<Post> feedPosts = feedsService.getPosts(feed, feedPostsFrom, feedPostsTo);
+ List<? extends RestrictedPost> feedPosts = feedsService.getPosts(feed, feedPostsFrom, feedPostsTo);
// Checking if this feed has any more posts; if so, remembering it so it can be checked for more posts,
// if needed.
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/DatabaseFeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/DatabaseFeedPosts.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/DatabaseFeedPosts.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -5,6 +5,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.ScopeType;
import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.feed.Feed;
import javax.persistence.EntityManager;
@@ -20,7 +21,7 @@
private EntityManager entityManager;
@SuppressWarnings("unchecked")
- public List<Post> getPosts(Feed feed, int from, int to) {
+ public List<? extends RestrictedPost> getPosts(Feed feed, int from, int to) {
return (List<Post>) entityManager.createQuery(
"select post from Post post where post.feed = ?1 order by post.published desc, post.link")
.setParameter(1, feed).setMaxResults(to-from).setFirstResult(from).getResultList();
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.session.feed.posts.filter;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.post.PostFilter;
import java.util.List;
@@ -31,7 +31,7 @@
this.filters = filters;
}
- public boolean filter(Post post) {
+ public boolean filter(RestrictedPost post) {
for (PostFilter filter : filters) {
if (!filter.filter(post)) {
return false;
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,7 +1,7 @@
package org.jboss.blog.session.feed.posts.filter;
-import org.jboss.blog.model.Post;
import org.jboss.blog.model.post.PostFilter;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.tools.validator.Regexp;
import java.util.regex.Pattern;
@@ -28,7 +28,7 @@
pattern = Pattern.compile(this.regexp);
}
- public boolean filter(Post post) {
+ public boolean filter(RestrictedPost post) {
return pattern.matcher(post.getAuthor()).matches();
}
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.session.feed.posts.filter;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.post.PostFilter;
/**
@@ -9,7 +9,7 @@
public class NotPodcastFilter implements PostFilter {
private static final long serialVersionUID = 3962316121420952911L;
- public boolean filter(Post post) {
+ public boolean filter(RestrictedPost post) {
return post.getEnclosures() == null || post.getEnclosures().size() == 0;
}
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.session.feed.posts.filter;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.post.PostFilter;
/**
@@ -9,7 +9,7 @@
public class PodcastFilter implements PostFilter {
private static final long serialVersionUID = -1115632975507749056L;
- public boolean filter(Post post) {
+ public boolean filter(RestrictedPost post) {
return post.getEnclosures() != null && post.getEnclosures().size() != 0;
}
Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.session.feed.posts.filter;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.post.PostFilter;
/**
@@ -9,7 +9,7 @@
public class TotalFilter implements PostFilter {
private static final long serialVersionUID = -8839681871861904116L;
- public boolean filter(Post post) {
+ public boolean filter(RestrictedPost post) {
return true;
}
Modified: trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,7 @@
package org.jboss.blog.session.feed.type;
import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.feed.RestrictedFeed;
import org.jboss.blog.session.feed.InvalidFeedTypeException;
import org.jboss.blog.session.feed.dao.FeedDao;
import org.jboss.blog.session.scanner.ClassHandler;
@@ -25,12 +26,13 @@
@Logger
private Log log;
- private Map<Class<? extends Feed>, FeedType> feedTypes;
- private Map<Class<? extends Feed>, Constructor<? extends FeedDao>> feedDaos;
+ private Map<Class<? extends RestrictedFeed>, FeedType> feedTypes;
+ private Map<Class<? extends RestrictedFeed>, Constructor<? extends FeedDao>> feedDaos;
public FeedTypes() {
- feedTypes = KeySafeMap.wrap(new ConcurrentHashMap<Class<? extends Feed>, FeedType>());
- feedDaos = KeySafeMap.wrap(new ConcurrentHashMap<Class<? extends Feed>, Constructor<? extends FeedDao>>());
+ feedTypes = KeySafeMap.wrap(new ConcurrentHashMap<Class<? extends RestrictedFeed>, FeedType>());
+ feedDaos = KeySafeMap.wrap(new ConcurrentHashMap<Class<? extends RestrictedFeed>,
+ Constructor<? extends FeedDao>>());
}
public FeedType[] getAllTypes() {
@@ -45,7 +47,7 @@
}
}
- public FeedDao getFeedDao(Feed feed) {
+ public FeedDao getFeedDao(RestrictedFeed feed) {
try {
return feedDaos.get(feed.getClass()).newInstance(feed);
} catch (InstantiationException e) {
Modified: trunk/src/action/org/jboss/blog/session/merge/FeedsServicePostsIterator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/FeedsServicePostsIterator.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/merge/FeedsServicePostsIterator.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,7 +1,7 @@
package org.jboss.blog.session.merge;
import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.service.FeedsService;
import java.util.Iterator;
@@ -10,15 +10,15 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public class FeedsServicePostsIterator implements PostsIterator {
+public class FeedsServicePostsIterator implements PostsIterator<RestrictedPost> {
private FeedsService feedsService;
private Feed feed;
private int chunkSize;
private int nextFrom;
- private Post current;
+ private RestrictedPost current;
- private Iterator<Post> iterator;
+ private Iterator<? extends RestrictedPost> iterator;
private int lastChunkSize;
public FeedsServicePostsIterator(FeedsService feedsService, Feed feed, int chunkSize) {
@@ -38,13 +38,13 @@
}
private void readNextChunk() {
- List<Post> posts = feedsService.getPosts(feed, nextFrom, nextFrom+chunkSize);
+ List<? extends RestrictedPost> posts = feedsService.getPosts(feed, nextFrom, nextFrom+chunkSize);
iterator = posts.iterator();
lastChunkSize = posts.size();
nextFrom += chunkSize;
}
- public Post getCurrent() {
+ public RestrictedPost getCurrent() {
return current;
}
@@ -52,7 +52,7 @@
return current == null;
}
- public Post next() {
+ public RestrictedPost next() {
if (iterator.hasNext()) {
current = iterator.next();
} else {
Modified: trunk/src/action/org/jboss/blog/session/merge/ListPostsIterator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/ListPostsIterator.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/merge/ListPostsIterator.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.session.merge;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import java.util.Iterator;
import java.util.List;
@@ -8,11 +8,11 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public class ListPostsIterator implements PostsIterator {
- private Iterator<Post> iterator;
- private Post current;
+public class ListPostsIterator<T extends RestrictedPost> implements PostsIterator<T> {
+ private Iterator<? extends T> iterator;
+ private T current;
- public ListPostsIterator(List<Post> posts) {
+ public ListPostsIterator(List<? extends T> posts) {
iterator = posts.iterator();
if (iterator.hasNext()) {
@@ -22,7 +22,7 @@
}
}
- public Post getCurrent() {
+ public T getCurrent() {
return current;
}
@@ -30,7 +30,7 @@
return current == null;
}
- public Post next() {
+ public T next() {
if (iterator.hasNext()) {
current = iterator.next();
} else {
Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -3,6 +3,7 @@
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.model.Post;
import org.jboss.blog.model.Enclosure;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.tools.GeneralTools;
import org.jboss.blog.tools.StringTools;
@@ -48,6 +49,8 @@
entityManager.persist(enc);
}
+ entityManager.flush();
+
Events.instance().raiseEvent("org.jboss.blog.post.added", post.getTitleAsId(), feed.getName());
}
@@ -72,41 +75,43 @@
* @param mergeTo Post to which to merge the changes.
* @param mergeFrom Post from which to merge the changes.
*/
- private void mergePosts(Feed feed, Post mergeTo, Post mergeFrom) {
+ private void mergePosts(Feed feed, Post mergeTo, RestrictedPost mergeFrom) {
boolean changes = false;
- if (!GeneralTools.objectsEquals(mergeTo.getAuthor(), mergeFrom.getAuthor())) {
+ if (!GeneralTools.objectsEqual(mergeTo.getAuthor(), mergeFrom.getAuthor())) {
mergeTo.setAuthor(mergeFrom.getAuthor());
changes = true;
}
- if (!GeneralTools.objectsEquals(mergeTo.getContent(), mergeFrom.getContent())) {
+ if (!GeneralTools.objectsEqual(mergeTo.getContent(), mergeFrom.getContent())) {
mergeTo.setContent(mergeFrom.getContent());
changes = true;
}
- if (!GeneralTools.objectsEquals(mergeTo.getLink(), mergeFrom.getLink())) {
+ if (!GeneralTools.objectsEqual(mergeTo.getLink(), mergeFrom.getLink())) {
mergeTo.setLink(mergeFrom.getLink());
changes = true;
}
- if (!GeneralTools.objectsEquals(mergeTo.getModified(), mergeFrom.getModified())) {
+ if (!GeneralTools.objectsEqual(mergeTo.getModified(), mergeFrom.getModified())) {
mergeTo.setModified(mergeFrom.getModified());
changes = true;
}
- if (!GeneralTools.objectsEquals(mergeTo.getTitle(), mergeFrom.getTitle())) {
+ if (!GeneralTools.objectsEqual(mergeTo.getTitle(), mergeFrom.getTitle())) {
mergeTo.setTitle(mergeFrom.getTitle());
changes = true;
}
if (changes) {
+ entityManager.flush();
+
Events.instance().raiseEvent("org.jboss.blog.post.updated", mergeTo.getTitleAsId(), feed.getName());
}
}
public void merge(Feed feed, List<Post> posts) {
- ListPostsIterator mergeFrom = new ListPostsIterator(posts);
+ ListPostsIterator<Post> mergeFrom = new ListPostsIterator<Post>(posts);
FeedsServicePostsIterator mergeTo = new FeedsServicePostsIterator(feedsService, feed, posts.size()+1);
while (!mergeFrom.finished()) {
@@ -126,7 +131,7 @@
savePost(feed, mergeFrom.getCurrent());
mergeFrom.next();
} else if (compare == 0) {
- mergePosts(feed, mergeTo.getCurrent(), mergeFrom.getCurrent());
+ mergePosts(feed, feedsService.getPost(mergeTo.getCurrent().getTitleAsId()), mergeFrom.getCurrent());
mergeFrom.next();
mergeTo.next();
} else {
Modified: trunk/src/action/org/jboss/blog/session/merge/PostsIterator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/PostsIterator.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/merge/PostsIterator.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,12 +1,12 @@
package org.jboss.blog.session.merge;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface PostsIterator {
- public Post getCurrent();
- public Post next();
+public interface PostsIterator<T extends RestrictedPost> {
+ public T getCurrent();
+ public T next();
public boolean finished();
}
Modified: trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,7 @@
package org.jboss.blog.session.update;
import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.Group;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.session.feed.type.FeedTypes;
import org.jboss.seam.annotations.AutoCreate;
@@ -25,9 +26,11 @@
private FeedTypes feedTypes;
public void update(Date expiration, long interval) {
- for (Feed feed : feedsService.getAllFeeds()) {
- feedTypes.getFeedDao(feed).update();
- }
+ for (Group group : feedsService.getAllGroups()) {
+ for (Feed feed : group.getFeeds()) {
+ feedTypes.getFeedDao(feed).update();
+ }
+ }
}
@Remove
Modified: trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -2,6 +2,8 @@
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.Group;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.tools.StringTools;
import org.jboss.seam.ScopeType;
@@ -24,7 +26,7 @@
private Feed feed;
private int from;
- private List<Post> posts;
+ private List<? extends RestrictedPost> posts;
public Feed getFeed() {
return feed;
@@ -42,7 +44,7 @@
this.from = from;
}
- public List<Post> getPosts() {
+ public List<? extends RestrictedPost> getPosts() {
if (posts == null) {
posts = feedsService.getPosts(feed, from, from+feed.getMaxPostsOnPage()+1);
}
@@ -72,9 +74,11 @@
* @Deprecated
*/
public void fixHtml() {
- for (Feed feed : feedsService.getAllFeeds()) {
- for (Post post : feed.getPosts()) {
- post.setContent(StringTools.fixHtml(post.getContent()));
+ for (Group group : feedsService.getAllGroups()) {
+ for (Feed feed : group.getFeeds()) {
+ for (Post post : feed.getPosts()) {
+ post.setContent(StringTools.fixHtml(post.getContent()));
+ }
}
}
}
Modified: trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/action/org/jboss/blog/session/xml/velocity/VelocityXmlService.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -4,8 +4,8 @@
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
import org.jboss.blog.model.XmlType;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.session.xml.XmlService;
import org.jboss.blog.session.xml.content.ContentResponse;
@@ -73,13 +73,13 @@
throw new InvalidTemplateTypeException(e);
}
- Feed feed = feedsService.getFeed(feedName, true);
+ Feed feed = feedsService.getFeed(feedName);
if (feed.getTemplates().get(xmlType) == null) {
throw new InvalidTemplateTypeException();
}
- List<Post> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed());
+ List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed());
response.setContentType(xmlType.contentType());
response.setCharacterEncoding("utf-8");
Modified: trunk/src/model/org/jboss/blog/model/Category.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Category.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/model/org/jboss/blog/model/Category.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -11,7 +11,7 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
-public class Category {
+public class Category implements RestrictedCategory {
@Id
@GeneratedValue
@Column(updatable = false)
Modified: trunk/src/model/org/jboss/blog/model/Enclosure.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Enclosure.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/model/org/jboss/blog/model/Enclosure.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -9,7 +9,7 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
-public class Enclosure {
+public class Enclosure implements RestrictedEnclosure {
@Id
@GeneratedValue
@Column(updatable = false)
Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/model/org/jboss/blog/model/Post.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -19,7 +19,7 @@
*/
@Entity
@Indexed
-public class Post implements Comparable<Post> {
+public class Post implements RestrictedPost {
@Id
@GeneratedValue
@Column(updatable = false)
@@ -177,7 +177,7 @@
return result;
}
- public int compareTo(Post post2) {
+ public int compareTo(RestrictedPost post2) {
int dateCompare = - GeneralTools.safeCompare(getPublished(), post2.getPublished());
if (dateCompare == 0) {
return GeneralTools.safeCompare(getLink(), post2.getLink());
Added: trunk/src/model/org/jboss/blog/model/RestrictedCategory.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedCategory.java (rev 0)
+++ trunk/src/model/org/jboss/blog/model/RestrictedCategory.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -0,0 +1,10 @@
+package org.jboss.blog.model;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedCategory {
+ Integer getId();
+
+ String getName();
+}
Added: trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java (rev 0)
+++ trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -0,0 +1,14 @@
+package org.jboss.blog.model;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedEnclosure {
+ Integer getId();
+
+ String getUrl();
+
+ long getLength();
+
+ String getType();
+}
Added: trunk/src/model/org/jboss/blog/model/RestrictedPost.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedPost.java (rev 0)
+++ trunk/src/model/org/jboss/blog/model/RestrictedPost.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -0,0 +1,33 @@
+package org.jboss.blog.model;
+
+import org.jboss.blog.model.feed.RestrictedFeed;
+
+import java.util.List;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedPost extends Comparable<RestrictedPost> {
+ Integer getId();
+
+ String getTitle();
+
+ String getTitleAsId();
+
+ String getContent();
+
+ String getLink();
+
+ String getAuthor();
+
+ List<? extends RestrictedCategory> getCategories();
+
+ Date getPublished();
+
+ Date getModified();
+
+ List<? extends RestrictedEnclosure> getEnclosures();
+
+ RestrictedFeed getFeed();
+}
Modified: trunk/src/model/org/jboss/blog/model/feed/Feed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/Feed.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/model/org/jboss/blog/model/feed/Feed.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -18,7 +18,7 @@
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
-public class Feed {
+public class Feed implements RestrictedFeed {
@Id
@GeneratedValue
@Column(updatable = false)
Added: trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java (rev 0)
+++ trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -0,0 +1,29 @@
+package org.jboss.blog.model.feed;
+
+import org.jboss.blog.model.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedFeed {
+ Integer getId();
+
+ String getName();
+
+ String getTitle();
+
+ String getAuthor();
+
+ String getLink();
+
+ String getDescription();
+
+ int getMaxPostsInFeed();
+
+ int getMaxPostsOnPage();
+
+ boolean isUseBlogAuthorInPosts();
+}
Modified: trunk/src/model/org/jboss/blog/model/post/PostFilter.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/PostFilter.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/model/org/jboss/blog/model/post/PostFilter.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,6 +1,6 @@
package org.jboss.blog.model.post;
-import org.jboss.blog.model.Post;
+import org.jboss.blog.model.RestrictedPost;
import java.io.Serializable;
@@ -8,5 +8,5 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
public interface PostFilter extends Serializable {
- public boolean filter(Post post);
+ public boolean filter(RestrictedPost post);
}
Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -1,8 +1,10 @@
package org.jboss.blog.service;
import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.feed.RestrictedFeed;
import org.jboss.blog.model.Post;
import org.jboss.blog.model.Group;
+import org.jboss.blog.model.RestrictedPost;
import javax.ejb.Local;
import java.util.List;
@@ -14,17 +16,13 @@
public interface FeedsService {
List<Group> getAllGroups();
- List<Feed> getAllFeeds();
+ // remove ? List<? extends RestrictedFeed> getAllFeeds();
Post getPost(String titleAsId) throws PostNotFoundException;
- Post getPost(String titleAsId, boolean writeable) throws PostNotFoundException;
-
Feed getFeed(String feedName) throws FeedNotFoundException;
- Feed getFeed(String feedName, boolean writeable) throws FeedNotFoundException;
+ List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to);
- List<Post> getPosts(Feed feed, int from, int to);
-
void remove();
}
Modified: trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/GeneralTools.java 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/src/tools/org/jboss/blog/tools/GeneralTools.java 2008-01-24 21:00:16 UTC (rev 181)
@@ -8,7 +8,7 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
public class GeneralTools {
- public static boolean objectsEquals(Object o1, Object o2) {
+ public static boolean objectsEqual(Object o1, Object o2) {
if (o1 == null) {
return o2 == null;
} else {
Modified: trunk/view/home.xhtml
===================================================================
--- trunk/view/home.xhtml 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/view/home.xhtml 2008-01-24 21:00:16 UTC (rev 181)
@@ -15,12 +15,19 @@
</p>
<h3>Select a feed to view:</h3>
- <ui:repeat var="feed" value="#{feedsService.allFeeds}">
- <p>
- <s:link view="/view/feed.xhtml" value="#{feed.title}" propagation="none">
- <f:param name="name" value="#{feed.name}"/>
- </s:link>
- </p>
+
+ <ui:repeat var="group" value="#{feedsService.allGroups}">
+ <s:fragment rendered="#{group.feeds.size() > 1}">
+ <p>#{group.displayName}</p>
+ </s:fragment>
+
+ <ui:repeat var="feed" value="#{group.feeds}">
+ <p>
+ <s:link view="/view/feed.xhtml" value="#{feed.title}" propagation="none">
+ <f:param name="name" value="#{feed.name}"/>
+ </s:link>
+ </p>
+ </ui:repeat>
</ui:repeat>
</ui:define>
</ui:composition>
Modified: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml 2008-01-23 21:48:27 UTC (rev 180)
+++ trunk/view/manage/index.xhtml 2008-01-24 21:00:16 UTC (rev 181)
@@ -19,25 +19,31 @@
<s:link value="Re-index posts (for search)" action="#{postSearch.reindex}" /> <br /> <br />
<s:link value="Temporary: fix html in all posts" action="#{feedView.fixHtml}" />
-
+
<h3>Current feeds:</h3>
- <ui:repeat var="feed" value="#{feedsService.allFeeds}">
- <p>
- #{feed.title} (#{feed.name}, #{feedTypes.getFeedType(feed).name()}) <br />
- <s:link view="/manage/feed_edit.xhtml" value="Edit common">
- <f:param name="name" value="#{feed.name}" />
- </s:link>
- <br />
- <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific">
- <f:param name="name" value="#{feed.name}" />
- </s:link>
- <br />
- <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
- onclick="if (!confirm('Are you sure you want to delete this feed?')) return false">
- <f:param name="name" value="#{feed.name}" />
- </s:link>
- </p>
+ <ui:repeat var="group" value="#{feedsService.allGroups}">
+ <s:fragment rendered="#{group.feeds.size() > 1}">
+ <p>#{group.displayName}</p>
+ </s:fragment>
+
+ <ui:repeat var="feed" value="#{group.feeds}">
+ <p>
+ #{feed.title} (#{feed.name}, #{feedTypes.getFeedType(feed).name()}) <br />
+ <s:link view="/manage/feed_edit.xhtml" value="Edit common">
+ <f:param name="name" value="#{feed.name}" />
+ </s:link>
+ <br />
+ <s:link view="#{feedTypes.getFeedType(feed).editPage()}" value="Edit specific">
+ <f:param name="name" value="#{feed.name}" />
+ </s:link>
+ <br />
+ <s:link view="/manage/feed_delete.xhtml" action="#{feedMod.delete}" value="Delete"
+ onclick="if (!confirm('Are you sure you want to delete this feed?')) return false">
+ <f:param name="name" value="#{feed.name}" />
+ </s:link>
+ </p>
+ </ui:repeat>
</ui:repeat>
</ui:define>
</ui:composition>
More information about the jboss-cvs-commits
mailing list