[jboss-cvs] JBossBlog SVN: r166 - in trunk: resources/WEB-INF and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 8 06:38:16 EST 2008


Author: adamw
Date: 2008-01-08 06:38:16 -0500 (Tue, 08 Jan 2008)
New Revision: 166

Added:
   trunk/src/model/org/jboss/blog/model/Enclosure.java
   trunk/src/test/org/jboss/blog/session/parser/
   trunk/src/test/org/jboss/blog/session/parser/RomeExample.java
Removed:
   trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
Modified:
   trunk/resources/META-INF/persistence-dev.xml
   trunk/resources/META-INF/persistence-prod.xml
   trunk/resources/WEB-INF/pages.xml
   trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/action/org/jboss/blog/session/scanner/Init.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
   trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
   trunk/view/manage/aggregated/aggregated_mod.xhtml
Log:


Modified: trunk/resources/META-INF/persistence-dev.xml
===================================================================
--- trunk/resources/META-INF/persistence-dev.xml	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/resources/META-INF/persistence-dev.xml	2008-01-08 11:38:16 UTC (rev 166)
@@ -13,6 +13,7 @@
         <class>org.jboss.blog.model.feed.AggregatedFeed</class>
         <class>org.jboss.blog.model.Category</class>
         <class>org.jboss.blog.model.Post</class>
+        <class>org.jboss.blog.model.Enclosure</class>
         <class>org.jboss.blog.model.Template</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

Modified: trunk/resources/META-INF/persistence-prod.xml
===================================================================
--- trunk/resources/META-INF/persistence-prod.xml	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/resources/META-INF/persistence-prod.xml	2008-01-08 11:38:16 UTC (rev 166)
@@ -13,6 +13,7 @@
         <class>org.jboss.blog.model.feed.AggregatedFeed</class>
         <class>org.jboss.blog.model.Category</class>
         <class>org.jboss.blog.model.Post</class>
+        <class>org.jboss.blog.model.Enclosure</class>
         <class>org.jboss.blog.model.Template</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/resources/WEB-INF/pages.xml	2008-01-08 11:38:16 UTC (rev 166)
@@ -51,7 +51,7 @@
     </page>
 
     <page view-id="/manage/feed_edit.xhtml">
-        <begin-conversation flush-mode="manual" join="true" />
+        <begin-conversation flush-mode="manual" />
         <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
         <navigation from-action="#{feedMod.saveExisting}">
             <end-conversation />
@@ -76,7 +76,7 @@
     </page>
 
     <page view-id="/manage/remote/remote_edit.xhtml">
-        <begin-conversation flush-mode="manual" join="true" />
+        <begin-conversation flush-mode="manual" />
         <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
         <navigation from-action="#{remoteFeedMod.saveExisting}">
             <end-conversation />
@@ -94,7 +94,7 @@
     </page>
 
     <page view-id="/manage/aggregated/aggregated_edit.xhtml">
-        <begin-conversation flush-mode="manual" join="true" />
+        <begin-conversation flush-mode="manual" />
         <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
         <navigation from-action="#{aggregatedFeedMod.saveExisting}">
             <end-conversation />
@@ -105,7 +105,7 @@
     <!-- Manage templates -->
 
     <page view-id="/manage/template/template_add.xhtml">
-        <begin-conversation flush-mode="manual" join="true" />
+        <begin-conversation flush-mode="manual" />
         <navigation from-action="#{templateMod.saveNew}">
             <end-conversation />
             <redirect view-id="/manage/template/template_list.xhtml" />
@@ -113,7 +113,7 @@
     </page>
 
     <page view-id="/manage/template/template_edit.xhtml">
-        <begin-conversation flush-mode="manual" join="true" />
+        <begin-conversation flush-mode="manual" />
         <param name="id" converterId="templateConverter" value="#{templateMod.template}" />
         <navigation from-action="#{templateMod.saveExisting}">
             <end-conversation />

