[jboss-cvs] JBossBlog SVN: r150 - in trunk: resources/WEB-INF and 9 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Dec 3 16:00:44 EST 2007
Author: adamw
Date: 2007-12-03 16:00:44 -0500 (Mon, 03 Dec 2007)
New Revision: 150
Added:
trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java
Modified:
trunk/resources/WEB-INF/pages.xml
trunk/resources/messages_en.properties
trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java
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/view/LinkServiceBean.java
trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
trunk/src/model/org/jboss/blog/model/Post.java
trunk/view/manage/feed_mod.xhtml
trunk/view/view/post.xhtml
Log:
Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/resources/WEB-INF/pages.xml 2007-12-03 21:00:44 UTC (rev 150)
@@ -23,6 +23,11 @@
<page view-id="/view/post.xhtml">
<param name="post" converterId="postConverter" value="#{postView.post}" />
+ <navigation from-action="#{postView.delete}">
+ <redirect view-id="/view/feed.xhtml">
+ <param name="name" value="#{postView.post.feed.name}" />
+ </redirect>
+ </navigation>
</page>
<!-- Manage feeds -->
Modified: trunk/resources/messages_en.properties
===================================================================
--- trunk/resources/messages_en.properties 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/resources/messages_en.properties 2007-12-03 21:00:44 UTC (rev 150)
@@ -103,4 +103,6 @@
blog.feed.new.invalidname=Feed name may only contain small latin letters, numbers, _ and /.
blog.feed.new.existingname=A feed with that name already exists.
-blog.template.new.existingname=A template with that name already exists.
\ No newline at end of file
+blog.template.new.existingname=A template with that name already exists.
+
+blog.post.deleted=Post '{0}' deleted.
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -4,6 +4,7 @@
import org.jboss.blog.model.Post;
import org.jboss.blog.model.Template;
import org.jboss.blog.model.TemplateType;
+import org.jboss.blog.session.merge.MergeServiceBean;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
@@ -31,6 +32,9 @@
@In
private FacesMessages facesMessages;
+ @In
+ private MergeServiceBean mergeService;
+
public void initNewFeed(Feed feed) {
this.feed = feed;
feed.setMaxPostsInFeed(10);
@@ -53,9 +57,8 @@
public void saveNew() {
entityManager.persist(feed);
- for (Post p : feed.getPosts()) {
- p.setFeed(feed);
- entityManager.persist(p);
+ for (Post post : feed.getPosts()) {
+ mergeService.savePost(feed, post);
}
entityManager.flush();
Modified: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedModBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -6,6 +6,7 @@
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.session.feed.FeedModBean;
import org.jboss.blog.session.feed.InvalidFeedTypeException;
+import org.jboss.blog.session.view.LinkServiceBean;
import org.jboss.blog.tools.GeneralTools;
import org.jboss.seam.ScopeType;
import org.jboss.seam.faces.FacesMessages;
@@ -39,6 +40,9 @@
@In
private FacesMessages facesMessages;
+ @In
+ private LinkServiceBean linkService;
+
private AggregatedFeed aggregatedFeed;
// We have to use SelectItem-s because of a bug with coerce in JSF RI.
@@ -53,6 +57,7 @@
aggregatedFeed.setPosts(new ArrayList<Post>());
feedMod.initNewFeed(aggregatedFeed);
+ aggregatedFeed.setLink(linkService.generateFeedPageLink(aggregatedFeed));
} else {
if (feedMod.getFeed() instanceof AggregatedFeed) {
aggregatedFeed = (AggregatedFeed) feedMod.getFeed();
Modified: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedModBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -6,14 +6,15 @@
import org.jboss.blog.session.feed.InvalidFeedTypeException;
import org.jboss.blog.session.parser.ParserException;
import org.jboss.blog.session.parser.ParserService;
+import org.jboss.blog.tools.StringTools;
import org.jboss.seam.ScopeType;
-import org.jboss.seam.faces.FacesMessages;
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 javax.faces.application.FacesMessage;
import java.io.Serializable;
/**
@@ -46,6 +47,10 @@
if (feedMod.getFeed() == null) {
remoteFeed = new RemoteFeed();
feedMod.initNewFeed(remoteFeed);
+
+ if (StringTools.isEmpty(remoteFeed.getLink())) {
+ remoteFeed.setLink(remoteFeed.getRemoteLink());
+ }
} else {
if (feedMod.getFeed() instanceof RemoteFeed) {
remoteFeed = (RemoteFeed) feedMod.getFeed();
Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -24,12 +24,18 @@
@In
private EntityManager entityManager;
+ @In
+ private TitleAsIdServiceBean titleAsIdService;
+
@Logger
private Log log;
- private void savePost(Feed feed, Post post) {
+ public void savePost(Feed feed, Post post) {
+ post.setTitleAsId(titleAsIdService.generateTitleAsId(post.getTitle()));
+
log.debug("Saving post, feed: #0, post title: #1, post titleAsId: #2, published: #3.",
- feed.getName(), post.getTitle(), post.getTitleAsId());
+ feed.getName(), post.getTitle(), post.getTitleAsId(), post.getPublished());
+
post.setFeed(feed);
entityManager.persist(post);
}
Added: trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -0,0 +1,38 @@
+package org.jboss.blog.session.merge;
+
+import org.jboss.blog.tools.StringTools;
+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 Name("titleAsIdService")
+ at Scope(ScopeType.STATELESS)
+ at AutoCreate
+public class TitleAsIdServiceBean {
+ @In
+ private EntityManager entityManager;
+
+ public String generateTitleAsId(String title) {
+ String candidate = StringTools.convertTitleToLink(title);
+ int nextCandidateNumber = 0;
+
+ while (true) {
+ int candidateCount = entityManager.createQuery("select post from Post post where post.titleAsId = ?1")
+ .setParameter(1, candidate).getResultList().size();
+
+ if (candidateCount > 0) {
+ candidate = StringTools.convertTitleToLink(title) + nextCandidateNumber;
+ nextCandidateNumber++;
+ } else {
+ return candidate;
+ }
+ }
+ }
+}
Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -58,14 +58,19 @@
post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? feed.getAuthor() : entry.getAuthor());
+ String longestContent = entry.getDescription() == null ? "" : entry.getDescription().getValue();
+
for (Object contentObj : entry.getContents()) {
SyndContent content = (SyndContent) contentObj;
- if (!StringTools.isEmpty(content.getValue())) {
- post.setContent(content.getValue());
- break;
+ String currentContent = content == null ? "" : content.getValue();
+
+ if (currentContent.length() > longestContent.length()) {
+ longestContent = currentContent;
}
}
+ post.setContent(longestContent);
+
post.setCategories(new ArrayList<Category>());
for (Object categoryObj : entry.getCategories()) {
SyndCategory category = (SyndCategory) categoryObj;
Modified: trunk/src/action/org/jboss/blog/session/view/LinkServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/LinkServiceBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/view/LinkServiceBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -8,12 +8,9 @@
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
-import javax.ejb.Local;
-
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
- at Local
@AutoCreate
@Scope(ScopeType.STATELESS)
@Name("linkService")
Modified: trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -1,8 +1,12 @@
package org.jboss.blog.session.view;
import org.jboss.blog.model.Post;
+import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
+import org.jboss.seam.faces.FacesMessages;
+import javax.faces.application.FacesMessage;
+import javax.persistence.EntityManager;
import java.io.Serializable;
/**
@@ -10,6 +14,12 @@
*/
@Name("postView")
public class PostViewBean implements Serializable {
+ @In
+ private EntityManager entityManager;
+
+ @In
+ private FacesMessages facesMessages;
+
private Post post;
public Post getPost() {
@@ -19,4 +29,10 @@
public void setPost(Post post) {
this.post = post;
}
+
+ public void delete() {
+ entityManager.remove(post);
+
+ facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.post.deleted", post.getTitle());
+ }
}
Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/src/model/org/jboss/blog/model/Post.java 2007-12-03 21:00:44 UTC (rev 150)
@@ -27,7 +27,6 @@
@NotEmpty
@Pattern(regex = "^[a-z0-9_]*$")
@Column(unique = true)
- // TODO: unique?
private String titleAsId;
@Lob
@@ -38,7 +37,7 @@
private String link;
@Length(max = 256)
- // TODO: @NotEmpty
+ @NotEmpty
private String author;
@ManyToMany
Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/view/manage/feed_mod.xhtml 2007-12-03 21:00:44 UTC (rev 150)
@@ -149,9 +149,6 @@
<h:outputText value="Title:" />
<h:outputText value="#{post.title}" />
- <h:outputText value="Title as id:" />
- <h:outputText value="#{post.titleAsId}" />
-
<h:outputText value="Author:" />
<h:outputText value="#{post.author}" />
Modified: trunk/view/view/post.xhtml
===================================================================
--- trunk/view/view/post.xhtml 2007-12-03 19:37:49 UTC (rev 149)
+++ trunk/view/view/post.xhtml 2007-12-03 21:00:44 UTC (rev 150)
@@ -13,17 +13,22 @@
<p>
Back to:
- <s:link view="/view/feed.xhtml" value="#{post.feed.title}" propagation="none">
- <f:param name="name" value="#{post.feed.name}"/>
+ <s:link view="/view/feed.xhtml" value="#{postView.post.feed.title}" propagation="none">
+ <f:param name="name" value="#{postView.post.feed.name}"/>
</s:link>
</p>
+ <p>
+ <s:link value="Delete post" action="#{postView.delete}"
+ onclick="if (!confirm('Are you sure you want to delete this post?')) return false"/>
+ </p>
+
<rich:panel>
<f:facet name="header">
- #{post.title}
+ #{postView.post.title}
</f:facet>
- <h:outputText value="#{post.content}" escape="false" />
+ <h:outputText value="#{postView.post.content}" escape="false" />
</rich:panel>
</ui:define>
</ui:composition>
More information about the jboss-cvs-commits
mailing list