[jboss-svn-commits] JBL Code SVN: r8925 - in labs/jbosslabs/trunk/portal-extensions: forge-common/src/java/org/jboss/forge/common/projects and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 19 16:10:30 EST 2007


Author: wrzep
Date: 2007-01-19 16:10:30 -0500 (Fri, 19 Jan 2007)
New Revision: 8925

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/FacesTools.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java
   labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoAccessBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/web/WEB-INF/faces-config.xml
Log:
JBLAB-780
Project info portlet edit view implementation.

Pawel


Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/FacesTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/FacesTools.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/FacesTools.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -25,6 +25,7 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.faces.application.FacesMessage;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 
@@ -38,6 +39,8 @@
 /**
  * @author adamw
  * @author dejp
+ * @author pawel
+ * 
  * Various static helper methods, mainly reading from the current
  * faces and external contexts.
  */
@@ -170,6 +173,23 @@
         return getExternalContext().getRemoteUser();
     }
     
+    public static boolean isUserLogged() {
+    		return getRemoteUser() != null;
+    }
+    
+    public static boolean isProjectAdminLogged() {
+    	
+    		String projectId = FacesTools.getSelectedProjectId();
+		String projectAdminString = null;
+		
+		if ((projectId != null) && (projectId != "")) {
+			projectAdminString = projectId.concat("-admin");
+		}
+		
+		return isUserLogged() &&	 (projectAdminString != null)
+				&&	FacesTools.hasPermission(projectAdminString);
+    }
+    
     public static org.jboss.portal.identity.User getUser(String username) {
     		return null;    	
     }
@@ -191,4 +211,9 @@
     
     	 	return projectId;
     }
+    
+    public static void addMessage(String message) {
+		FacesContext.getCurrentInstance().addMessage(null, 
+				new FacesMessage(message));
+	}		
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -25,10 +25,17 @@
 import java.util.Map;
 import java.util.Set;
 
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+
 import org.jboss.forge.common.Constants;
 import org.jboss.forge.common.ForgeHelper;
 import org.jboss.forge.common.projects.permissions.ActionRequestPermissionsChecker;
 import org.jboss.forge.common.projects.permissions.RenderRequestPermissionsChecker;
+import org.jboss.forge.common.soa.projects.ProjectsService;
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.portlet.JBossActionRequest;
 import org.jboss.portlet.JBossRenderRequest;
 
@@ -39,6 +46,9 @@
  * @author Ryszard Kozmik
  */
 public class ProjectsHelper {
+	
+	private static Logger log = Logger.getLogger(ProjectsHelper.class);
+	
 	/**
 	 * This class cannot be instatiated.
 	 */
@@ -249,4 +259,23 @@
 		return getProjects(portalName).getProjectIds();
 	}
 
+	public static ProjectsService getProjectsService() {
+		
+		ProjectsService service = null;
+		
+		try {
+			MBeanServer server = MBeanServerLocator.locate();
+
+	        service = (ProjectsService) MBeanProxyExt.create(
+        									ProjectsService.class,
+        									ProjectsService.PROJECTS_SERVICE,
+        									server);
+			
+		
+		} catch (MalformedObjectNameException e) {
+			log.warn("Unable to get ProjectsService", e);
+		}
+		
+		return service;
+	}
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsService.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -46,6 +46,8 @@
     public static final String PROJECTS_SERVICE = "labs:service=projects";
 
     public Collection<Project> getProjects();
+    
+    public Collection<String> getProjectsIds();
 
     public Project getProjectByName (String projectId);
     

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/soa/projects/ProjectsServiceImpl.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -23,6 +23,7 @@
 package org.jboss.forge.common.soa.projects;
 
 import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -51,7 +52,6 @@
 import org.jboss.forge.common.projects.project.SupportService;
 import org.jboss.logging.Logger;
 import org.jboss.shotoku.ContentManager;
-import org.jboss.shotoku.Directory;
 import org.jboss.shotoku.Node;
 import org.jboss.shotoku.aop.Inject;
 
@@ -294,4 +294,16 @@
 		
 		log.info("Projects service stopped");
 	}
