From: <jbo...@li...> - 2005-11-23 00:01:10
|
Author: wrzep Date: 2005-11-22 19:01:00 -0500 (Tue, 22 Nov 2005) New Revision: 1625 Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java Modified: trunk/forge/portal-extensions/forge-status/project.xml trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java Log: Added plugin counting total #commits in project's svn repo. http://jira.jboss.com/jira/browse/JBLAB-415 Pawel Modified: trunk/forge/portal-extensions/forge-status/project.xml =================================================================== --- trunk/forge/portal-extensions/forge-status/project.xml 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/project.xml 2005-11-23 00:01:00 UTC (rev 1625) @@ -65,7 +65,8 @@ <dependency> <groupId>hessian</groupId> <artifactId>hessian</artifactId> - <version>3.0.1</version> <!-- WE NEED 3.0.13 --> + <version>3.0.13</version> + <jar>hessian-3.0.13.jar</jar> <properties> <war.bundle>true</war.bundle> </properties> Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -33,6 +33,12 @@ import java.util.ArrayList; import java.util.concurrent.Delayed; +import org.jboss.forge.common.projects.Projects; +import org.jboss.forge.common.projects.ProjectsHelper; + +import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; +import org.jboss.forge.common.projects.permissions.PermissionsChecker; + import org.jboss.forge.common.XmlTools; import org.jboss.forge.common.projects.AbstractDescriptor; import org.jboss.forge.common.projects.permissions.PermissionsChecker; @@ -54,13 +60,13 @@ import org.jboss.forge.status.plugins.OneStatusPlugin; import org.jboss.forge.status.plugins.SvnStatusPlugin; +import org.jboss.logging.Logger; + /** * @author Pawel Wrzeszcz */ public class Status extends AbstractDescriptor { - private final static String PROJECT_ELEMENT = "project"; - private final static String PLUGIN_ELEMENT = "plugin"; private final static String PLUGIN_ID_ELEMENT = "id"; @@ -71,16 +77,17 @@ private String portalName; private ScoreAlgorithmFactory scoreAlgorithm; - private Set<String> projects; + private Projects projects; private List<StatusPlugin> plugins; - Status(String portalName, Node projectsRoot, Node pluginsRoot, ScoreAlgorithmFactory scoreAlgorithm) { + private Logger log; + + Status(String portalName, Node pluginsRoot, ScoreAlgorithmFactory scoreAlgorithm) { this.portalName = portalName; this.scoreAlgorithm = scoreAlgorithm; // Get the projects - projects = new HashSet<String>(); - projects = getStringsFromNode(projectsRoot, PROJECT_ELEMENT); + projects = ProjectsHelper.getProjects(portalName); // Get the plugins HashSet<String> pluginElementSet = new HashSet<String>(); @@ -113,12 +120,17 @@ /* Fill the context with appropiate values (from each plugin) for each project, */ /* including final score as well. */ - int position = 1; - for (Iterator iter = projects.iterator(); iter.hasNext(); position++) { - String projectName = (String) iter.next(); + PermissionsChecker permissionsChecker = (PermissionsChecker) new NullPermissionsChecker(); + String projectLevel = null; + Set<String> projectIds = projects.getProjectIds(permissionsChecker, projectLevel); + + int position = 0; + for (Iterator iter = projectIds.iterator(); iter.hasNext();) { + String projectId = (String) iter.next(); + position++; DelegateContext projectContext = new DelegateContext(); - fillProjectContext(projectContext, projectName, position); + fillProjectContext(projectContext, projectId, position); context.append("project", projectContext); } @@ -127,9 +139,11 @@ private void fillProjectContext(DelegateContext projectContext, String projectId, int position) { - projectContext.put("name", projectId); projectContext.put("position", position); + projectContext.put("name", projects.getProjectName(projectId)); + projectContext.put("link", projects.getProjectLink(projectId)); + int projectScore = calculateScore(projectId); projectContext.put("score", projectScore); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -55,10 +55,7 @@ private Status status; public StatusDescriptor(String portalName, ContentManager cm) { - try { - String projectsPath = StatusTools.getPrjXmlCmPath(portalName); - Node projectsRoot = getRoot(cm, projectsPath); - + try { String pluginsPath = StatusTools.getXmlCmPath(portalName,"plugins.xml"); Node pluginsRoot = getRoot(cm, pluginsPath); @@ -66,7 +63,7 @@ if ((root.getNodeType() == Node.ELEMENT_NODE) && (root.getNodeName().equals("projects"))) {}*/ - status = new Status(portalName, projectsRoot, pluginsRoot, new WeightedScoreAlgorithmFactory()); + status = new Status(portalName, pluginsRoot, new WeightedScoreAlgorithmFactory()); fillContext(); Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusNodeWatcher.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -26,7 +26,6 @@ import org.jboss.shotoku.ContentManager; public class StatusNodeWatcher implements NodeWatcher { - private ResourceWatcher rw; private ContentManager cm; public StatusNodeWatcher(ContentManager cm) { @@ -34,12 +33,7 @@ } private StatusDescriptor getDesc(String portalName) { - StatusDescriptor desc = new StatusDescriptor(portalName, cm); - - rw = new ResourceWatcher(cm); - rw.watchResource(StatusTools.getPrjXmlCmPath(portalName)); - - return desc; + return new StatusDescriptor(portalName, cm); } public Object init(String portalName) { @@ -47,9 +41,6 @@ } public Object nodeUpdate(String portalName, Object currentValue) { - if ((currentValue == null) || (rw.checkResources())) - return getDesc(portalName); - else - return null; + return getDesc(portalName); } } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/WeightedScoreAlgorithmFactory.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -23,6 +23,7 @@ package org.jboss.forge.status; import java.util.Collection; +import java.util.Iterator; import java.util.Map; import java.util.HashMap; @@ -39,6 +40,14 @@ public WeightedScoreAlgorithmFactory() {} public int calculateScore(String projectId, Collection<StatusPlugin> plugins) { - return 17; + int total = 0; + + for (Iterator iter = plugins.iterator(); iter.hasNext();) { + StatusPlugin plugin = (StatusPlugin) iter.next(); + + total += plugin.getValue(projectId); // TODO weights + } + + return total; } } Added: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/CommitsTotalStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -0,0 +1,65 @@ +/* + * 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.status.plugins; + +import java.util.Map; +import java.util.HashMap; + +/** +* @author Pawel Wrzeszcz +*/ + +public class CommitsTotalStatusPlugin extends SvnStatusPlugin { + + protected static String PLUGIN_NAME = "Commits total"; + protected static String PLUGIN_ID = "commitstotal"; + + private Map<String,Map> projects; + + public String getId() { return PLUGIN_ID; } + public String getName() { return PLUGIN_NAME; } + + public CommitsTotalStatusPlugin() { + projects = new HashMap<String,Map>(); + } + + public int getValue(String projectId) { + + if (!projects.containsKey(projectId)) { + projects.put(projectId, getProjectMap(projectId)); + } + + Map projectMap = projects.get(projectId); + + + System.out.println("commits class " + projectMap.get("commitsTotal").getClass()); + return ((Integer)projectMap.get("commitsTotal")).intValue(); + } + + private Map getProjectMap(String projectId) { + String repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; // DEBUG ;-) + + return getSvnRepository(repoUrl); + } + +} \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/JiraStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -22,6 +22,8 @@ package org.jboss.forge.status.plugins; +import java.util.Iterator; +import java.util.Collection; import java.util.List; import com.caucho.hessian.client.HessianProxyFactory; @@ -37,18 +39,18 @@ public abstract class JiraStatusPlugin extends StatusPlugin { - protected List<JiraProject> getJiraProjects() { + protected Collection<JiraProject> getJiraProjects() { //Get the projects from kosmo server - List<JiraProject> jiraProjects = null; + Collection<JiraProject> jiraProjects = null; System.out.println("KOSMOS 00"); JiraService service = null; - System.out.println("KOSMOS 001"); + HessianProxyFactory factory = new HessianProxyFactory(); - System.out.println("KOSMOS 002"); + String serviceUrl = "http://localhost:8080/kosmos-server/kosmos-services/jira-service"; - System.out.println("KOSMOS 003"); + try { @@ -67,10 +69,17 @@ System.out.println("***\nKOSMOS jboss\n***"); jiraProjects = service.getProjects("http://jira.jboss.com"); */ + System.out.println("***\nKOSMOS jblab\n***"); jiraProjects = service.getProjects("http://jira.jboss.com/jira/browse/JBLAB"); + System.out.println("class: " + service.getProjects("http://jira.jboss.com/jira/browse/JBLAB").getClass()); System.out.println("KOSMOS FF"); + + for (JiraProject project : jiraProjects) { + + System.out.println("project " + project.getName() + " / " + project.getKey()); + } } catch (Exception e) { e.printStackTrace(); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/OneStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -36,6 +36,6 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public String getValue(String projectId) { return "one :-)";} ; + public int getValue(String projectId) { return -1; } ; } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/ResolvedIssuesStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -36,8 +36,8 @@ public String getId() { return PLUGIN_ID; }; public String getName() { return PLUGIN_NAME; }; - public ResolvedIssuesStatusPlugin() {getJiraProjects();}; + public ResolvedIssuesStatusPlugin() { getJiraProjects(); }; - public String getValue(String projectId) { return "3";} ; + public int getValue(String projectId) { return 0;} ; } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/StatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -32,6 +32,6 @@ public abstract String getName(); - public abstract String getValue(String projectId); + public abstract int getValue(String projectId); } Modified: trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-22 23:39:58 UTC (rev 1624) +++ trunk/forge/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/SvnStatusPlugin.java 2005-11-23 00:01:00 UTC (rev 1625) @@ -22,7 +22,9 @@ package org.jboss.forge.status.plugins; +import java.util.Iterator; import java.util.List; +import java.util.Map; import com.caucho.hessian.client.HessianProxyFactory; @@ -33,75 +35,37 @@ * @author Pawel Wrzeszcz */ -public /*abstract*/ class SvnStatusPlugin extends StatusPlugin { +public abstract class SvnStatusPlugin extends StatusPlugin { - public SvnStatusPlugin() {getSvnRepositories();} - - protected static String PLUGIN_NAME = "Svn"; - protected static String PLUGIN_ID = "svn"; - - public String getId() { return PLUGIN_ID; }; - public String getName() { return PLUGIN_NAME; }; - - public String getValue(String projectId) { return "###"; }; - - protected List<SvnRepository> getSvnRepositories() { - //Get the projects from kosmo server - - List<SvnRepository> repositories = null; + protected Map getSvnRepository(String repoUrl) { - System.out.println("KOSMOS 00"); SvnService service = null; - System.out.println("KOSMOS 001"); HessianProxyFactory factory = new HessianProxyFactory(); - System.out.println("KOSMOS 002"); String serviceUrl = "http://localhost:8080/kosmos-server/kosmos-services/svn-service"; - System.out.println("KOSMOS 003"); + Map m = null; + try { - System.out.println("KOSMOS 01"); service = (SvnService) factory.create(SvnService.class, serviceUrl); - if (service != null) { - System.out.println("KOSMOS service: " + service.toString()); - } else { - System.out.println("KOSMOS service == null"); - } + + //repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; - String repoUrl; - - /* - System.out.println("KOSMOS ant"); - repoUrl = "http://svn.apache.org/repos/asf/ant"; - repositories = service.getRepositories(repoUrl); - - System.out.println("KOSMOS jbosslabs"); - repoUrl = "http://anonsvn.labs.jboss.com/"; - repositories = service.getRepositories(repoUrl); - */ - - System.out.println("KOSMOS jbosslabs trunk"); - repoUrl = "http://anonsvn.labs.jboss.com/trunk/labs/demo"; - try { - System.out.println("KOSMOS 02"); - repositories = service.getRepositories(repoUrl); - System.out.println("KOSMOS 03"); - SvnRepository repo = repositories.get(0); - if (repo != null) { - System.out.println("total commits " + repo.getCommitsTotal()); - } else { - System.out.println("repo == null"); + List repositories = service.getRepositories(repoUrl); + + m = (Map) repositories.get(0); + if (m != null) { + for (Iterator iter = m.keySet().iterator(); iter.hasNext();) { + Object obj = (Object) iter.next(); + System.out.println("object: " + obj + " binding: " + m.get(obj)); } - } catch (Exception e) { - e.printStackTrace(); - } - - System.out.println("KOSMOS FF"); + } + } catch (Exception e) { e.printStackTrace(); } - return repositories; + return m; } } |