[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