+
+	public Collection<String> getProjectsIds() {
+		
+		Collection<String> projectsIds = new ArrayList<String>();
+		
+		Collection<Project> projects = getProjects();
+		for (Project project : projects) {
+			projectsIds.add(project.getId());
+		}
+		
+		return projectsIds;
+	}
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoAccessBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoAccessBean.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoAccessBean.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -29,26 +29,18 @@
 
 public class ProjectInfoAccessBean  {
 	
-	public ProjectInfoAccessBean() {};
+	public ProjectInfoAccessBean() {	};
 	
 	public boolean isProjectAdminLogged() {
 		
 		return true; //DEBUG
 		
 		/*
-		String projectId = FacesTools.getSelectedProjectId();
-		String projectAdminString = null;
-		
-		if ((projectId != null) && (projectId != "")) {
-			projectAdminString = projectId.concat("-admin");
-		}
-		
-		return isUserLogged() &&	 (projectAdminString != null)
-				&&	FacesTools.hasPermission(projectAdminString);
+			FacesTools.isProjectAdminLogged();
 		*/
 	}
 	
 	public boolean isUserLogged() {
-        return FacesTools.getRemoteUser() != null;
+        return FacesTools.isUserLogged();
 	}
 }

Modified: labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -25,6 +25,7 @@
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 
+import org.jboss.forge.common.FacesTools;
 import org.jboss.forge.common.ForgeHelper;
 import org.jboss.forge.common.projects.ProjectsHelper;
 import org.jboss.forge.common.projects.project.Project;
@@ -47,6 +48,8 @@
 	private String username = null;
 	private String projectURL;
 	
+	private static String previousProjectId = "default";
+	
 	private static Logger log = Logger.getLogger(ProjectInfoBean.class);
 	
     @Inject
@@ -55,6 +58,7 @@
 	public ProjectInfoBean() {
 		
 		Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
+		
         if(request instanceof JBossRenderRequest) {
         
         		JBossRenderRequest req = (JBossRenderRequest) request;
@@ -67,36 +71,32 @@
     			if (req.getUser() != null) {
     				username = req.getUser().getUserName();
     			}
+    			
+    			if (ProjectInfoBean.previousProjectId != projectId) {
+    				
+    				resetSessionBean(projectId);
+    			}
         }
 	}
 
