[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