From: <jbo...@li...> - 2006-05-19 18:02:26
|
Author: wrzep Date: 2006-05-19 14:02:13 -0400 (Fri, 19 May 2006) New Revision: 4328 Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Repository.java Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java Log: JBLAB-603 Consistent project repository location handling. Pawel Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -60,6 +60,9 @@ private Node menuNode; private Menu menu; + + private Node repositoryNode; + private Repository repository; /** * Reads information about a project from an xml file. @@ -125,6 +128,10 @@ if (menuNode != null) { menu = new Menu(portalName, menuNode, this); } + + if (repositoryNode != null) { + repository = new Repository(repositoryNode); + } } /** @@ -188,6 +195,9 @@ if (Menu.MENU_ELEMENT.equals(node.getNodeName())) { setMenuNode(node); } + if (Repository.REPOSITORY_ELEMENT.equals(node.getNodeName())) { + setRepositoryNode(node); + } } public void collect(PropertiesMap properties, Object data, @@ -202,7 +212,7 @@ private void setMenuNode(Node n) { menuNode = n; } - + /** * Gets a menu for this project. * @return An object representing this project's menu. @@ -211,6 +221,8 @@ return menu; } + + /* private PropertiesHandler getFreezonePropertiesHandler() { PropertiesHandlerStack ph = new PropertiesHandlerStack(); @@ -375,4 +387,16 @@ public boolean editPermissionAllowed(PermissionsChecker pc) { return thisProject.editPermissionAllowed(pc); } + + private void setRepositoryNode(Node node) { + repositoryNode = node; + } + + /** + * Gets a repository for this project. + * @return An object representing this project's repository. + */ + public Repository getProjectRepository() { + return repository; + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -258,4 +258,11 @@ public String getLevelLink(String levelId) { return getProjectsDescriptor().getLevelLink(levelId); } + + /** + * For the given project id, returns project repository. + */ + public Repository getProjectRepository(String projectId) { + return getProjectsDescriptor().getProjectRepository(projectId); + } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -687,4 +687,26 @@ return link; } + + /** + * For the given project id, returns project repository. + * + * @param projectId + * Id of the project. + * @return project repository or null if no such project exists. + */ + public Repository getProjectRepository(String projectId) { + + if (!projectAdmissable(projectId)) { + return null; + } + + ProjectDescriptor pd = projects.get(projectId); + + if (pd == null) { + return null; + } + + return pd.getProjectRepository(); + } } Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Repository.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Repository.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Repository.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -0,0 +1,86 @@ + +/* + * 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.common.projects; + +import org.jboss.forge.common.XmlTools; +import org.w3c.dom.Node; + +/** + * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com) + */ + +public class Repository { + + public static final String REPOSITORY_ELEMENT = "repository"; + + public static final short SVN_REPOSITORY = 0; + public static final short CVS_REPOSITORY = 1; + public static final short UNKNOWN_REPOSITORY = 2; + + private static final String TYPE_ATTRIBUTE = "type"; + private static final String USERNAME_ATTRIBUTE = "username"; + private static final String PASSWORD_ATTRIBUTE = "password"; + + private static final String SVN_REPOSITORY_STRING = "svn"; + private static final String CVS_REPOSITORY_STRING = "cvs"; + + private String location; + private String username; + private String password; + private short type; + + public Repository(Node root) { + + location = XmlTools.unmarshallText(root); + username = XmlTools.getAttributeValue(root, USERNAME_ATTRIBUTE); + password = XmlTools.getAttributeValue(root, PASSWORD_ATTRIBUTE); + + String typeString = XmlTools.getAttributeValue(root, TYPE_ATTRIBUTE); + + type = UNKNOWN_REPOSITORY; + if (typeString.equalsIgnoreCase(SVN_REPOSITORY_STRING)) { + type = SVN_REPOSITORY; + } + if (typeString.equalsIgnoreCase(CVS_REPOSITORY_STRING)) { + type = SVN_REPOSITORY; + } + } + + public short getType() { + return type; + } + + public String getLocation() { + return location; + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + +} Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -30,6 +30,7 @@ import org.jboss.forge.common.projects.Projects; import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.forge.common.projects.Repository; import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; import org.jboss.forge.common.projects.permissions.PermissionsChecker; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesPlugin.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -25,7 +25,7 @@ import java.util.Map; import java.util.HashMap; -import org.jboss.forge.status.common.Tags; +import org.jboss.forge.common.projects.Repository; import org.jboss.forge.status.plugins.Plugin; /** @@ -61,24 +61,19 @@ long cl = 0; - String url = getProperty(projectId, Tags.SVN_REPO_ADRESS_TAG); + Repository repo = projects.getProjectRepository(projectId); - if (url != null) { + if (repo != null) { - String userName = getProperty(projectId, Tags.SVN_USERNAME_TAG); - String password = getProperty(projectId, Tags.SVN_PASSWD_TAG); + String url = repo.getLocation(); + String userName = repo.getUsername(); + String password = repo.getPassword(); cl = getValue(url, userName, password); + cashedValues.put(projectId, new Long(cl)); } - - cashedValues.put(projectId, new Long(cl)); } return cashedValues.get(projectId).longValue(); } - - private String getProperty(String projectId, String propertyName) { - String prop = projects.getProjectProperty(projectId, propertyName); - return (prop == "" ? null : prop); - } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java 2006-05-19 15:58:33 UTC (rev 4327) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/svn/SvnStatusPlugin.java 2006-05-19 18:02:13 UTC (rev 4328) @@ -25,6 +25,7 @@ import java.util.List; import java.net.MalformedURLException; +import org.jboss.forge.common.projects.Repository; import org.jboss.forge.status.common.Tags; import org.jboss.forge.status.plugins.KosmosStatusPlugin; import org.jboss.logging.Logger; @@ -62,7 +63,7 @@ String repoURL = getRepoURL(projectId); if (repoURL == null) { - return null; + return null; } SvnRepository repository = null; @@ -95,9 +96,23 @@ return repository; } + + /** + * For the given project id, returns project SVN repository location or + * null if no such project exist or its repository is not SVN repository. + */ private String getRepoURL(String projectId) { - String repoURL = projects.getProjectProperty(projectId, Tags.SVN_REPO_ADRESS_TAG); - return (repoURL == "" ? null : repoURL); + + Repository repository = projects.getProjectRepository(projectId); + if (repository == null) { + return null; + } + + if (repository.getType() == Repository.SVN_REPOSITORY) { + return repository.getLocation(); + } else { + return null; + } } @Override |