Author: wrzep Date: 2006-06-29 07:37:43 -0400 (Thu, 29 Jun 2006) New Revision: 4868 Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/AddedCodeLinesPlugin.java Removed: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesAdded7DaysPlugin.java 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/plugins/KosmosStatusPlugin.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Plugins.java Log: JBLAB-599 Configurable number of days considered while computing number of added code lines. Pawel 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-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tags.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -71,6 +71,8 @@ public static final String CC_SERVICE_PROPERTY = "cc-service"; public static final String CC_ADRESS_TAG = "cc-address"; + + public static final String DAYS_TAG = "days"; 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/KosmosStatusPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/KosmosStatusPlugin.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -81,7 +81,7 @@ private void getServiceProperty(Properties properties) throws InvalidPluginPropertiesException { - if (properties.isEmpty()) { + if ((properties == null) || (properties.isEmpty())) { throw new InvalidPluginPropertiesException( "Missing properties for plugin: " + getId() + "."); } Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/AddedCodeLinesPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/AddedCodeLinesPlugin.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/AddedCodeLinesPlugin.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -0,0 +1,79 @@ +/* + * 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.codelines; + +import java.util.Properties; + +import org.jboss.forge.common.projects.Projects; +import org.jboss.forge.status.common.Tags; +import org.jboss.forge.status.exceptions.InvalidPluginPropertiesException; +import org.jboss.forge.status.tools.Plugins; + +/** +* @author Pawel Wrzeszcz +* Plugin returns number of lines of code added recently +* to project svn repository within specified number of days. +*/ + +public class AddedCodeLinesPlugin extends CodeLinesPlugin { + + private int days; + + @Override + public void init(String id, String portalName, Projects projects, + Plugins plugins, Properties properties) + throws InvalidPluginPropertiesException { + + if (properties == null ) { + throw new InvalidPluginPropertiesException( + "Missing properties."); + } + + String daysString = properties.getProperty(Tags.DAYS_TAG); + + if (daysString == null) { + throw new InvalidPluginPropertiesException( + "Missing \'days\' property."); + } + + days = Integer.parseInt(daysString); + + super.init(id, portalName, projects, plugins, properties); + } + + @Override + protected long getValue(String url, String userName, String password) { + + long ret = 0; + + if ((userName != null) && (password != null)) { + ret = CodeLinesEvaluator. + getAddedCodeLines(url, userName, password, days); + } else { + ret = CodeLinesEvaluator.getAddedCodeLines(url, days); + } + + return Math.max(ret,0); // Do not report decrease of number of lines?? + } + +} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesAdded7DaysPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesAdded7DaysPlugin.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesAdded7DaysPlugin.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -1,47 +0,0 @@ -/* - * 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.codelines; - -/** -* @author Pawel Wrzeszcz -* Plugin returns number of lines of code added during last 7 days -* to project svn repository. -*/ - -public class CodeLinesAdded7DaysPlugin extends CodeLinesPlugin { - - @Override - protected long getValue(String url, String userName, String password) { - - long ret = 0; - - if ((userName != null) && (password != null)) { - ret = CodeLinesEvaluator.getCodeLinesAdded7Days(url, userName, password); - } else { - ret = CodeLinesEvaluator.getCodeLinesAdded7Days(url); - } - - return Math.max(ret,0); // Do not report decrease of number of lines - } - -} Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/plugins/codelines/CodeLinesEvaluator.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -81,29 +81,35 @@ } /** - * Evaluates number of code lines added last 7 days to secure SVN repository. + * Evaluates number of code lines added to recently repository + * within specified number of days. * * @param url SVN repository adress * @param userName user's name used in authorisation * @param password user's password used in authorisation + * @param days * @return number of code lines */ - public static long getCodeLinesAdded7Days(String url, String userName, String password) { + public static long getAddedCodeLines(String url, String userName, + String password, int days) { SVNRepository repository = getRepository(url, userName, password); - return (repository != null) ? getCodeLinesAdded7Days(repository, "") : 0; + return (repository != null) ? + getAddedCodeLines(repository, "", days) : 0; } /** - * Evaluates number of code lines added last 7 days to anonymus SVN repository. + * Evaluates number of code lines added recently to anonymus SVN repository + * within specified number of days. * * @param url SVN repository adress + * @param days * @return number of code lines */ - public static long getCodeLinesAdded7Days(String url) { - return getCodeLinesAdded7Days(url, "anonymous", "anonymus"); + public static long getAddedCodeLines(String url, int days) { + return getAddedCodeLines(url, "anonymous", "anonymus", days); } /** @@ -233,20 +239,44 @@ /** * For the given repository evaluates number of code lines - * added during last 7 days in files located in <code>path</code>. + * added during last <code>days</days> days in files located + * in <code>path</code>. * * @param repository SVN repository adress * @param path path to SVN directory + * @param days * @return number of code lines added last 7 days */ - private static long getCodeLinesAdded7Days(SVNRepository repository, String path) { + private static long getAddedCodeLines(SVNRepository repository, + String path, int days) { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DAY_OF_MONTH, -days); + Date prevDate = cal.getTime(); + + SVNRevision fromRev = SVNRevision.create(prevDate); + + return getAddedCodeLines(repository, path, + fromRev, SVNRevision.HEAD); + } + + /** + * For the given repository evaluates number of code lines + * added from <code>fromRev</code> revision to <code>toRev</code> revision + * in <code>path</code>. + * + * @param repository SVN repository adress + * @param path path to SVN directory + * @param fromRev + * @param toRev + * @return number of added code lines + */ + private static long getAddedCodeLines(SVNRepository repository, + String path, SVNRevision fromRev, + SVNRevision toRev) { long cl = 0; - try { - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.DAY_OF_MONTH, -7); - Date prevDate = cal.getTime(); + try { OutputStream baos = new ByteArrayOutputStream(); @@ -256,8 +286,8 @@ diffClient.doDiff(repository.getLocation(), SVNRevision.HEAD, - SVNRevision.create(prevDate), - SVNRevision.HEAD, + fromRev, + toRev, true, true, baos); @@ -269,7 +299,6 @@ } catch (SVNException e) { e.printStackTrace(); } - return cl; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -39,13 +39,10 @@ import org.jboss.annotation.ejb.LocalBinding; import org.jboss.annotation.ejb.RemoteBinding; -import org.jboss.annotation.ejb.Service; - import org.jboss.forge.common.projects.Projects; import org.jboss.forge.status.common.Constants; import org.jboss.forge.status.common.Locations; -import org.jboss.forge.status.common.Tags; import org.jboss.forge.status.exceptions.GetScoresException; import org.jboss.forge.status.exceptions.ScoresSaveException; import org.jboss.forge.status.service.ScoresService; @@ -67,10 +64,9 @@ * @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com) */ -//@Service(objectName=Tags.STATUS_SERVICE_NAME) @Stateless -//@Local(ScoresServiceLocal.class) -//@LocalBinding(jndiBinding=Constants.STATUS_LOCAL_SERVICE) +@Local(ScoresServiceLocal.class) +@LocalBinding(jndiBinding=Constants.STATUS_LOCAL_SERVICE) @Remote(ScoresServiceRemote.class) @RemoteBinding(jndiBinding=Constants.STATUS_REMOTE_SERVICE) public class ScoresServiceImpl implements ScoresService { Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Plugins.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Plugins.java 2006-06-29 10:03:24 UTC (rev 4867) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Plugins.java 2006-06-29 11:37:43 UTC (rev 4868) @@ -117,7 +117,8 @@ this, pluginProperties); } catch (InvalidPluginPropertiesException e) { - log.warn(e); + log.warn("Plugin class: " + pluginClassString + + ". Initialization failed.", e); return null; } catch (Exception e) { log.error("Plugin class: " + pluginClassString + |