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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 23 16:48:27 EST 2008


Author: adamw
Date: 2008-01-23 16:48:27 -0500 (Wed, 23 Jan 2008)
New Revision: 180

Modified:
   trunk/resources/WEB-INF/pages.xml
   trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
   trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java
   trunk/src/model/org/jboss/blog/model/feed/AggregatedFeed.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
   trunk/view/manage/aggregated/aggregated_mod.xhtml
   trunk/view/manage/aggregated/filter_add.xhtml
Log:


Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/resources/WEB-INF/pages.xml	2008-01-23 21:48:27 UTC (rev 180)
@@ -101,6 +101,10 @@
             <raise-event type="org.jboss.blog.captureView" />
             <redirect view-id="/manage/aggregated/filter_add.xhtml" />
         </navigation>
+        <navigation from-action="#{filterAdd.addToList(aggregatedFeedMod.selectedGroupsFilters[group])}">
+            <raise-event type="org.jboss.blog.captureView" />
+            <redirect view-id="/manage/aggregated/filter_add.xhtml" />
+        </navigation>
     </page>
 
     <page view-id="/manage/aggregated/aggregated_edit.xhtml">
@@ -120,6 +124,10 @@
             <raise-event type="org.jboss.blog.captureView" />
             <redirect view-id="/manage/aggregated/filter_add.xhtml" />
         </navigation>
+        <navigation from-action="#{filterAdd.addToList(aggregatedFeedMod.selectedGroupsFilters[group])}">
+            <raise-event type="org.jboss.blog.captureView" />
+            <redirect view-id="/manage/aggregated/filter_add.xhtml" />
+        </navigation>
     </page>
 
     <!-- Add filters -->
@@ -135,6 +143,9 @@
         <navigation from-action="#{filterAdd.add(filterAdd.authorRegexpFilter)}">
             <raise-event type="org.jboss.blog.restoreView" />
         </navigation>
+        <navigation from-action="#{filterAdd.cancel}">
+            <raise-event type="org.jboss.blog.restoreView" />
+        </navigation>
     </page>
 
     <!-- Manage groups -->

Modified: trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -3,6 +3,7 @@
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.log.Log;
 import org.jboss.cache.aop.PojoCache;
 import org.jboss.cache.Fqn;
@@ -18,6 +19,7 @@
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
  */
 @Name("cacheManager")
