[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