[jboss-svn-commits] JBL Code SVN: r18695 - in labs/jbosslabs/labs-3.0-build: core/core-model/src/main/java/org/jboss/labs/core/model/admin and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 5 06:20:58 EST 2008


Author: wrzep
Date: 2008-03-05 06:20:54 -0500 (Wed, 05 Mar 2008)
New Revision: 18695

Added:
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinState.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/MembersManager.java
Removed:
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/admin/JoinRequest.java
   labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/AcceptJoin.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinProject.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/projects.xhtml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/user/joinTicket.xhtml
Log:
JBLAB-904 show membership (request) status


Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -284,7 +284,9 @@
         if (projectLeads == null) {
             setProjectLeads(Arrays.asList(leadUsername));
         } else {
-            projectLeads.add(leadUsername);
+            if (!projectLeads.contains(leadUsername)) {
+                projectLeads.add(leadUsername);
+            }
         }
     }
 
@@ -292,27 +294,33 @@
         if (contributors == null) {
             setContributors(Arrays.asList(contributor));
         } else {
-            contributors.add(contributor);
+            if (!contributors.contains(contributor)) {
+                contributors.add(contributor);
+            }
         }
     }
 
-    public boolean canJoin(String username) {
-
+    public boolean isMemberOrLead(String username) {
+        
         for (Username contributor : contributors) {
             if (contributor.getUsername().equals(username)) {
-                return false;
+                return true;
             }
         }
 
         for (Username projectLead : projectLeads) {
             if (projectLead.getUsername().equals(username)) {
-                return false;
+                return true;
             }
         }
 
-        return true;
+        return false;
     }
 
+    public boolean canJoin(String username) {
+        return !isMemberOrLead(username);        
+    }
+
     @Transient
     public String getJira() {
         if ((issueTracker == null) || (!IssueTrackerType.JIRA.equals(issueTracker.getType()))) {

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/admin/JoinRequest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/admin/JoinRequest.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/admin/JoinRequest.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -42,12 +42,14 @@
     @Id @GeneratedValue private int id;
     private String projectId;
     private String username;
+    private boolean finished;
 
     public JoinRequest() {}
 
     public JoinRequest(String projectId, String username) {
         this.projectId = projectId;
         this.username = username;
+        this.finished = false;
     }
 
     /* getters and setters */
@@ -76,8 +78,16 @@
         this.username = username;
     }
 
+    public boolean isFinished() {
+        return finished;
+    }
+
+    public void setFinished(boolean finished) {
+        this.finished = finished;
+    }
+
     @Override
     public String toString() {
-        return "JoinRequest(" + username + ", " + projectId + ")";
+        return "JoinRequest(" + username + ", " + projectId + ", " + finished + ")";
     }
 }
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -190,9 +190,7 @@
 
     public Project merge(Project project) {
 
-        Project p = em.merge(project);
-
-        return p;
+        return em.merge(project);
     }
 
     public void addUserToProject(JoinRequest joinRequest)

Deleted: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -1,76 +0,0 @@
-/*
-* JBoss Labs. http://labs.jboss.com/jbosslabs
-*
-* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
-*
-* This copyrighted material is made available to anyone wishing to use,
-* modify, copy, or redistribute it subject to the terms and conditions
-* of the GNU Lesser General Public License, v. 2.1.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT A WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License, v.2.1 along with this distribution; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-* 02110-1301, USA.
-*
-* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
-*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
-*/
-
-package org.jboss.labs.admin.action.project;
-
-import org.jboss.labs.core.model.Link;
-import org.jboss.labs.core.model.Project;
-import org.jboss.labs.core.model.Username;
-import org.jboss.labs.core.service.ProjectService;
-import org.jboss.labs.admin.Pages;
-import org.jboss.labs.injection.seam.Guice;
-import org.jboss.labs.exception.admin.ProjectNotFoundException;
-import org.jboss.labs.exception.auth.NoSuchUserException;
-import org.jboss.labs.exception.LabsRollbackException;
-import org.jboss.seam.annotations.*;
-import org.jboss.seam.ScopeType;
-import org.jboss.seam.faces.FacesMessages;
-
-import java.io.Serializable;
-
-import com.google.inject.Inject;
-
-/**
- * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
- */
- at Name("membersManager")
- at Guice
-public class MembersManager implements Serializable {
-
-    private static final long serialVersionUID = 1769748495880658315L;
-
-    @In @Out(scope = ScopeType.CONVERSATION) private Project project;
-
-    @Out(scope = ScopeType.CONVERSATION, required = false) private Username contributor;
-
-    @Inject private ProjectService projectService;
-
-    @In private FacesMessages facesMessages;
-
-    public String confirmPromote(Username contributor) {
-
-        this.contributor = contributor;        
-
-        return Pages.PROMOTE_TO_LEAD_PAGE;
-    }
-
-    public String promoteToLead(Username contributor) throws NoSuchUserException, LabsRollbackException {
-
-        project = projectService.promoteToLead(project.getProjectId(), contributor.getUsername());
-
-        facesMessages.add("User " + contributor.getUsername()
-                                  + " has been promoted to project lead.");
-
-        return Pages.MEMEBERS_PAGE;
-    }
-}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/AcceptJoin.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/AcceptJoin.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/AcceptJoin.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -40,6 +40,8 @@
 import org.jboss.labs.exception.LabsRollbackException;
 import com.google.inject.Inject;
 
+import javax.persistence.EntityManager;
+
 /**
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
@@ -55,6 +57,8 @@
     @In private Conversation conversation;
     @In private BusinessProcess businessProcess;
 
+    @In(create = true) private EntityManager entityManager;
+
     @In private FacesMessages facesMessages;
 
     @Logger private Log log;
@@ -76,6 +80,8 @@
             return null;
         }
 
+        cleanRequest(joinRequest);
+
         businessProcess.resumeTask(tId);
         businessProcess.startTask();
         businessProcess.endTask("approve");
@@ -88,11 +94,18 @@
         return Pages.NOTIFICATIONS_PAGE;
     }
 
+    private void cleanRequest(JoinRequest joinRequest) {
+        joinRequest.setFinished(true);
+        entityManager.merge(joinRequest);
+    }
+
     // Hardcoded inside:
     // @StartTask @EndTask(transition = "reject")
     // @End
-    public String reject() {
+    public String reject(JoinRequest joinRequest) {
 
+        cleanRequest(joinRequest);        
+
         businessProcess.resumeTask(tId);
         businessProcess.startTask();
         businessProcess.endTask("reject");

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinProject.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinProject.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinProject.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -83,6 +83,6 @@
 
         joinRequestId = jr.getId();
 
-        return Pages.CONFIRMATION_PAGE;
+        return Pages.MEMEBERS_PAGE;
     }
 }
\ No newline at end of file

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinState.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinState.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/JoinState.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -0,0 +1,91 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.admin.action.user;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Create;
+import org.jboss.seam.ScopeType;
+import org.jboss.labs.core.model.Project;
+import org.jboss.labs.core.model.Username;
+import org.jboss.labs.core.model.auth.User;
+
+import javax.persistence.EntityManager;
+import java.io.Serializable;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+ at Name("joinState")
+ at Scope(ScopeType.PAGE)
+public class JoinState implements Serializable {
+
+    private static final long serialVersionUID = 1769748492233658315L;
+
+    private static enum State { CAN_JOIN, PENDING, MEMEBER }
+
+    private State state;
+
+    @In(create = true) private EntityManager entityManager;
+
+    @In private Project project;
+    @In private User user;
+
+    public boolean canJoin() {
+        return State.CAN_JOIN.equals(state);
+    }
+
+    public boolean isPending() {
+        return State.PENDING.equals(state);
+    }
+
+    public boolean isMember() {
+        return State.MEMEBER.equals(state);
+    }
+    
+    @Create
+    public void initState() {
+
+        System.out.println("JoinState.initState " + project.getProjectId() + " " + user.getName());
+
+        String username = user.getName();
+
+        if (project.isMemberOrLead(username)) {
+            state = State.MEMEBER;
+        } else {
+            boolean joinRequest = 0 < entityManager.createQuery(
+                "SELECT jr FROM JoinRequest jr " +
+                        "WHERE jr.username = :username " +
+                        "AND jr.projectId = :projectId " +
+                        "AND NOT jr.finished = true")
+                .setParameter("username", username)
+                .setParameter("projectId", project.getProjectId())
+                .getResultList()
+                .size();
+
+            state = joinRequest ? State.PENDING : State.CAN_JOIN;
+        }
+    }
+}
\ No newline at end of file

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/MembersManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/MembersManager.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/MembersManager.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -0,0 +1,76 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.admin.action.user;
+
+import org.jboss.labs.core.model.Link;
+import org.jboss.labs.core.model.Project;
+import org.jboss.labs.core.model.Username;
+import org.jboss.labs.core.service.ProjectService;
+import org.jboss.labs.admin.Pages;
+import org.jboss.labs.injection.seam.Guice;
+import org.jboss.labs.exception.admin.ProjectNotFoundException;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import org.jboss.labs.exception.LabsRollbackException;
+import org.jboss.seam.annotations.*;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.faces.FacesMessages;
+
+import java.io.Serializable;
+
+import com.google.inject.Inject;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+ at Name("membersManager")
+ at Guice
+public class MembersManager implements Serializable {
+
+    private static final long serialVersionUID = 1769748495880658315L;
+
+    @In @Out(scope = ScopeType.CONVERSATION) private Project project;
+
+    @Out(scope = ScopeType.CONVERSATION, required = false) private Username contributor;
+
+    @Inject private ProjectService projectService;
+
+    @In private FacesMessages facesMessages;
+
+    public String confirmPromote(Username contributor) {
+
+        this.contributor = contributor;        
+
+        return Pages.PROMOTE_TO_LEAD_PAGE;
+    }
+
+    public String promoteToLead(Username contributor) throws NoSuchUserException, LabsRollbackException {
+
+        project = projectService.promoteToLead(project.getProjectId(), contributor.getUsername());
+
+        facesMessages.add("User " + contributor.getUsername()
+                                  + " has been promoted to project lead.");
+
+        return Pages.MEMEBERS_PAGE;
+    }
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java	2008-03-05 11:20:54 UTC (rev 18695)
@@ -38,7 +38,7 @@
 
        final String editRole = projectId + "_" + "SUPERUSER";
        
-       return actor.getGroupActorIds().contains(editRole);
-               //|| identity.hasRole("Administrators");      
+       return actor.getGroupActorIds().contains(editRole) || 
+              actor.getGroupActorIds().contains("Administrators");  
    }
 }
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml	2008-03-05 11:20:54 UTC (rev 18695)
@@ -38,10 +38,12 @@
             </tr>
         </table>
         <br/>
-        <h:outputText value="You are not a member of this project (TODO: move this to the project page)."
-                                  rendered="#{project.canJoin(user.name)}"/>
-                    <h:commandLink action="#{joinProject.join}" value="Join!"
-                                   rendered="#{project.canJoin(user.name)}"/>
+        <h:outputText value="You are not a member of this project."
+                             rendered="#{joinState.canJoin()}"/>
+        <h:commandLink action="#{joinProject.join}" value="Join!"
+                                   rendered="#{joinState.canJoin()}"/>
+          <h:outputText value="Your membership is pending approval."
+                             rendered="#{joinState.isPending()}"/>
         <br/>
         <s:button value="Back" action="/project/project.seam"/>
     </h:form>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/projects.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/projects.xhtml	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/projects.xhtml	2008-03-05 11:20:54 UTC (rev 18695)
@@ -24,6 +24,9 @@
            <h:column>
                <f:facet name="header">Name</f:facet>
                <h:outputText value="#{project.name} "/>
+
+               <h:commandLink value="[edit hack]" action="#{viewProject.view(project.projectId)}"/>
+
                <h:commandLink value="[edit]" action="#{viewProject.view(project.projectId)}"
                        rendered="#{securityManager.canEdit(project.projectId)}"/>
            </h:column>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/user/joinTicket.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/user/joinTicket.xhtml	2008-03-05 11:17:26 UTC (rev 18694)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/user/joinTicket.xhtml	2008-03-05 11:20:54 UTC (rev 18695)
@@ -17,7 +17,7 @@
             <f:param name="taskId" value="#{tId}" />
         </h:commandLink>
         <span/>
-        <h:commandLink value="Reject" action="#{acceptJoin.reject}" >
+        <h:commandLink value="Reject" action="#{acceptJoin.reject(jRequest)}" >
             <f:param name="taskId" value="#{tId}" />
         </h:commandLink>
         <span/>




More information about the jboss-svn-commits mailing list