[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