[jboss-cvs] JBossBlog SVN: r140 - in trunk: src/action/org/jboss/blog/session/category and 10 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Nov 27 05:01:43 EST 2007
Author: adamw
Date: 2007-11-27 05:01:42 -0500 (Tue, 27 Nov 2007)
New Revision: 140
Added:
trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java
trunk/src/action/org/jboss/blog/session/feed/FeedType.java
trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java
trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java
Removed:
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java
trunk/src/action/org/jboss/blog/session/manage/
Modified:
trunk/src/action/org/jboss/blog/session/category/CategoryServiceBean.java
trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
trunk/src/action/org/jboss/blog/session/parser/ParserService.java
trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
trunk/src/model/org/jboss/blog/model/Category.java
trunk/src/model/org/jboss/blog/model/Feed.java
trunk/src/model/org/jboss/blog/model/Post.java
trunk/src/model/org/jboss/blog/model/RemoteFeed.java
trunk/view/home.xhtml
trunk/view/manage/aggregated/aggregated_mod.xhtml
trunk/view/manage/index.xhtml
trunk/view/manage/remote/remote_mod.xhtml
trunk/view/view/feed.xhtml
trunk/view/view/post.xhtml
Log:
Modified: trunk/src/action/org/jboss/blog/session/category/CategoryServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/category/CategoryServiceBean.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/action/org/jboss/blog/session/category/CategoryServiceBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -2,18 +2,20 @@
import org.jboss.blog.model.Category;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import javax.persistence.EntityManager;
-import javax.persistence.NonUniqueResultException;
+import javax.persistence.NoResultException;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Scope(ScopeType.STATELESS)
@Name("categoryService")
+ at AutoCreate
public class CategoryServiceBean {
@In
private EntityManager entityManager;
@@ -22,9 +24,10 @@
try {
return (Category) entityManager.createQuery("select cat from Category cat where cat.name = ?1")
.setParameter(1, name).getSingleResult();
- } catch (NonUniqueResultException e) {
+ } catch (NoResultException e) {
Category ret = new Category(name);
entityManager.persist(ret);
+ entityManager.flush();
return ret;
}
Copied: trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java (from rev 139, trunk/src/action/org/jboss/blog/session/manage/FeedModBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,57 @@
+package org.jboss.blog.session.feed;
+
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.model.Post;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+import javax.persistence.EntityManager;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Scope(ScopeType.CONVERSATION)
+ at Name("feedMod")
+ at AutoCreate
+public class FeedModBean {
+ private Feed feed;
+
+ @In
+ private EntityManager entityManager;
+
+ public void initNewFeed(Feed feed) {
+ this.feed = feed;
+ feed.setMaxPostsInFeed(10);
+ feed.setMaxPostsOnPage(10);
+ }
+
+ public Feed getFeed() {
+ return feed;
+ }
+
+ public void setFeed(Feed feed) {
+ this.feed = feed;
+ }
+
+ public void saveNew() {
+ entityManager.persist(feed);
+
+ for (Post p : feed.getPosts()) {
+ p.setFeed(feed);
+ entityManager.persist(p);
+ }
+
+ entityManager.flush();
+ }
+
+ public void saveExisting() {
+ entityManager.flush();
+ }
+
+ public void delete() {
+ entityManager.remove(getFeed());
+ }
+}
Added: trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,14 @@
+package org.jboss.blog.session.feed;
+
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.model.Post;
+
+import javax.persistence.EntityManager;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface FeedPosts {
+ public List<Post> getPosts(EntityManager entityManager, Feed feed, int from, int to);
+}
Copied: trunk/src/action/org/jboss/blog/session/feed/FeedType.java (from rev 137, trunk/src/action/org/jboss/blog/session/manage/FeedType.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedType.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedType.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,14 @@
+package org.jboss.blog.session.feed;
+
+import org.jboss.blog.model.Feed;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface FeedType {
+ public String getName();
+ public Class getModelClass();
+ public String getAddPage();
+ public String getEditPage();
+ public FeedPosts getFeedPosts();
+}
Copied: trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java (from rev 137, trunk/src/action/org/jboss/blog/session/manage/FeedTypesBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,41 @@
+package org.jboss.blog.session.feed;
+
+import org.jboss.blog.model.Feed;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("feedTypes")
+ at Scope(ScopeType.APPLICATION)
+ at AutoCreate
+public class FeedTypesBean {
+ private Map<Class<?>, FeedType> feedTypes;
+
+ public FeedTypesBean() {
+ feedTypes = new ConcurrentHashMap<Class<?>, FeedType>();
+ }
+
+ public void registerType(FeedType feedType) {
+ feedTypes.put(feedType.getModelClass(), feedType);
+ }
+
+ public FeedType[] getAllTypes() {
+ return feedTypes.values().toArray(new FeedType[feedTypes.size()]);
+ }
+
+ public FeedType getFeedType(Class<?> c) throws InvalidFeedTypeException {
+ FeedType entry = feedTypes.get(c);
+ if (entry == null) {
+ throw new InvalidFeedTypeException();
+ }
+
+ return entry;
+ }
+}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -24,6 +24,10 @@
@In
private EntityManager entityManager;
+ @In
+ private FeedTypesBean feedTypes;
+
+ @SuppressWarnings("unchecked")
public List<Feed> getAllFeeds() {
return entityManager.createQuery("select feed from Feed feed order by feed.name").getResultList();
}
@@ -37,10 +41,16 @@
}
}
+ @SuppressWarnings("unchecked")
public List<Post> getPosts(Feed feed, int from, int to) {
- return (List<Post>) entityManager.createQuery(
- "select post from Post post where post.blog = ?1 order by post.published desc")
- .setParameter(1, feed.getBlog()).setMaxResults(to-from).setFirstResult(from).getResultList();
+ FeedPosts feedPosts = feedTypes.getFeedType(feed.getClass()).getFeedPosts();
+ if (feedPosts != null) {
+ return feedPosts.getPosts(entityManager, feed, from, to);
+ } else {
+ return (List<Post>) entityManager.createQuery(
+ "select post from Post post where post.feed = ?1 order by post.published desc")
+ .setParameter(1, feed).setMaxResults(to-from).setFirstResult(from).getResultList();
+ }
}
public List<Post> getPosts(String feedName, int from, int to) throws FeedNotFoundException {
Copied: trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java (from rev 134, trunk/src/action/org/jboss/blog/session/manage/InvalidFeedTypeException.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,7 @@
+package org.jboss.blog.session.feed;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class InvalidFeedTypeException extends RuntimeException {
+}
Copied: trunk/src/action/org/jboss/blog/session/feed/aggregated (from rev 138, trunk/src/action/org/jboss/blog/session/manage/aggregated)
Deleted: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/aggregated/AggregatedFeedModBean.java 2007-11-26 13:31:35 UTC (rev 138)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,97 +0,0 @@
-package org.jboss.blog.session.manage.aggregated;
-
-import org.jboss.blog.model.AggregatedFeed;
-import org.jboss.blog.model.Blog;
-import org.jboss.blog.model.Feed;
-import org.jboss.blog.model.Post;
-import org.jboss.blog.service.FeedsService;
-import org.jboss.blog.session.manage.FeedModBean;
-import org.jboss.blog.session.manage.InvalidFeedTypeException;
-import org.jboss.seam.ScopeType;
-import org.jboss.seam.annotations.Create;
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
-
-import javax.persistence.EntityManager;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Scope(ScopeType.CONVERSATION)
- at Name("aggregatedFeedMod")
-public class AggregatedFeedModBean {
- @In
- private FeedModBean feedMod;
-
- @In
- private EntityManager entityManager;
-
- @In
- private FeedsService feedsService;
-
- private AggregatedFeed aggregatedFeed;
-
- private List<Feed> availableFeeds;
- private List<Feed> selectedFeeds;
-
- public AggregatedFeed getAggregatedFeed() {
- if (aggregatedFeed == null) {
- if (feedMod.getFeed() == null) {
- aggregatedFeed = new AggregatedFeed();
- aggregatedFeed.setFeeds(new ArrayList<Feed>());
-
- Blog newBlog = new Blog();
- newBlog.setPosts(new ArrayList<Post>());
- aggregatedFeed.setBlog(newBlog);
-
- feedMod.initNewFeed(aggregatedFeed);
- } else {
- if (feedMod.getFeed() instanceof AggregatedFeed) {
- aggregatedFeed = (AggregatedFeed) feedMod.getFeed();
- } else {
- throw new InvalidFeedTypeException();
- }
- }
- }
-
- return aggregatedFeed;
- }
-
- @Create
- public void populateLists() {
- availableFeeds = feedsService.getAllFeeds();
- availableFeeds.remove(getAggregatedFeed());
-
- selectedFeeds = getAggregatedFeed().getFeeds();
- }
-
- public List<Feed> getAvailableFeeds() {
- return availableFeeds;
- }
-
- public List<Feed> getSelectedFeeds() {
- return selectedFeeds;
- }
-
- public void setSelectedFeeds(List<Feed> selectedFeeds) {
- this.selectedFeeds = selectedFeeds;
- }
-
- private void save() {
- List<Feed> currentAggregatedFeeds = getAggregatedFeed().getFeeds();
- currentAggregatedFeeds.clear();
- currentAggregatedFeeds.addAll(getSelectedFeeds());
- }
-
- public void saveNew() {
- save();
- }
-
- public void saveExisting() {
- save();
- entityManager.flush();
- }
-}
Copied: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java (from rev 139, trunk/src/action/org/jboss/blog/session/manage/aggregated/AggregatedFeedModBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,93 @@
+package org.jboss.blog.session.feed.aggregated;
+
+import org.jboss.blog.model.AggregatedFeed;
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.model.Post;
+import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.session.feed.FeedModBean;
+import org.jboss.blog.session.feed.InvalidFeedTypeException;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Create;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+import javax.persistence.EntityManager;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Scope(ScopeType.CONVERSATION)
+ at Name("aggregatedFeedMod")
+public class AggregatedFeedModBean {
+ @In
+ private FeedModBean feedMod;
+
+ @In
+ private EntityManager entityManager;
+
+ @In
+ private FeedsService feedsService;
+
+ private AggregatedFeed aggregatedFeed;
+
+ private List<Feed> availableFeeds;
+ private List<Feed> selectedFeeds;
+
+ public AggregatedFeed getAggregatedFeed() {
+ if (aggregatedFeed == null) {
+ if (feedMod.getFeed() == null) {
+ aggregatedFeed = new AggregatedFeed();
+ aggregatedFeed.setFeeds(new ArrayList<Feed>());
+ aggregatedFeed.setPosts(new ArrayList<Post>());
+
+ feedMod.initNewFeed(aggregatedFeed);
+ } else {
+ if (feedMod.getFeed() instanceof AggregatedFeed) {
+ aggregatedFeed = (AggregatedFeed) feedMod.getFeed();
+ } else {
+ throw new InvalidFeedTypeException();
+ }
+ }
+ }
+
+ return aggregatedFeed;
+ }
+
+ @Create
+ public void populateLists() {
+ availableFeeds = feedsService.getAllFeeds();
+ availableFeeds.remove(getAggregatedFeed());
+
+ selectedFeeds = getAggregatedFeed().getFeeds();
+ }
+
+ public List<Feed> getAvailableFeeds() {
+ return availableFeeds;
+ }
+
+ public List<Feed> getSelectedFeeds() {
+ return selectedFeeds;
+ }
+
+ public void setSelectedFeeds(List<Feed> selectedFeeds) {
+ this.selectedFeeds = selectedFeeds;
+ }
+
+ private void save() {
+ List<Feed> currentAggregatedFeeds = getAggregatedFeed().getFeeds();
+ currentAggregatedFeeds.clear();
+ currentAggregatedFeeds.addAll(getSelectedFeeds());
+ }
+
+ public void saveNew() {
+ save();
+ }
+
+ public void saveExisting() {
+ save();
+ entityManager.flush();
+ }
+}
Added: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,22 @@
+package org.jboss.blog.session.feed.aggregated;
+
+import org.jboss.blog.model.AggregatedFeed;
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.model.Post;
+import org.jboss.blog.session.feed.FeedPosts;
+
+import javax.persistence.EntityManager;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class AggregatedFeedPostsBean implements FeedPosts {
+ @SuppressWarnings("unchecked")
+ public List<Post> getPosts(EntityManager entityManager, Feed feed, int from, int to) {
+ return entityManager.createQuery(
+ "select post from Post post, AggregatedFeed af, in (af.feeds) as ff where af = ?1 " +
+ "and post.feed = ff order by post.published desc")
+ .setParameter(1, feed).setMaxResults(to-from).setFirstResult(from).getResultList();
+ }
+}
Deleted: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/aggregated/AggregatedFeedTypeRegisterBean.java 2007-11-26 13:31:35 UTC (rev 138)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,38 +0,0 @@
-package org.jboss.blog.session.manage.aggregated;
-
-import org.jboss.blog.model.AggregatedFeed;
-import org.jboss.blog.session.manage.FeedType;
-import org.jboss.blog.session.manage.FeedTypesBean;
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Observer;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Name("aggregatedFeedTypeRegister")
-public class AggregatedFeedTypeRegisterBean implements FeedType {
- public String getName() {
- return "aggregated";
- }
-
- public Class<?> getModelClass() {
- return AggregatedFeed.class;
- }
-
- public String getAddPage() {
- return "/manage/aggregated/aggregated_add.xhtml";
- }
-
- public String getEditPage() {
- return "/manage/aggregated/aggregated_edit.xhtml";
- }
-
- @In
- private FeedTypesBean feedTypes;
-
- @Observer("org.jboss.seam.postInitialization")
- public void register() {
- feedTypes.registerType(getName(), this);
- }
-}
Copied: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java (from rev 139, trunk/src/action/org/jboss/blog/session/manage/aggregated/AggregatedFeedTypeRegisterBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,51 @@
+package org.jboss.blog.session.feed.aggregated;
+
+import org.jboss.blog.model.AggregatedFeed;
+import org.jboss.blog.session.feed.FeedPosts;
+import org.jboss.blog.session.feed.FeedType;
+import org.jboss.blog.session.feed.FeedTypesBean;
+import org.jboss.seam.annotations.Create;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("aggregatedFeedTypeRegister")
+public class AggregatedFeedTypeRegisterBean implements FeedType {
+ public String getName() {
+ return "aggregated";
+ }
+
+ public Class<AggregatedFeed> getModelClass() {
+ return AggregatedFeed.class;
+ }
+
+ public String getAddPage() {
+ return "/manage/aggregated/aggregated_add.xhtml";
+ }
+
+ public String getEditPage() {
+ return "/manage/aggregated/aggregated_edit.xhtml";
+ }
+
+ public FeedPosts getFeedPosts() {
+ return feedPosts;
+ }
+
+ private FeedPosts feedPosts;
+
+ @Create
+ public void initFeedPosts() {
+ feedPosts = new AggregatedFeedPostsBean();
+ }
+
+ @In
+ private FeedTypesBean feedTypes;
+
+ @Observer("org.jboss.seam.postInitialization")
+ public void register() {
+ feedTypes.registerType(this);
+ }
+}
Copied: trunk/src/action/org/jboss/blog/session/feed/remote (from rev 137, trunk/src/action/org/jboss/blog/session/manage/remote)
Deleted: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java 2007-11-24 18:42:07 UTC (rev 137)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,83 +0,0 @@
-package org.jboss.blog.session.manage.remote;
-
-import org.hibernate.validator.NotEmpty;
-import org.jboss.blog.model.Blog;
-import org.jboss.blog.model.Feed;
-import org.jboss.blog.model.RemoteFeed;
-import org.jboss.blog.session.manage.FeedModBean;
-import org.jboss.blog.session.manage.InvalidFeedTypeException;
-import org.jboss.blog.session.parser.ParserException;
-import org.jboss.blog.session.parser.ParserService;
-import org.jboss.seam.ScopeType;
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Scope(ScopeType.CONVERSATION)
- at Name("remoteFeedMod")
-public class RemoteFeedModBean {
- @In
- private ParserService parserService;
-
- @In
- private FeedModBean feedMod;
-
- @NotEmpty
- private String link;
-
- private boolean parseOk;
- private Exception parseException;
-
- public String getLink() {
- return link;
- }
-
- public void setLink(String link) {
- this.link = link;
- }
-
- public boolean isParseOk() {
- return parseOk;
- }
-
- public void setParseOk(boolean parseOk) {
- this.parseOk = parseOk;
- }
-
- public Exception getParseException() {
- return parseException;
- }
-
- public void setParseException(Exception parseException) {
- this.parseException = parseException;
- }
-
- public void parseFeed() {
- try {
- Blog blog = parserService.parse(getLink());
-
- if (feedMod.getFeed() == null) {
- RemoteFeed newRemoteFeed = new RemoteFeed();
- feedMod.initNewFeed(newRemoteFeed);
-
- newRemoteFeed.setLink(getLink());
- newRemoteFeed.setBlog(blog);
- } else {
- if (feedMod.getFeed() instanceof RemoteFeed) {
- RemoteFeed remoteFeed = (RemoteFeed) feedMod.getFeed();
- remoteFeed.setLink(getLink());
- } else {
- throw new InvalidFeedTypeException();
- }
- }
-
- setParseOk(true);
- } catch (ParserException e) {
- setParseException(e);
- setParseOk(false);
- }
- }
-}
Copied: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java (from rev 139, trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,94 @@
+package org.jboss.blog.session.feed.remote;
+
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.model.RemoteFeed;
+import org.jboss.blog.session.feed.FeedModBean;
+import org.jboss.blog.session.feed.InvalidFeedTypeException;
+import org.jboss.blog.session.parser.ParserException;
+import org.jboss.blog.session.parser.ParserService;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+import javax.persistence.EntityManager;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Scope(ScopeType.CONVERSATION)
+ at Name("remoteFeedMod")
+public class RemoteFeedModBean {
+ @In
+ private ParserService parserService;
+
+ @In
+ private FeedModBean feedMod;
+
+ @In
+ private EntityManager entityManager;
+
+ private RemoteFeed remoteFeed;
+
+ private Feed parsedFeed;
+
+ private boolean parseOk;
+ private Exception parseException;
+
+ public RemoteFeed getRemoteFeed() {
+ if (remoteFeed == null) {
+ if (feedMod.getFeed() == null) {
+ remoteFeed = new RemoteFeed();
+ feedMod.initNewFeed(remoteFeed);
+ } else {
+ if (feedMod.getFeed() instanceof RemoteFeed) {
+ remoteFeed = (RemoteFeed) feedMod.getFeed();
+ } else {
+ throw new InvalidFeedTypeException();
+ }
+ }
+ }
+
+ return remoteFeed;
+ }
+
+ public boolean isParseOk() {
+ return parseOk;
+ }
+
+ public void setParseOk(boolean parseOk) {
+ this.parseOk = parseOk;
+ }
+
+ public Exception getParseException() {
+ return parseException;
+ }
+
+ public void setParseException(Exception parseException) {
+ this.parseException = parseException;
+ }
+
+ public void parseFeed() {
+ try {
+ parsedFeed = parserService.parse(getRemoteFeed().getRemoteLink());
+ setParseOk(true);
+ } catch (ParserException e) {
+ setParseException(e);
+ setParseOk(false);
+ }
+ }
+
+ public void saveNew() {
+ getRemoteFeed().setAuthor(parsedFeed.getAuthor());
+ getRemoteFeed().setDescription(parsedFeed.getDescription());
+ getRemoteFeed().setLink(parsedFeed.getLink());
+ getRemoteFeed().setPosts(parsedFeed.getPosts());
+ getRemoteFeed().setTitle(parsedFeed.getTitle());
+ }
+
+ public void saveExisting() {
+ getRemoteFeed().setLink(parsedFeed.getLink());
+
+ entityManager.flush();
+ }
+}
Deleted: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java 2007-11-24 18:42:07 UTC (rev 137)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,38 +0,0 @@
-package org.jboss.blog.session.manage.remote;
-
-import org.jboss.blog.model.RemoteFeed;
-import org.jboss.blog.session.manage.FeedType;
-import org.jboss.blog.session.manage.FeedTypesBean;
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Observer;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Name("remoteFeedTypeRegister")
-public class RemoteFeedTypeRegisterBean implements FeedType {
- public String getName() {
- return "remote";
- }
-
- public Class<?> getModelClass() {
- return RemoteFeed.class;
- }
-
- public String getAddPage() {
- return "/manage/remote/remote_add.xhtml";
- }
-
- public String getEditPage() {
- return "/manage/remote/remote_edit.xhtml";
- }
-
- @In
- private FeedTypesBean feedTypes;
-
- @Observer("org.jboss.seam.postInitialization")
- public void register() {
- feedTypes.registerType(getName(), this);
- }
-}
Copied: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java (from rev 139, trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -0,0 +1,43 @@
+package org.jboss.blog.session.feed.remote;
+
+import org.jboss.blog.model.RemoteFeed;
+import org.jboss.blog.session.feed.FeedType;
+import org.jboss.blog.session.feed.FeedTypesBean;
+import org.jboss.blog.session.feed.FeedPosts;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("remoteFeedTypeRegister")
+public class RemoteFeedTypeRegisterBean implements FeedType {
+ public String getName() {
+ return "remote";
+ }
+
+ public Class<?> getModelClass() {
+ return RemoteFeed.class;
+ }
+
+ public String getAddPage() {
+ return "/manage/remote/remote_add.xhtml";
+ }
+
+ public String getEditPage() {
+ return "/manage/remote/remote_edit.xhtml";
+ }
+
+ public FeedPosts getFeedPosts() {
+ return null;
+ }
+
+ @In
+ private FeedTypesBean feedTypes;
+
+ @Observer("org.jboss.seam.postInitialization")
+ public void register() {
+ feedTypes.registerType(this);
+ }
+}
Modified: trunk/src/action/org/jboss/blog/session/parser/ParserService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserService.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserService.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,19 +1,15 @@
package org.jboss.blog.session.parser;
import org.jboss.blog.model.Feed;
-import org.jboss.blog.model.Post;
-import org.jboss.blog.tools.Pair;
import javax.ejb.Local;
-import java.util.List;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Local
public interface ParserService {
-
void remove();
- List<Post> parse(String link, Feed toFill) throws ParserException;
+ Feed parse(String link) throws ParserException;
}
Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -11,7 +11,6 @@
import org.jboss.blog.model.Feed;
import org.jboss.blog.model.Post;
import org.jboss.blog.session.category.CategoryServiceBean;
-import org.jboss.blog.tools.Pair;
import org.jboss.blog.tools.StringTools;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
@@ -35,23 +34,27 @@
@In
private CategoryServiceBean categoryService;
- public List<Post> parse(String link, Feed toFill) throws ParserException {
+ public Feed parse(String link) throws ParserException {
try {
SyndFeedInput input = new SyndFeedInput();
SyndFeed syndFeed = input.build(new XmlReader(new URL(link)));
- toFill.setAuthor(syndFeed.getAuthor());
- toFill.setDescription(syndFeed.getDescription());
- toFill.setLink(syndFeed.getLink());
- toFill.setTitle(syndFeed.getTitle());
+ Feed feed = new Feed();
+ feed.setAuthor(syndFeed.getAuthor());
+ feed.setDescription(syndFeed.getDescription());
+ feed.setLink(syndFeed.getLink());
+ feed.setTitle(syndFeed.getTitle());
+
List<Post> posts = new ArrayList<Post>();
+ feed.setPosts(posts);
+
if (syndFeed.getEntries() != null) {
for (Object entryObj : syndFeed.getEntries()) {
SyndEntry entry = (SyndEntry) entryObj;
Post post = new Post();
- post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? toFill.getAuthor() : entry.getAuthor());
+ post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? feed.getAuthor() : entry.getAuthor());
for (Object contentObj : entry.getContents()) {
SyndContent content = (SyndContent) contentObj;
@@ -77,7 +80,7 @@
}
}
- return posts;
+ return feed;
} catch (FeedException e) {
throw new ParserException(e);
} catch (MalformedURLException e) {
Modified: trunk/src/model/org/jboss/blog/model/Category.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Category.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/model/org/jboss/blog/model/Category.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -62,4 +62,9 @@
result = 31 * result + (name != null ? name.hashCode() : 0);
return result;
}
+
+ @Override
+ public String toString() {
+ return name;
+ }
}
Modified: trunk/src/model/org/jboss/blog/model/Feed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Feed.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/model/org/jboss/blog/model/Feed.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -14,7 +14,7 @@
*/
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
-public abstract class Feed {
+public class Feed {
@Id
@GeneratedValue
@Column(updatable = false)
@@ -37,7 +37,7 @@
@NotEmpty
private String link;
- @ManyToMany(cascade = {CascadeType.REMOVE}, mappedBy = "feeds")
+ @OneToMany(cascade = {CascadeType.REMOVE}, mappedBy = "feed")
private List<Post> posts;
@Lob
@@ -56,7 +56,9 @@
private int maxPostsOnPage;
@Transient
- public abstract String getType();
+ public String getType() {
+ return "none";
+ }
public Integer getId() {
return id;
Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/model/org/jboss/blog/model/Post.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -1,6 +1,5 @@
package org.jboss.blog.model;
-import org.hibernate.annotations.CollectionOfElements;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.NotNull;
@@ -53,9 +52,9 @@
@NotNull
private Date modified;
- @ManyToMany
+ @ManyToOne
@NotNull
- private List<Feed> feeds;
+ private Feed feed;
public Integer getId() {
return id;
@@ -130,12 +129,12 @@
this.modified = modified;
}
- public List<Feed> getFeeds() {
- return feeds;
+ public Feed getFeed() {
+ return feed;
}
- public void setFeeds(List<Feed> feeds) {
- this.feeds = feeds;
+ public void setFeed(Feed feed) {
+ this.feed = feed;
}
public boolean equals(Object o) {
Modified: trunk/src/model/org/jboss/blog/model/RemoteFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RemoteFeed.java 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/src/model/org/jboss/blog/model/RemoteFeed.java 2007-11-27 10:01:42 UTC (rev 140)
@@ -13,14 +13,14 @@
public class RemoteFeed extends Feed {
@NotEmpty
@Length(max = 512)
- private String link;
+ private String remoteLink;
- public String getLink() {
- return link;
+ public String getRemoteLink() {
+ return remoteLink;
}
- public void setLink(String link) {
- this.link = link;
+ public void setRemoteLink(String remoteLink) {
+ this.remoteLink = remoteLink;
}
@Transient
Modified: trunk/view/home.xhtml
===================================================================
--- trunk/view/home.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/home.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -17,7 +17,7 @@
<h3>Select a feed to view:</h3>
<ui:repeat var="feed" value="#{feedsService.allFeeds}">
<p>
- <s:link view="/view/feed.xhtml" value="#{feed.displayName}" propagation="none">
+ <s:link view="/view/feed.xhtml" value="#{feed.title}" propagation="none">
<f:param name="name" value="#{feed.name}"/>
</s:link>
</p>
Modified: trunk/view/manage/aggregated/aggregated_mod.xhtml
===================================================================
--- trunk/view/manage/aggregated/aggregated_mod.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/manage/aggregated/aggregated_mod.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -14,7 +14,7 @@
<h:panelGroup>
<h:selectManyCheckbox value="#{aggregatedFeedMod.selectedFeeds}" layout="pageDirection">
<s:selectItems var="feed" value="#{aggregatedFeedMod.availableFeeds}"
- label="#{feed.displayName}" />
+ label="#{feed.title}" />
<s:convertEntity />
</h:selectManyCheckbox>
</h:panelGroup>
Modified: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/manage/index.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -16,12 +16,12 @@
<ui:repeat var="feed" value="#{feedsService.allFeeds}">
<p>
- #{feed.displayName} (#{feed.type}) <br />
+ #{feed.title} (#{feed.type}) <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.type).editPage}" value="Edit specific">
+ <s:link view="#{feedTypes.getFeedType(feed.class).editPage}" value="Edit specific">
<f:param name="name" value="#{feed.name}" />
</s:link>
<br />
Modified: trunk/view/manage/remote/remote_mod.xhtml
===================================================================
--- trunk/view/manage/remote/remote_mod.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/manage/remote/remote_mod.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -11,7 +11,7 @@
<h:panelGrid columns="2">
<h:outputLabel><span class="required">*</span> Remote feed address:</h:outputLabel>
<h:panelGroup>
- <h:inputText id="link" value="#{remoteFeedMod.remoteFeed.link}" required="true" size="64">
+ <h:inputText id="link" value="#{remoteFeedMod.remoteFeed.remoteLink}" required="true" size="64">
<s:validate />
</h:inputText>
<a:outputPanel id="linkMessage">
Modified: trunk/view/view/feed.xhtml
===================================================================
--- trunk/view/view/feed.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/view/feed.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -9,7 +9,7 @@
xmlns:a="http://richfaces.org/a4j"
template="../layout/template.xhtml">
<ui:define name="body">
- <h1>View feed: #{feedView.feed.displayName}</h1>
+ <h1>View feed: #{feedView.feed.title}</h1>
<p>
<s:link view="/view/feed.xhtml" value="« Previous" rendered="#{feedView.showPrevious}"
Modified: trunk/view/view/post.xhtml
===================================================================
--- trunk/view/view/post.xhtml 2007-11-26 17:44:46 UTC (rev 139)
+++ trunk/view/view/post.xhtml 2007-11-27 10:01:42 UTC (rev 140)
@@ -13,8 +13,8 @@
<p>
Back to:
- <s:link view="/view/feed.xhtml" value="#{post.blog.feed.displayName}" propagation="none">
- <f:param name="name" value="#{post.blog.feed.name}"/>
+ <s:link view="/view/feed.xhtml" value="#{post.feed.title}" propagation="none">
+ <f:param name="name" value="#{post.feed.name}"/>
</s:link>
</p>
More information about the jboss-cvs-commits
mailing list