From: <jbo...@li...> - 2006-05-19 19:19:09
|
Author: wrzep Date: 2006-05-19 15:18:58 -0400 (Fri, 19 May 2006) New Revision: 4329 Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/IssueTracker.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-common/src/java/org/jboss/forge/common/projects/Repository.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/common/Tags.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java Log: JBLAB-603 Consistent project issue tracker location handling. Pawel Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/IssueTracker.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/IssueTracker.java 2006-05-19 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/IssueTracker.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -0,0 +1,66 @@ + +/* + * 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 IssueTracker { + + public static final String ISSUE_TRACKER_ELEMENT = "issue-tracker"; + + public static final short JIRA_ISSUE_TRACKER = 0; + public static final short OTHER_ISSUE_TRACKER = 1; + + private static final String TYPE_ATTRIBUTE = "type"; + + private static final String OTHER_ISSUE_TRACKER_STRING = "other"; + + private String location; + private short type; + + public IssueTracker(Node root) { + + location = XmlTools.unmarshallText(root); + + String typeString = XmlTools.getAttributeValue(root, TYPE_ATTRIBUTE); + + type = JIRA_ISSUE_TRACKER; + if (typeString.equalsIgnoreCase(OTHER_ISSUE_TRACKER_STRING)) { + type = OTHER_ISSUE_TRACKER; + } + } + + public short getType() { + return type; + } + + public String getLocation() { + return location; + } +} 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 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectDescriptor.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -63,6 +63,9 @@ private Node repositoryNode; private Repository repository; + + private Node issueTrackerNode; + private IssueTracker issueTracker; /** * Reads information about a project from an xml file. @@ -132,6 +135,10 @@ if (repositoryNode != null) { repository = new Repository(repositoryNode); } + + if (issueTrackerNode != null) { + issueTracker = new IssueTracker(issueTrackerNode); + } } /** @@ -198,6 +205,9 @@ if (Repository.REPOSITORY_ELEMENT.equals(node.getNodeName())) { setRepositoryNode(node); } + if (IssueTracker.ISSUE_TRACKER_ELEMENT.equals(node.getNodeName())) { + setIssueTrackerNode(node); + } } public void collect(PropertiesMap properties, Object data, @@ -392,6 +402,10 @@ repositoryNode = node; } + private void setIssueTrackerNode(Node node) { + issueTrackerNode = node; + } + /** * Gets a repository for this project. * @return An object representing this project's repository. @@ -399,4 +413,12 @@ public Repository getProjectRepository() { return repository; } + + /** + * Gets an issue tracker for this project. + * @return An object representing this project's issue tracker. + */ + public IssueTracker getProjectIssueTracker() { + return issueTracker; + } } 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 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Projects.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -265,4 +265,11 @@ public Repository getProjectRepository(String projectId) { return getProjectsDescriptor().getProjectRepository(projectId); } + + /** + * For the given project id, returns project issue tracker. + */ + public IssueTracker getProjectIssueTracker(String projectId) { + return getProjectsDescriptor().getProjectIssueTracker(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 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -709,4 +709,26 @@ return pd.getProjectRepository(); } + + /** + * For the given project id, returns project issue tracker. + * + * @param projectId + * Id of the project. + * @return project issue tracker or null if no such project exists. + */ + public IssueTracker getProjectIssueTracker(String projectId) { + + if (!projectAdmissable(projectId)) { + return null; + } + + ProjectDescriptor pd = projects.get(projectId); + + if (pd == null) { + return null; + } + + return pd.getProjectIssueTracker(); + } } Modified: 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 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/Repository.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -36,14 +36,14 @@ public static final short SVN_REPOSITORY = 0; public static final short CVS_REPOSITORY = 1; - public static final short UNKNOWN_REPOSITORY = 2; + public static final short OTHER_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 static final String OTHER_REPOSITORY_STRING = "other"; private String location; private String username; @@ -58,13 +58,14 @@ String typeString = XmlTools.getAttributeValue(root, TYPE_ATTRIBUTE); - type = UNKNOWN_REPOSITORY; - if (typeString.equalsIgnoreCase(SVN_REPOSITORY_STRING)) { - type = SVN_REPOSITORY; - } + type = SVN_REPOSITORY; // default type is SVN + if (typeString.equalsIgnoreCase(CVS_REPOSITORY_STRING)) { type = SVN_REPOSITORY; } + if (typeString.equalsIgnoreCase(OTHER_REPOSITORY_STRING)) { + type = OTHER_REPOSITORY; + } } public short getType() { 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 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -30,7 +30,6 @@ 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/common/Tags.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tags.java 2006-05-19 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tags.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -66,17 +66,11 @@ public final static String PLUGIN_CLASS_ELEMENT = "class"; public final static String PLUGIN_PROPERTIES_ELEMENT = "properties"; - /* project.xml files tags */ public static final String JIRA_SERVICE_PROPERTY = "jira-service"; - public static final String JIRA_ADRESS_TAG = "jira-address"; public static final String SVN_SERVICE_PROPERTY = "svn-service"; - public static final String CC_SERVICE_PROPERTY = "cc-service"; - public static final String CC_ADRESS_TAG = "cc-address"; - public static final String SVN_REPO_ADRESS_TAG = "svn-repo"; - public static final String SVN_USERNAME_TAG = "svn-username"; - public static final String SVN_PASSWD_TAG = "svn-passwd"; + public static final String CC_ADRESS_TAG = "cc-address"; public static final String STATUS_SERVICE_NAME = "status:service=scores"; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java 2006-05-19 18:02:13 UTC (rev 4328) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/jira/JiraStatusPlugin.java 2006-05-19 19:18:58 UTC (rev 4329) @@ -25,6 +25,7 @@ import java.util.List; import java.net.MalformedURLException; +import org.jboss.forge.common.projects.IssueTracker; import org.jboss.forge.status.common.Tags; import org.jboss.forge.status.plugins.KosmosStatusPlugin; import org.jboss.logging.Logger; @@ -95,8 +96,14 @@ private String getJiraURL(String projectId) { - String jiraURL = projects.getProjectProperty(projectId, Tags.JIRA_ADRESS_TAG); - return (jiraURL == "" ? null : jiraURL); + IssueTracker it = projects.getProjectIssueTracker(projectId); + + if ((it == null) + || (it.getType() != IssueTracker.JIRA_ISSUE_TRACKER)) { + return null; + } + + return it.getLocation(); } @Override |