[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