+ at AutoCreate
 public class CacheManager {
     @In
     private PojoCache pojoCache;

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
+import org.jboss.blog.model.Group;
 import org.jboss.blog.service.FeedNotFoundException;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.PostNotFoundException;
@@ -40,7 +41,7 @@
     private Log log;
 
     @SuppressWarnings("unchecked")
-    public List<Feed> getAllGroups() {
+    public List<Group> getAllGroups() {
         // TODO: add caching
         return entityManager.createQuery("select group from Group group order by group.name").getResultList();
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -3,6 +3,7 @@
 import org.jboss.blog.model.feed.AggregatedFeed;
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
+import org.jboss.blog.model.Group;
 import org.jboss.blog.model.post.PostFilter;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.session.feed.InvalidFeedTypeException;
@@ -46,6 +47,12 @@
 
     private Map<Feed, List<PostFilter>> selectedFeedsFilters;
 
+    private List<Group> availableGroups;
+
+    private Map<Group, Boolean> selectedGroups;
+
+    private Map<Group, List<PostFilter>> selectedGroupsFilters;
+
     private List<PostFilter> globalFilters;
 
     public AggregatedFeed getAggregatedFeed() {
@@ -53,6 +60,7 @@
             if (feedMod.getFeed() == null) {
                 aggregatedFeed = new AggregatedFeed();
                 aggregatedFeed.setFeeds(new HashMap<Feed, PostFilter>());
+                aggregatedFeed.setGroups(new HashMap<Group, PostFilter>());
                 aggregatedFeed.setPosts(new ArrayList<Post>());
                 aggregatedFeed.setGlobalFilter(new AndFilter());
 
@@ -96,38 +104,55 @@
         }
     }
 
+    private <T> void readSelectedEntities(List<T> availableEntities, Map<T, PostFilter> currentEntities,
+                                          Map<T, Boolean> selectedEntities,
+                                          Map<T, List<PostFilter>> selectedEntitiesFilters) {
+        // Populating individual filters
+        for (T entity : availableEntities) {
+            selectedEntitiesFilters.put(entity, new ArrayList<PostFilter>());
+
+            if (currentEntities.containsKey(entity)) {
+                fillPostFilterList(selectedEntitiesFilters.get(entity), currentEntities.get(entity));
+            }
+        }
+
+        // Populating selected entities
+        for (T entity : availableEntities) {
+            selectedEntities.put(entity, currentEntities.containsKey(entity));
+        }
+    }
+
     @Create
     public void populateLists() {
         // Populating available feeds
         availableFeeds = feedsService.getAllFeeds();
-        for (Iterator<Feed> iter = availableFeeds.iterator(); iter.hasNext();) {
+        // TODO
+        /*for (Iterator<Feed> iter = availableFeeds.iterator(); iter.hasNext();) {
             if (containsFeed(iter.next(), getAggregatedFeed())) {
                 iter.remove();
             }
-        }
-        
-        // Populating individual filters
+        } */
+
         selectedFeedsFilters = new HashMap<Feed, List<PostFilter>>();
         Map<Feed, PostFilter> realFeedsFilters = getAggregatedFeed().getFeeds();
-        for (Feed feed : availableFeeds) {
-            selectedFeedsFilters.put(feed, new ArrayList<PostFilter>());
+        selectedFeeds = new HashMap<Feed, Boolean>();
+        readSelectedEntities(availableFeeds, realFeedsFilters, selectedFeeds, selectedFeedsFilters);
 
-            if (realFeedsFilters.containsKey(feed)) {
-                fillPostFilterList(selectedFeedsFilters.get(feed), realFeedsFilters.get(feed));
-            }
-        }
+        // Populating available groups
+        availableGroups = feedsService.getAllGroups();
+        selectedGroupsFilters = new HashMap<Group, List<PostFilter>>();
+        Map<Group, PostFilter> realGroupsFilters = getAggregatedFeed().getGroups();
+        selectedGroups = new HashMap<Group, Boolean>();
 
-        // Populating selected feeds
-        selectedFeeds = new HashMap<Feed, Boolean>();
-        for (Feed feed : availableFeeds) {
-            selectedFeeds.put(feed, realFeedsFilters.containsKey(feed));
-        }
+        readSelectedEntities(availableGroups, realGroupsFilters, selectedGroups, selectedGroupsFilters);
 
         // Populating global filters
         globalFilters = new ArrayList<PostFilter>();
         fillPostFilterList(globalFilters, getAggregatedFeed().getGlobalFilter());
     }
 
+    //
+
     public List<Feed> getAvailableFeeds() {
         return availableFeeds;
     }
@@ -144,6 +169,26 @@
         return selectedFeedsFilters;
     }
 
+    //
+
+    public List<Group> getAvailableGroups() {
+        return availableGroups;
+    }
+
+    public Map<Group, Boolean> getSelectedGroups() {
+        return selectedGroups;
+    }
+
+    public void setSelectedGroups(Map<Group, Boolean> selectedGroups) {
+        this.selectedGroups = selectedGroups;
+    }
+
+    public Map<Group, List<PostFilter>> getSelectedGroupsFilters() {
+        return selectedGroupsFilters;
+    }
+
+    //
+
     public List<PostFilter> getGlobalFilters() {
         return globalFilters;
     }
@@ -152,17 +197,24 @@
         filters.remove(filter);
     }
 
-    private void save() {
-        // Saving feeds and filters
-        Map<Feed, PostFilter> currentAggregatedFeeds = getAggregatedFeed().getFeeds();
-        currentAggregatedFeeds.clear();
+    private <T> void saveSelectedEntities(Map<T, PostFilter> currentEntities, Map<T, Boolean> selectedEntities,
+                                          Map<T, List<PostFilter>> selectedEntitiesFilters) {
+        currentEntities.clear();
 
-        for (Feed feed : selectedFeeds.keySet()) {
-            if (selectedFeeds.get(feed)) {
-                currentAggregatedFeeds.put(feed, new AndFilter(selectedFeedsFilters.get(feed)));
+        for (T entity : selectedEntities.keySet()) {
+            if (selectedEntities.get(entity)) {
+                currentEntities.put(entity, new AndFilter(selectedEntitiesFilters.get(entity)));
             }
         }
+    }
 
+    private void save() {
+        // Saving feeds and filters
+        saveSelectedEntities(getAggregatedFeed().getFeeds(), selectedFeeds, selectedFeedsFilters);
+
+        // Saving groups and filters
+        saveSelectedEntities(getAggregatedFeed().getGroups(), selectedGroups, selectedGroupsFilters);
+
         // Saving global filters
         getAggregatedFeed().setGlobalFilter(new AndFilter(globalFilters));
     }

Modified: trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -52,4 +52,6 @@
     public void addToList(List<PostFilter> addToList) {
         this.addToList = addToList;
     }
+
+    public void cancel() { }
 }

Modified: trunk/src/model/org/jboss/blog/model/feed/AggregatedFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/AggregatedFeed.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/model/org/jboss/blog/model/feed/AggregatedFeed.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -1,6 +1,7 @@
 package org.jboss.blog.model.feed;
 
 import org.jboss.blog.model.post.PostFilter;
+import org.jboss.blog.model.Group;
 import org.hibernate.validator.NotNull;
 import org.hibernate.annotations.CollectionOfElements;
 import org.hibernate.annotations.MapKeyManyToMany;
@@ -20,6 +21,11 @@
     @Lob
     private Map<Feed, PostFilter> feeds;
 
+    @CollectionOfElements
+    @MapKeyManyToMany
+    @Lob
+    private Map<Group, PostFilter> groups;
+
     @NotNull
     @Basic
     @Lob
@@ -33,6 +39,14 @@
         this.feeds = feeds;
     }
 
+    public Map<Group, PostFilter> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(Map<Group, PostFilter> groups) {
+        this.groups = groups;
+    }
+
     public PostFilter getGlobalFilter() {
         return globalFilter;
     }

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-01-23 21:48:27 UTC (rev 180)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
+import org.jboss.blog.model.Group;
 
 import javax.ejb.Local;
 import java.util.List;
@@ -11,7 +12,7 @@
  */
 @Local
 public interface FeedsService {
-    List<Feed> getAllGroups();
+    List<Group> getAllGroups();
 
     List<Feed> getAllFeeds();
 

Modified: trunk/view/manage/aggregated/aggregated_mod.xhtml
===================================================================
--- trunk/view/manage/aggregated/aggregated_mod.xhtml	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/view/manage/aggregated/aggregated_mod.xhtml	2008-01-23 21:48:27 UTC (rev 180)
@@ -41,6 +41,37 @@
                 </h:dataTable>
             </h:panelGroup>
 
+            <h:outputLabel>Please select groups to include:</h:outputLabel>
+
+            <h:panelGroup>
+                <h:dataTable value="#{aggregatedFeedMod.availableGroups}" var="group" id="availableGroupsTable">
+                    <h:column>
+                        <h:selectBooleanCheckbox value="#{aggregatedFeedMod.selectedGroups[group]}">
+                            <a:support event="onclick" reRender="availableGroupsTable" />
+                        </h:selectBooleanCheckbox>
+                        #{group.displayName}
+                    </h:column>
+                    <h:column>
+                        <h:panelGroup rendered="#{aggregatedFeedMod.selectedGroups[group]}">
+                            <h5>Local filters, applied only to this group:</h5>
+                            <h:dataTable value="#{aggregatedFeedMod.selectedGroupsFilters[group]}" var="filter">
+                                <h:column>
+                                    #{filter}
+                                </h:column>
+                                <h:column>
+                                    <h:commandButton
+                                            action="#{aggregatedFeedMod.removeFilter(aggregatedFeedMod.selectedGroupsFilters[group],filter)}"
+                                            value="Remove" />
+                                </h:column>
+                            </h:dataTable>
+
+                            <h:commandLink action="#{filterAdd.addToList(aggregatedFeedMod.selectedGroupsFilters[group])}"
+                                           value="Add filter" />
+                        </h:panelGroup>
+                    </h:column>
+                </h:dataTable>
+            </h:panelGroup>
+
             <h3>Global filters, applied to all feeds; this feed will only contain entries, satisfying:</h3>
 
             <h:panelGroup>

Modified: trunk/view/manage/aggregated/filter_add.xhtml
===================================================================
--- trunk/view/manage/aggregated/filter_add.xhtml	2008-01-23 18:49:14 UTC (rev 179)
+++ trunk/view/manage/aggregated/filter_add.xhtml	2008-01-23 21:48:27 UTC (rev 180)
@@ -45,5 +45,11 @@
                 </h:panelGrid>
             </h:form>
         </h:panelGroup>
+
+        <h:panelGroup>
+            <h:form>
+                <h:commandButton value="Cancel" action="#{filterAdd.cancel}"/>
+            </h:form>
+        </h:panelGroup>
     </ui:define>
 </ui:composition>




More information about the jboss-cvs-commits mailing list