Deleted: trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -1,80 +0,0 @@
-package org.jboss.blog.session.feed;
-
-import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.Template;
-import org.jboss.blog.model.XmlType;
-import org.jboss.blog.session.merge.MergeServiceBean;
-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 org.jboss.seam.faces.FacesMessages;
-
-import javax.faces.application.FacesMessage;
-import javax.persistence.EntityManager;
-import java.io.Serializable;
-import java.util.HashMap;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Scope(ScopeType.CONVERSATION)
- at Name("feedMod")
- at AutoCreate
-public class FeedModBean implements Serializable {
-    private Feed feed;
-
-    @In
-    private EntityManager entityManager;
-
-    @In
-    private FacesMessages facesMessages;
-
-    @In
-    private MergeServiceBean mergeService;
-
-    public void initNewFeed(Feed feed) {
-        this.feed = feed;
-        feed.setMaxPostsInFeed(10);
-        feed.setMaxPostsOnPage(10);
-        feed.setTemplates(new HashMap<XmlType, Template>());
-    }
-
-    public Feed getFeed() {
-        return feed;
-    }
-
-    public void setFeed(Feed feed) {
-        this.feed = feed;
-    }
-
-    public XmlType[] getTemplateTypes() {
-        return new XmlType[] { XmlType.ATOM };
-    }
-
-    public void saveNew() {
-        entityManager.persist(feed);
-
-        for (Post post : feed.getPosts()) {
-            mergeService.savePost(feed, post);
-        }
-
-        entityManager.flush();
-
-        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.added", getFeed().getName());
-    }
-
-    public void saveExisting() {
-        entityManager.flush();
-
-        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.updated", getFeed().getName());
-    }
-
-    public void delete() {
-        entityManager.remove(getFeed());
-
-        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.deleted", getFeed().getName());
-    }
-}

Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
+import org.jboss.blog.model.Enclosure;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.ScopeType;
@@ -38,6 +39,10 @@
         
         post.setFeed(feed);
         entityManager.persist(post);
