[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="&#171; 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