[jboss-cvs] JBossBlog SVN: r185 - in trunk: src/action/org/jboss/blog/session/cache and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 4 10:49:11 EST 2008


Author: adamw
Date: 2008-02-04 10:49:11 -0500 (Mon, 04 Feb 2008)
New Revision: 185

Added:
   trunk/src/model/org/jboss/blog/model/Image.java
   trunk/src/model/org/jboss/blog/model/RestrictedImage.java
   trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java
Modified:
   trunk/resources/META-INF/persistence-dev.xml
   trunk/resources/META-INF/persistence-prod.xml
   trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
   trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/model/org/jboss/blog/model/Enclosure.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/model/org/jboss/blog/model/RestrictedPost.java
Log:


Modified: trunk/resources/META-INF/persistence-dev.xml
===================================================================
--- trunk/resources/META-INF/persistence-dev.xml	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/resources/META-INF/persistence-dev.xml	2008-02-04 15:49:11 UTC (rev 185)
@@ -15,6 +15,7 @@
         <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.Image</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-02-04 13:54:52 UTC (rev 184)
+++ trunk/resources/META-INF/persistence-prod.xml	2008-02-04 15:49:11 UTC (rev 185)
@@ -15,6 +15,7 @@
         <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.Image</class>
         <class>org.jboss.blog.model.Template</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

Modified: trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -46,6 +46,7 @@
         post.getFeed();
         post.getCategories();
         post.getEnclosures();
+        post.getImages();
     }
 
     private void readPosts(List<? extends RestrictedPost> posts) {

Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -4,6 +4,7 @@
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.Enclosure;
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.Image;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.blog.tools.StringTools;
@@ -49,6 +50,10 @@
             entityManager.persist(enc);
         }
 
+        for (Image image : post.getImages()) {
+            entityManager.persist(image);
+        }
+
         entityManager.flush();
 
         Events.instance().raiseEvent("org.jboss.blog.post.added", post.getTitleAsId(), feed.getName());

Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -8,11 +8,15 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.Enclosure;
+import org.jboss.blog.model.Image;
 import org.jboss.blog.session.category.CategoryServiceBean;
 import org.jboss.blog.tools.StringTools;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
+import org.jdom.Element;
+import org.jdom.Attribute;
+import org.jdom.Content;
 
 import javax.ejb.Remove;
 import javax.ejb.Stateless;
@@ -31,6 +35,24 @@
     @In
     private CategoryServiceBean categoryService;
 
+    private Image getImageFromForeignMarkup(Post post, List<Element> foreignMarkup) {
+        for (Element element : foreignMarkup) {
+            if ("image".equals(element.getName())) {
+                Attribute href = element.getAttribute("href");
+                if (href != null) {
+                    return new Image(post, href.getValue());
+                }
+
+                Content content = element.getContent(0);
+                if (content != null) {
+                    return new Image(post, content.getValue());
+                }
+            }
+        }
+
+        return null;
+    }
+
     public Feed parse(String link) throws ParserException {
         try {
             SyndFeedInput input = new SyndFeedInput();
@@ -82,6 +104,14 @@
                                 enclosure.getLength(), enclosure.getType()));
                     }
 
+                    // Setting images
+                    post.setImages(new ArrayList<Image>());
+                    //noinspection unchecked
+                    Image postImage = getImageFromForeignMarkup(post, (List<Element>) entry.getForeignMarkup());
+                    if (postImage != null) {
+                        post.getImages().add(postImage);
+                    }
+
                     // Setting the published date
                     Date publishedDate = entry.getPublishedDate();
                     if (publishedDate == null) {

Modified: trunk/src/model/org/jboss/blog/model/Enclosure.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Enclosure.java	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/model/org/jboss/blog/model/Enclosure.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -2,6 +2,7 @@
 
 import org.hibernate.validator.NotEmpty;
 import org.hibernate.validator.Length;
+import org.hibernate.validator.NotNull;
 
 import javax.persistence.*;
 
@@ -16,6 +17,7 @@
     private Integer id;
 
     @ManyToOne(optional = false, fetch = FetchType.LAZY)
+    @NotNull
     private Post post;
 
     @NotEmpty

Added: trunk/src/model/org/jboss/blog/model/Image.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Image.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/Image.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -0,0 +1,98 @@
+package org.jboss.blog.model;
+
+import org.hibernate.validator.NotEmpty;
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotNull;
+
+import javax.persistence.*;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class Image implements RestrictedImage {
+    @Id
+    @GeneratedValue
+    @Column(updatable = false)
+    private Integer id;
+
+    @ManyToOne(optional = false, fetch = FetchType.LAZY)
+    @NotNull
+    private Post post;
+
+    @NotEmpty
+    @Length(max = 512)
+    private String url;
+
+    @Length(max = 512)
+    private String title;
+
+    @Length(max = 512)
+    private String link;
+
+    public Image() { }
+
+    public Image(Post post, String url) {
+        this.post = post;
+        this.url = url;
+    }
+
+    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 String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof Image)) return false;
+
+        Image image = (Image) o;
+
+        if (id != null ? !id.equals(image.id) : image.id != null) return false;
+        if (url != null ? !url.equals(image.url) : image.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-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -63,6 +63,9 @@
     @OneToMany(mappedBy = "post", cascade = CascadeType.ALL)
     private List<Enclosure> enclosures;
 
+    @OneToMany(mappedBy = "post", cascade = CascadeType.ALL)    
+    private List<Image> images;
+
     @ManyToOne
     @NotNull
     private Feed feed;
@@ -148,6 +151,14 @@
         this.enclosures = enclosures;
     }
 
+    public List<Image> getImages() {
+        return images;
+    }
+
+    public void setImages(List<Image> images) {
+        this.images = images;
+    }
+
     public Feed getFeed() {
         return feed;
     }

Added: trunk/src/model/org/jboss/blog/model/RestrictedImage.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedImage.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/RestrictedImage.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -0,0 +1,12 @@
+package org.jboss.blog.model;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface RestrictedImage {
+    Integer getId();
+
+    String getUrl();
+
+    String getTitle();
+}

Modified: trunk/src/model/org/jboss/blog/model/RestrictedPost.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedPost.java	2008-02-04 13:54:52 UTC (rev 184)
+++ trunk/src/model/org/jboss/blog/model/RestrictedPost.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -29,5 +29,7 @@
 
     List<? extends RestrictedEnclosure> getEnclosures();
 
+    List<? extends RestrictedImage> getImages();
+
     RestrictedFeed getFeed();
 }

Copied: trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java (from rev 175, trunk/src/test/org/jboss/blog/session/parser/RomeExample.java)
===================================================================
--- trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java	                        (rev 0)
+++ trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java	2008-02-04 15:49:11 UTC (rev 185)
@@ -0,0 +1,30 @@
+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 com.sun.syndication.feed.module.Module;
+
+import java.net.URL;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class RomeExample2 {
+    public static void main(String[] args) throws IOException, FeedException {
+        SyndFeedInput input = new SyndFeedInput();
+        SyndFeed syndFeed = input.build(
+                new XmlReader(new URL("http://rss.cnn.com/services/podcasting/newscast/rss.xml")));
+
+        List entries = syndFeed.getEntries();
+
+        SyndEntry entry = (SyndEntry) entries.get(0);
+        List x = (List) entry.getForeignMarkup();
+
+        System.out.println(x.get(0).getClass().getName());
+    }
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list