[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action ...
Christian Bauer
christian at hibernate.org
Sun Apr 8 11:10:32 EDT 2007
User: cbauer
Date: 07/04/08 11:10:32
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/action
Authenticator.java DirectoryHome.java
DocumentHome.java NodeHome.java
Log:
Implemented Atom feeds for site and directories
Revision Changes Path
1.5 +9 -1 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/Authenticator.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Authenticator.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/Authenticator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- Authenticator.java 4 Apr 2007 10:38:13 -0000 1.4
+++ Authenticator.java 8 Apr 2007 15:10:32 -0000 1.5
@@ -90,6 +90,14 @@
homeDirectory.setReadAccessLevel(UserRoleAccessFactory.GUESTROLE_ACCESSLEVEL);
memberArea.addChild(homeDirectory);
user.setMemberHome(homeDirectory);
+
+ // Create feed for home directory
+ Feed feed = new Feed();
+ feed.setDirectory(homeDirectory);
+ feed.setAuthor(homeDirectory.getCreatedBy().getFullname());
+ feed.setTitle(homeDirectory.getName());
+ homeDirectory.setFeed(feed);
+
nodeDAO.makePersistent(homeDirectory);
// Create home page
@@ -97,7 +105,7 @@
homePage.setWikiname(WikiUtil.convertToWikiName(homePage.getName()));
homePage.setCreatedBy(user);
homePage.setAreaNumber(homeDirectory.getAreaNumber());
- homePage.setContent("This is the homepage of " + user.getFirstname() + " " + user.getLastname() + ".");
+ homePage.setContent("This is the homepage of " + user.getFullname() + ".");
homePage.setWriteAccessLevel(UserRoleAccessFactory.ADMINROLE_ACCESSLEVEL);
homePage.setReadAccessLevel(UserRoleAccessFactory.GUESTROLE_ACCESSLEVEL);
homeDirectory.addChild(homePage);
1.6 +57 -1 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DirectoryHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DirectoryHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DirectoryHome.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- DirectoryHome.java 4 Apr 2007 10:38:13 -0000 1.5
+++ DirectoryHome.java 8 Apr 2007 15:10:32 -0000 1.6
@@ -8,7 +8,9 @@
import org.jboss.seam.wiki.core.model.Directory;
import org.jboss.seam.wiki.core.model.Node;
import org.jboss.seam.wiki.core.model.Document;
+import org.jboss.seam.wiki.core.model.Feed;
+import javax.faces.application.FacesMessage;
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
@@ -38,6 +40,9 @@
// Fill the datamodel for outjection
refreshChildNodes();
+
+ // Feed checkbox
+ hasFeed = getInstance().getFeed()!=null;
}
/* -------------------------- Custom CUD ------------------------------ */
@@ -66,8 +71,20 @@
}
}
+ protected boolean beforePersist() {
+ createOrRemoveFeed();
+ return super.preparePersist();
+ }
+
+ protected boolean beforeUpdate() {
+ createOrRemoveFeed();
+ return super.beforeUpdate();
+ }
+
protected boolean prepareRemove() {
- return getInstance().getParent() != null; // Can not delete wiki root
+ if (getInstance().getParent() == null) return false; // Veto wiki root delete
+ getNodeDAO().removeChildNodes(getInstance());
+ return true;
}
/* -------------------------- Internal Methods ------------------------------ */
@@ -79,6 +96,34 @@
}
}
+ @Transactional
+ private void createOrRemoveFeed() {
+ if (hasFeed && getInstance().getFeed() == null) {
+ Feed feed = new Feed();
+ feed.setDirectory(getInstance());
+ feed.setAuthor(getInstance().getCreatedBy().getFullname());
+ feed.setTitle(getInstance().getName());
+ getInstance().setFeed(feed);
+
+ getFacesMessages().addFromResourceBundleOrDefault(
+ FacesMessage.SEVERITY_INFO,
+ "feedCreated",
+ "Created syndication feed for this directory");
+
+ } else if (!hasFeed && getInstance().getFeed() != null) {
+ getEntityManager().joinTransaction();
+ getEntityManager().remove(getInstance().getFeed());
+ getInstance().setFeed(null);
+
+ getFacesMessages().addFromResourceBundleOrDefault(
+ FacesMessage.SEVERITY_INFO,
+ "feedRemoved",
+ "Removed syndication feed of this directory");
+ } else if (getInstance().getFeed() != null) {
+ getInstance().getFeed().setTitle(getInstance().getName());
+ }
+ }
+
/* -------------------------- Public Features ------------------------------ */
@Restrict("#{s:hasPermission('Node', 'editMenu', directoryHome.instance)}")
@@ -99,4 +144,15 @@
public void previewMenuItems() {
refreshMenuItems();
}
+
+ private boolean hasFeed;
+
+ public boolean isHasFeed() {
+ return hasFeed;
+ }
+
+ public void setHasFeed(boolean hasFeed) {
+ this.hasFeed = hasFeed;
+ }
+
}
1.9 +29 -1 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DocumentHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DocumentHome.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/DocumentHome.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- DocumentHome.java 2 Apr 2007 18:25:06 -0000 1.8
+++ DocumentHome.java 8 Apr 2007 15:10:32 -0000 1.9
@@ -3,11 +3,16 @@
import org.jboss.seam.annotations.*;
import org.jboss.seam.wiki.core.model.*;
import org.jboss.seam.wiki.core.engine.WikiLinkResolver;
+import org.jboss.seam.wiki.core.dao.FeedDAO;
+import org.jboss.seam.wiki.core.dao.UserRoleAccessFactory;
+import org.jboss.seam.wiki.core.action.prefs.DocumentEditorPreferences;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.core.Events;
import org.jboss.seam.contexts.Contexts;
+import javax.faces.application.FacesMessage;
+
@Name("documentHome")
@Scope(ScopeType.CONVERSATION)
public class DocumentHome extends NodeHome<Document> {
@@ -15,11 +20,11 @@
/* -------------------------- Context Wiring ------------------------------ */
@In(required = false) private Node selectedHistoricalNode;
+ @In private FeedDAO feedDAO;
/* -------------------------- Internal State ------------------------------ */
private Document historicalCopy;
- @In("#{docEditorPreferences.properties['minorRevisionEnabled']}")
private boolean minorRevision;
private String formContent;
private boolean enabledPreview = false;
@@ -35,6 +40,8 @@
// Make a copy
historicalCopy = new Document(getInstance());
+ minorRevision = (Boolean)((DocumentEditorPreferences)Component
+ .getInstance("docEditorPreferences")).getProperties().get("minorRevisionEnabled");
// Wiki text parser needs it
Contexts.getConversationContext().set("currentDocument", getInstance());
@@ -53,6 +60,18 @@
return true;
}
+ public String persist() {
+ String outcome = super.persist();
+
+ // Create feed entries (needs identifiers assigned, so we run after persist())
+ if (getInstance().getReadAccessLevel() == UserRoleAccessFactory.GUESTROLE_ACCESSLEVEL) {
+ feedDAO.createFeedEntries(getInstance());
+ getEntityManager().flush();
+ }
+
+ return outcome;
+ }
+
protected boolean beforeUpdate() {
// Sync document content
@@ -60,11 +79,17 @@
// Write history log and prepare a new copy for further modification
if (!isMinorRevision()) {
+
+ // Update feed entries
+ if (getInstance().getReadAccessLevel() == UserRoleAccessFactory.GUESTROLE_ACCESSLEVEL)
+ feedDAO.updateFeedEntries(getInstance());
+
historicalCopy.setId(getInstance().getId());
getNodeDAO().persistHistoricalNode(historicalCopy);
getInstance().incrementRevision();
// New historical copy in conversation
historicalCopy = new Document(getInstance());
+
}
return true;
@@ -78,6 +103,9 @@
// Null out default document
removeAsDefaultDocument(getParentDirectory());
+ // Remove feed entries
+ feedDAO.removeFeedEntries(getInstance());
+
return true;
}
1.12 +0 -0 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/action/NodeHome.java
(In the diff below, changes in quantity of whitespace are not shown.)
More information about the jboss-cvs-commits
mailing list