[jboss-cvs] JBossBlog SVN: r137 - in trunk: src/action/org/jboss/blog/session/manage and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Nov 24 13:42:07 EST 2007
Author: adamw
Date: 2007-11-24 13:42:07 -0500 (Sat, 24 Nov 2007)
New Revision: 137
Added:
trunk/src/action/org/jboss/blog/session/manage/FeedType.java
trunk/src/action/org/jboss/blog/session/manage/FeedTypesBean.java
trunk/src/action/org/jboss/blog/session/manage/remote/
trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java
trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java
trunk/view/manage/feed_edit.xhtml
trunk/view/manage/remote/
trunk/view/manage/remote/remote_add.xhtml
Modified:
trunk/resources/WEB-INF/pages.xml
trunk/src/action/org/jboss/blog/session/manage/FeedModBean.java
trunk/src/action/org/jboss/blog/session/validator/UniqueFeedNameValidator.java
trunk/view/manage/add.xhtml
trunk/view/manage/feed_mod.xhtml
trunk/view/manage/index.xhtml
trunk/view/view/feed.xhtml
Log:
Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/resources/WEB-INF/pages.xml 2007-11-24 18:42:07 UTC (rev 137)
@@ -38,6 +38,14 @@
</navigation>
</page>
+ <page view-id="/manage/feed_edit.xhtml">
+ <param name="name" converterId="feedConverter" value="#{feedMod.feed}" />
+ <navigation from-action="#{feedMod.saveExisting}">
+ <end-conversation />
+ <redirect view-id="/manage/index.xhtml" />
+ </navigation>
+ </page>
+
<page view-id="/manage/add*" conversation-required="true" />
<exception class="org.jboss.seam.framework.EntityNotFoundException">
Modified: trunk/src/action/org/jboss/blog/session/manage/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/FeedModBean.java 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/src/action/org/jboss/blog/session/manage/FeedModBean.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -3,6 +3,7 @@
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;
@@ -12,15 +13,29 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
- at Scope(ScopeType.STATELESS)
+ at Scope(ScopeType.CONVERSATION)
@Name("feedMod")
+ at AutoCreate
public class FeedModBean {
- @In
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.getBlog());
Added: trunk/src/action/org/jboss/blog/session/manage/FeedType.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/FeedType.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/manage/FeedType.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,11 @@
+package org.jboss.blog.session.manage;
+
+/**
+ * @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();
+}
Added: trunk/src/action/org/jboss/blog/session/manage/FeedTypesBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/FeedTypesBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/manage/FeedTypesBean.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,40 @@
+package org.jboss.blog.session.manage;
+
+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<String, FeedType> feedTypes;
+
+ public FeedTypesBean() {
+ feedTypes = new ConcurrentHashMap<String, FeedType>();
+ }
+
+ public void registerType(String name, FeedType feedType) {
+ feedTypes.put(name, feedType);
+ }
+
+ public FeedType[] getAllTypes() {
+ return feedTypes.values().toArray(new FeedType[feedTypes.size()]);
+ }
+
+ public FeedType getFeedType(String name) throws InvalidFeedTypeException {
+ FeedType entry = feedTypes.get(name);
+ if (name == null) {
+ throw new InvalidFeedTypeException();
+ }
+
+ return entry;
+ }
+}
Copied: trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java (from rev 136, trunk/src/action/org/jboss/blog/session/manage/RemoteFeedModBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedModBean.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,83 @@
+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);
+ }
+ }
+}
Added: trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/manage/remote/RemoteFeedTypeRegisterBean.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,38 @@
+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);
+ }
+}
Modified: trunk/src/action/org/jboss/blog/session/validator/UniqueFeedNameValidator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/validator/UniqueFeedNameValidator.java 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/src/action/org/jboss/blog/session/validator/UniqueFeedNameValidator.java 2007-11-24 18:42:07 UTC (rev 137)
@@ -35,12 +35,12 @@
throws ValidatorException {
String name = StringTools.safeToString(value);
- Long id;
+ Integer id;
if (StringTools.isEmpty(entityId)) {
id = null;
} else {
- id = Long.parseLong(entityId);
+ id = Integer.parseInt(entityId);
}
Query query;
Modified: trunk/view/manage/add.xhtml
===================================================================
--- trunk/view/manage/add.xhtml 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/view/manage/add.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -15,9 +15,11 @@
<h1>Add a new feed</h1>
<ul>
- <li>
- <s:link value="Add a new remote feed" view="/manage/remote_add.xhtml" />
- </li>
+ <ui:repeat var="feedType" value="#{feedTypes.allTypes}">
+ <li>
+ <s:link value="Add a new #{feedType.name} feed" view="#{feedType.addPage}" />
+ </li>
+ </ui:repeat>
</ul>
</ui:define>
</ui:composition>
Added: trunk/view/manage/feed_edit.xhtml
===================================================================
--- trunk/view/manage/feed_edit.xhtml (rev 0)
+++ trunk/view/manage/feed_edit.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,18 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:rich="http://richfaces.org/rich"
+ xmlns:a="http://richfaces.org/a4j"
+ template="../layout/template.xhtml">
+ <ui:define name="body">
+ <h1>Edit feed: #{feedMod.feed.name}</h1>
+
+ <ui:include src="feed_mod.xhtml">
+ <ui:param name="new" value="false" />
+ </ui:include>
+ </ui:define>
+</ui:composition>
Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/view/manage/feed_mod.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -12,8 +12,8 @@
<h:panelGrid columns="2">
<h:outputLabel for="name"><span class="required">*</span> Name (to use in URLs):</h:outputLabel>
<h:panelGroup>
- <h:inputText id="name" value="#{feed.name}" required="true" size="16">
- <blog:uniqueFeedNameValidator entityId="#{feed.id}" />
+ <h:inputText id="name" value="#{feedMod.feed.name}" required="true" size="16">
+ <blog:uniqueFeedNameValidator entityId="#{feedMod.feed.id}" />
<a:support event="onblur" reRender="nameMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -25,7 +25,7 @@
<h:outputLabel for="displayName"><span class="required">*</span> Display name:</h:outputLabel>
<h:panelGroup>
- <h:inputText id="displayName" value="#{feed.displayName}" required="true" size="32">
+ <h:inputText id="displayName" value="#{feedMod.feed.displayName}" required="true" size="32">
<a:support event="onblur" reRender="displayNameMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -37,7 +37,7 @@
<h:outputLabel for="title"><span class="required">*</span> Title:</h:outputLabel>
<h:panelGroup>
- <h:inputText id="title" value="#{feed.blog.title}" required="true" size="32">
+ <h:inputText id="title" value="#{feedMod.feed.blog.title}" required="true" size="32">
<a:support event="onblur" reRender="titleMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -49,7 +49,7 @@
<h:outputLabel for="author"><span class="required">*</span> Author:</h:outputLabel>
<h:panelGroup>
- <h:inputText id="author" value="#{feed.blog.author}" required="true" size="32">
+ <h:inputText id="author" value="#{feedMod.feed.blog.author}" required="true" size="32">
<a:support event="onblur" reRender="authorMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -61,7 +61,7 @@
<h:outputLabel for="description">Description:</h:outputLabel>
<h:panelGroup>
- <h:inputTextarea id="description" value="#{feed.blog.description}" required="true" rows="4"
+ <h:inputTextarea id="description" value="#{feedMod.feed.blog.description}" required="true" rows="4"
cols="32">
<a:support event="onblur" reRender="descriptionMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
@@ -74,7 +74,7 @@
<h:outputLabel for="link"><span class="required">*</span> Link to blog:</h:outputLabel>
<h:panelGroup>
- <h:inputText id="link" value="#{feed.blog.link}" required="true" size="64">
+ <h:inputText id="link" value="#{feedMod.feed.blog.link}" required="true" size="64">
<a:support event="onblur" reRender="linkMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -88,7 +88,7 @@
<span class="required">*</span> Maximum number of posts in a feed:
</h:outputLabel>
<h:panelGroup>
- <h:inputText id="maxPostsInFeed" value="#{feed.maxPostsInFeed}" required="true" size="16">
+ <h:inputText id="maxPostsInFeed" value="#{feedMod.feed.maxPostsInFeed}" required="true" size="16">
<a:support event="onblur" reRender="maxPostsInFeedMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -102,7 +102,7 @@
<span class="required">*</span> Maximum number of posts to display:
</h:outputLabel>
<h:panelGroup>
- <h:inputText id="maxPostsOnPage" value="#{feed.maxPostsOnPage}" required="true" size="16">
+ <h:inputText id="maxPostsOnPage" value="#{feedMod.feed.maxPostsOnPage}" required="true" size="16">
<a:support event="onblur" reRender="maxPostsOnPageMessage" ajaxSingle="true" bypassUpdates="true"/>
<s:validate />
</h:inputText>
@@ -114,7 +114,7 @@
<h:outputLabel for="useBlogAuthorInPosts">Overwrite post author with blog author in posts:</h:outputLabel>
<h:panelGroup>
- <h:selectBooleanCheckbox id="useBlogAuthorInPosts" value="#{feed.useBlogAuthorInPosts}"
+ <h:selectBooleanCheckbox id="useBlogAuthorInPosts" value="#{feedMod.feed.useBlogAuthorInPosts}"
required="true">
<a:support event="onblur" reRender="useBlogAuthorInPostsMessage" ajaxSingle="true"
bypassUpdates="true"/>
@@ -136,11 +136,11 @@
<h3>Posts preview:</h3>
- <h:panelGroup rendered="#{feed.blog.posts.size() == 0}">
+ <h:panelGroup rendered="#{feedMod.feed.blog.posts.size() == 0}">
This feed doesn't have any posts. Unable to preview.
</h:panelGroup>
- <h:panelGroup rendered="#{feed.blog.posts.size() > 0}">
- <h:dataTable value="#{feed.blog.posts}" var="post" rows="1">
+ <h:panelGroup rendered="#{feedMod.feed.blog.posts.size() > 0}">
+ <h:dataTable value="#{feedMod.feed.blog.posts}" var="post" rows="1">
<h:column>
<h:panelGrid columns="2">
<h:outputText value="Title:" />
Modified: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/view/manage/index.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -16,7 +16,12 @@
<ui:repeat var="feed" value="#{feedsService.allFeeds}">
<p>
- #{feed.name}
+ #{feed.displayName} (#{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" />
</p>
</ui:repeat>
</ui:define>
Copied: trunk/view/manage/remote/remote_add.xhtml (from rev 134, trunk/view/manage/remote_add.xhtml)
===================================================================
--- trunk/view/manage/remote/remote_add.xhtml (rev 0)
+++ trunk/view/manage/remote/remote_add.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -0,0 +1,52 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:rich="http://richfaces.org/rich"
+ xmlns:a="http://richfaces.org/a4j"
+ template="../../layout/template.xhtml">
+ <ui:define name="body">
+ <h1>Add a new remote feed</h1>
+
+ <h:form>
+ <h:panelGrid columns="2">
+ <h:outputLabel><span class="required">*</span> Remote feed address:</h:outputLabel> <br />
+ <h:panelGroup>
+ <h:inputText id="link" value="#{remoteFeedMod.link}" required="true" size="64">
+ <s:validate />
+ </h:inputText>
+ <a:outputPanel id="linkMessage">
+ <h:message for="link" styleClass="error" />
+ </a:outputPanel>
+ </h:panelGroup>
+
+ <h:panelGroup />
+ <h:panelGroup>
+ <a:commandButton action="#{remoteFeedMod.parseFeed}" value="Read and parse the feed"
+ reRender="parseStatus,proceed,linkMessage,link" />
+ <a:status stopText="" startText="Wait ..." />
+ </h:panelGroup>
+
+ <h:panelGroup />
+ <h:panelGroup id="parseStatus">
+ <h:panelGroup rendered="#{remoteFeedMod.parseOk}">
+ Parsing the feed was successfull! You can proceed.
+ </h:panelGroup>
+ <h:panelGroup rendered="#{!remoteFeedMod.parseOk and remoteFeedMod.parseException != null}">
+ Parsing the feed failed, because of the following exception:
+ #{newRemoteFeed.parseException.message}
+ </h:panelGroup>
+ </h:panelGroup>
+
+ <h:panelGroup />
+ <h:panelGroup id="proceed">
+ <s:button rendered="#{remoteFeedMod.parseOk}" value="Next »"
+ view="/manage/feed_add.xhtml" />
+ </h:panelGroup>
+ </h:panelGrid>
+ </h:form>
+ </ui:define>
+</ui:composition>
Modified: trunk/view/view/feed.xhtml
===================================================================
--- trunk/view/view/feed.xhtml 2007-11-24 17:25:27 UTC (rev 136)
+++ trunk/view/view/feed.xhtml 2007-11-24 18:42:07 UTC (rev 137)
@@ -36,7 +36,7 @@
<hr />
- <!-- <h:outputText value="#{post.content}" escape="false" /> -->
+ <h:outputText value="#{post.content}" escape="false" />
</rich:panel>
<br />
More information about the jboss-cvs-commits
mailing list