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 +
|