-	private static Project getProjectById(String projectId) {
+	private static void resetSessionBean(String projectId) {
 		
-		ProjectsService service = getService();
+		FacesContext fc = FacesContext.getCurrentInstance();
+		fc.getApplication().createValueBinding("#{pedit}").setValue(fc, null );
+		System.out.println("Reset session bean! " + projectId);
 		
-		return service.getProjectByName(projectId);
+		previousProjectId = projectId;		
 	}
-	
-	private static ProjectsService getService() {
-		
-		ProjectsService service = null;
-		
-		try {
-			MBeanServer server = MBeanServerLocator.locate();
 
-	        service = (ProjectsService) MBeanProxyExt.create(
-        									ProjectsService.class,
-        									ProjectsService.PROJECTS_SERVICE,
-        									server);
-			
+	private static Project getProjectById(String projectId) {
 		
-		} catch (MalformedObjectNameException e) {
-			log.warn("Unable to get ProjectsService", e);
-		}
+		ProjectsService service = ProjectsHelper.getProjectsService();
 		
-		return service;
+		return service.getProjectByName(projectId);
 	}
 	
+	
+	
 	public Project getProject() {
 		return project;
 	}
@@ -145,5 +145,13 @@
 
 	public void setUsername(String username) {}
 	
-	
+	public String applyChanges() {
+		
+		System.out.println("NEW Project name: " + project.getName());
+		System.out.println("NEW Project logo: " + project.getLogo());
+		
+		FacesTools.addMessage("Your changes has been saved");
+		
+		return "back";
+	}
 }

Added: labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoEditBean.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -0,0 +1,184 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.forge.projects.info;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.model.SelectItem;
+
+import org.jboss.forge.common.FacesTools;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.projects.project.Forum;
+import org.jboss.forge.common.projects.project.Project;
+import org.jboss.forge.common.projects.project.Repository;
+import org.jboss.forge.common.soa.projects.ProjectsService;
+
+public class ProjectInfoEditBean  {
+
+	private Project project;
+	
+	private List<SelectItem> allIntegratedProjects;
+	private List<String> selectedIntegratedProjects;
+	
+	private List<SelectItem> forums;
+	private List<String> selectedForums;
+	private String forumURL;
+	
+	private List<SelectItem> repositories;
+	private List<String> selectedRepositories;
+	private String repositoryURL;
+	
+	private ProjectsService projectsService;
+	
+	public ProjectInfoEditBean() {
+		
+		projectsService = ProjectsHelper.getProjectsService();
+		
+		project = projectsService.getProjectByName(FacesTools.getSelectedProjectId());
+		
+		selectedIntegratedProjects = new ArrayList<String>(project.getJems());
+		
+		allIntegratedProjects = new ArrayList<SelectItem>();
+		for (String projectId : projectsService.getProjectsIds()) {
+			allIntegratedProjects.add(new SelectItem(projectId));
+		}
+		
+		System.out.println("FORUMS " + project.getId());
+		selectedForums = new ArrayList<String>();
+		forums = new ArrayList<SelectItem>();
+		for (Forum forum : project.getForums()) {
+			
+			System.out.println("FORUM " + forum.getValue());
+			
+			forums.add(new SelectItem(forum.getValue() + " " + 
+					ProjectInfoTools.forumTypeName(forum.getType())));
+		}
+		
+		System.out.println("REPOSITORIES");
+		selectedRepositories = new ArrayList<String>();
+		repositories = new ArrayList<SelectItem>();
+		for (Repository repository : project.getRepository()) {
+			
+			System.out.println("REPO " + repository.getValue());
+			
+			repositories.add(new SelectItem(repository.getValue() + " " +
+					ProjectInfoTools.repositoryTypeName(repository.getType())));
+		}
+		
+	}	
+	
+	public String applyChanges() {
+		
+		
+		
+		System.out.println("[apply] project name: " + project.getName());
+		
+		for (String projecId : selectedIntegratedProjects) {
+			System.out.println("selected: " + projecId);
+		}
+		
+		// project.setJems(selectedIntegratedProjects); TODO
+		// Rysiek, why the hell there's no Project.setJems() method???
+		
+		projectsService.persistProject(project);
+		
+		FacesTools.addMessage("Your changes have been saved");
+		
+		return "back";
+	}
+	
+	public Project getProject() {
+		return project;
+	}
+
+	public void setProject(Project project) {
+		this.project = project;
+	}
+
+	public List<SelectItem> getAllIntegratedProjects() {
+		return allIntegratedProjects;
+	}
+
+	public void setAllIntegratedProjects(List<SelectItem> allIntegratedProjects) {
+		this.allIntegratedProjects = allIntegratedProjects;
+	}
+
+	public List<String> getSelectedIntegratedProjects() {
+		return selectedIntegratedProjects;
+	}
+
+	public void setSelectedIntegratedProjects(
+			List<String> selectedIntegratedProjects) {
+		this.selectedIntegratedProjects = selectedIntegratedProjects;
+	}
+
+	public List<String> getSelectedForums() {
+		return selectedForums;
+	}
+
+	public void setSelectedForums(List<String> selectedForums) {
+		this.selectedForums = selectedForums;
+	}
+
+	public List<SelectItem> getForums() {
+		return forums;
+	}
+
+	public void setForums(List<SelectItem> forums) {
+		this.forums = forums;
+	}
+
+	public String getForumURL() {
+		return forumURL;
+	}
+
+	public void setForumURL(String forumURL) {
+		this.forumURL = forumURL;
+	}
+
+	public List<SelectItem> getRepositories() {
+		return repositories;
+	}
+
+	public void setRepositories(List<SelectItem> repositories) {
+		this.repositories = repositories;
+	}
+
+	public String getRepositoryURL() {
+		return repositoryURL;
+	}
+
+	public void setRepositoryURL(String repositoryURL) {
+		this.repositoryURL = repositoryURL;
+	}
+
+	public List<String> getSelectedRepositories() {
+		return selectedRepositories;
+	}
+
+	public void setSelectedRepositories(List<String> selectedRepositories) {
+		this.selectedRepositories = selectedRepositories;
+	}
+	
+	
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/java/org/jboss/forge/projects/info/ProjectInfoTools.java	2007-01-19 21:10:30 UTC (rev 8925)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.forge.projects.info;
+
+import org.jboss.forge.common.projects.project.ForumType;
+import org.jboss.forge.common.projects.project.RepoType;
+
+public class ProjectInfoTools  {
+	
+	private ProjectInfoTools() {	}
+
+	public static String forumTypeName(ForumType type) {
+		
+		if (ForumType.DEV.equals(type)) {
+			return "Developers forum";
+		}
+		
+		return "Users forum";
+	}
+
+	public static String repositoryTypeName(RepoType type) {
+		
+		return (RepoType.SVN.equals(type) ? "SVN" : "CVS");
+	}
+
+	
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/web/WEB-INF/faces-config.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/web/WEB-INF/faces-config.xml	2007-01-19 18:11:23 UTC (rev 8924)
+++ labs/jbosslabs/trunk/portal-extensions/forge-prj-info/src/web/WEB-INF/faces-config.xml	2007-01-19 21:10:30 UTC (rev 8925)
@@ -34,4 +34,10 @@
 		<managed-bean-scope>request</managed-bean-scope>
 	</managed-bean>
 	
+	<managed-bean>
+		<managed-bean-name>pedit</managed-bean-name>
+		<managed-bean-class>org.jboss.forge.projects.info.ProjectInfoEditBean</managed-bean-class>
+		<managed-bean-scope>session</managed-bean-scope>
+	</managed-bean>
+	
 </faces-config>




More information about the jboss-svn-commits mailing list