+
+        for (Enclosure enc : post.getEnclosures()) {
+            entityManager.persist(enc);
+        }
     }
 
     /**

Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -1,17 +1,16 @@
 package org.jboss.blog.session.parser;
 
-import com.sun.syndication.feed.synd.SyndCategory;
-import com.sun.syndication.feed.synd.SyndContent;
-import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.*;
 import com.sun.syndication.io.FeedException;
 import com.sun.syndication.io.SyndFeedInput;
 import com.sun.syndication.io.XmlReader;
 import org.jboss.blog.model.Category;
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
+import org.jboss.blog.model.Enclosure;
 import org.jboss.blog.session.category.CategoryServiceBean;
 import org.jboss.blog.tools.StringTools;
+import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
@@ -21,10 +20,7 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -58,6 +54,7 @@
 
                     post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? feed.getAuthor() : entry.getAuthor());
 
+                    // Setting content
                     String longestContent = entry.getDescription() == null ? "" : entry.getDescription().getValue();
 
                     for (Object contentObj : entry.getContents()) {
@@ -71,16 +68,33 @@
 
                     post.setContent(longestContent);
 
+                    // Setting categories
                     post.setCategories(new ArrayList<Category>());
                     for (Object categoryObj : entry.getCategories()) {
                         SyndCategory category = (SyndCategory) categoryObj;
                         post.getCategories().add(categoryService.getCategory(category.getName()));
                     }
 
+                    // Setting enclosures
+                    post.setEnclosures(new ArrayList<Enclosure>());
+                    for (Object enclosureObj : entry.getEnclosures()) {
+                        SyndEnclosure enclosure = (SyndEnclosure) enclosureObj;
+                        post.getEnclosures().add(new Enclosure(post, enclosure.getUrl(),
+                                enclosure.getLength(), enclosure.getType()));
+                    }
+
+                    // Setting the published date
+                    Date publishedDate = entry.getPublishedDate();
+                    if (publishedDate == null) {
+                        publishedDate = entry.getUpdatedDate();
+                    }
+
+                    post.setPublished(publishedDate);
+
+                    // And other properties
                     post.setTitle(entry.getTitle());
-                    post.setPublished(entry.getPublishedDate());
                     post.setModified(
-                            entry.getUpdatedDate() == null ? entry.getPublishedDate() : entry.getUpdatedDate());
+                            entry.getUpdatedDate() == null ? post.getPublished() : entry.getUpdatedDate());
                     post.setLink(entry.getLink());
 
                     posts.add(post);
@@ -89,9 +103,9 @@
 
             Collections.sort(posts, new Comparator<Post>() {
                 public int compare(Post post1, Post post2) {
-                    int dateCompare = - post1.getPublished().compareTo(post2.getPublished());
+                    int dateCompare = - GeneralTools.safeCompare(post1.getPublished(), post2.getPublished());
                     if (dateCompare == 0) {
-                        return post1.getLink().compareTo(post2.getLink());
+                        return GeneralTools.safeCompare(post1.getLink(), post2.getLink());
                     } else {
                         return dateCompare;
                     }

Modified: trunk/src/action/org/jboss/blog/session/scanner/Init.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/scanner/Init.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/action/org/jboss/blog/session/scanner/Init.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -29,6 +29,7 @@
         
         handlers.put(FeedType.class, feedTypes);
 
+        // TODO
         //new AnnotationScanner(Thread.currentThread().getContextClassLoader(), handlers).scan();
         feedTypes.handleClass(AggregatedFeedDao.class);
         feedTypes.handleClass(RemoteFeedDao.class);

Added: trunk/src/model/org/jboss/blog/model/Enclosure.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Enclosure.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/Enclosure.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -0,0 +1,98 @@
+package org.jboss.blog.model;
+
+import org.hibernate.validator.NotEmpty;
+import org.hibernate.validator.Length;
+
+import javax.persistence.*;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class Enclosure {
+    @Id
+    @GeneratedValue
+    @Column(updatable = false)
+    private Integer id;
+
+    @ManyToOne(optional = false, fetch = FetchType.LAZY)
+    private Post post;
+
+    @NotEmpty
+    @Length(max = 512)
+    private String url;
+
+    @Column
+    private long length;
+
+    @Length(max = 128)
+    private String type;
+
+    public Enclosure() { }
+
+    public Enclosure(Post post, String url, long length, String type) {
+        this.post = post;
+        this.url = url;
+        this.length = length;
+        this.type = type;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Post getPost() {
+        return post;
+    }
+
+    public void setPost(Post post) {
+        this.post = post;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public long getLength() {
+        return length;
+    }
+
+    public void setLength(long length) {
+        this.length = length;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof Enclosure)) return false;
+
+        Enclosure enclosure = (Enclosure) o;
+
+        if (id != null ? !id.equals(enclosure.id) : enclosure.id != null) return false;
+        if (url != null ? !url.equals(enclosure.url) : enclosure.url != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = (id != null ? id.hashCode() : 0);
+        result = 31 * result + (url != null ? url.hashCode() : 0);
+        return result;
+    }
+}

Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -45,7 +45,6 @@
     private String link;
 
     @Length(max = 256)
-    @NotEmpty
     @Field
     private String author;
 
@@ -60,6 +59,9 @@
     @NotNull
     private Date modified;
 
+    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
+    private List<Enclosure> enclosures;
+
     @ManyToOne
     @NotNull
     private Feed feed;
@@ -137,6 +139,14 @@
         this.modified = modified;
     }
 
+    public List<Enclosure> getEnclosures() {
+        return enclosures;
+    }
+
+    public void setEnclosures(List<Enclosure> enclosures) {
+        this.enclosures = enclosures;
+    }
+
     public Feed getFeed() {
         return feed;
     }

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -2,7 +2,6 @@
 
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
-import org.jboss.blog.service.FeedNotFoundException;
 
 import javax.ejb.Local;
 import java.util.List;

Added: trunk/src/test/org/jboss/blog/session/parser/RomeExample.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/parser/RomeExample.java	                        (rev 0)
+++ trunk/src/test/org/jboss/blog/session/parser/RomeExample.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -0,0 +1,29 @@
+package org.jboss.blog.session.parser;
+
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+import com.sun.syndication.io.FeedException;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndEntry;
+
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class RomeExample {
+    public static void main(String[] args) throws IOException, FeedException {
+        SyndFeedInput input = new SyndFeedInput();
+        SyndFeed syndFeed = input.build(new XmlReader(new URL("http://labs.jboss.com/feeds/jbosslabs/podcast/rss2")));
+
+        List entries = syndFeed.getEntries();
+
+        SyndEntry entry = (SyndEntry) entries.get(0);
+        List enclosures = entry.getEnclosures();
+
+        System.out.println(syndFeed.getTitle());
+    }
+}

Modified: trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/GeneralTools.java	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/src/tools/org/jboss/blog/tools/GeneralTools.java	2008-01-08 11:38:16 UTC (rev 166)
@@ -52,4 +52,16 @@
             os.write(buffer, 0, read);
         }
     }
+
+    public static <T> int safeCompare(Comparable<T> o1, T o2) {
+        if (o1 == null) {
+            if (o2 == null) {
+                return 0;
+            }
+
+            return 1;
+        } else {
+            return o1.compareTo(o2);
+        }
+    }
 }

Modified: trunk/view/manage/aggregated/aggregated_mod.xhtml
===================================================================
--- trunk/view/manage/aggregated/aggregated_mod.xhtml	2008-01-07 17:41:09 UTC (rev 165)
+++ trunk/view/manage/aggregated/aggregated_mod.xhtml	2008-01-08 11:38:16 UTC (rev 166)
@@ -22,7 +22,7 @@
                           action="#{aggregatedFeedMod.saveNew}" />
                 <h:commandButton rendered="#{!new}" value="Save"
                           action="#{aggregatedFeedMod.saveExisting}" />
-                <s:button value="Cancel" view="/manage/index.xhtml" />
+                <s:button value="Cancel" view="/manage/index.xhtml" propagation="end" />
             </h:panelGroup>
         </h:panelGrid>
     </h:form>




More information about the jboss-cvs-commits mailing list