[jboss-svn-commits] JBL Code SVN: r6327 - in labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status: . common service service/impl
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 20 14:03:07 EDT 2006
Author: wrzep
Date: 2006-09-20 14:03:00 -0400 (Wed, 20 Sep 2006)
New Revision: 6327
Added:
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresUpdater.java
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java
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/StatusDescriptor.java
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresManager.java
labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.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/service/impl/ServiceScoresManager.java
Log:
http://jira.jboss.org/jira/browse/JBLAB-762
Pawel
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-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -192,50 +192,5 @@
mainPageColumns.update(pluginsValues);
matrixTemplate.update(pluginsValues);
}
-
- /*
- private void updateAsync(final PluginsValues pluginsValues) {
-
- new Thread() {
-
- public void run() {
-
- performUpdate(pluginsValues);
- }
-
- }.start();
-
- }
-
- private void performUpdate(PluginsValues pluginsValues) {
-
- try {
- scoresManager.save(projects, pluginsConf);
- firstSave = true;
-
- pluginsValues = scoresManager.getLatestScores();
-
- refreshScores(pluginsValues);
- log.info("Refreshed scores.");
-
- } catch (ScoresSaveException e) {
- log.warn("Saving scores failed.", e);
-
- } catch (GetScoresException e) {
- log.warn("Failed to get updated scores.", e);
- }
- }
-
- private boolean needsSave(Calendar date) {
-
- if (!firstSave) {
- return true;
- }
-
- Calendar now = Calendar.getInstance();
-
- return (now.get(Calendar.DAY_OF_MONTH) != date.get(Calendar.DAY_OF_MONTH));
- }
-*/
}
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -25,6 +25,9 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.projects.ProjectsHelper;
import org.jboss.forge.status.common.Locations;
import org.jboss.forge.status.service.ScoresManager;
import org.jboss.forge.status.service.ScoresRepositoryManager;
@@ -72,14 +75,14 @@
this.portalName = portalName;
this.cm = cm;
- init();
+ init(portalName);
initStatus();
update();
}
- private void init() {
+ private void init(String portalName) {
try {
@@ -93,6 +96,8 @@
Node pluginsNode = Tools.getRoot(cm, pluginsPath);
List<PluginConf> pluginsConf = Tools.getPluginsConfList(pluginsNode);
+ Projects projects = ProjectsHelper.getProjects(portalName);
+
repositoryManager = new DBScoresRepositoryManager();
scoresFactory = new DBScoresFactory();
@@ -101,7 +106,7 @@
serviceConf,
pluginsConf,
repositoryManager,
- scoresFactory);
+ scoresFactory, projects);
} catch (Exception e) {
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -11,10 +11,10 @@
//"java:/ScoresService/local";
public static final String STATUS_REMOTE_SERVICE = "ScoresService/remote";
//"java:/ScoresService/remote";
+
+ public static final String DAILY_SCORES_UPDATER = "DailyScoresUpdater/local";
public static final String DB_SERVICE = "ScoresDBService/local";
-
- public static final long CACHE_INTERVAL = 2*60*1000; /* milliseconds */
public static final String PROJECT_DETAILS_ACTION = "viewProjectDetails";
@@ -22,7 +22,13 @@
public static final long DEFAULT_PLUGIN_VALUE = 0;
+ public static final long CACHE_INTERVAL = 2*60*1000; /* milliseconds */
+ public static final long SCORES_UPDATE_INTERVAL = 15*60*1000; /* milliseconds */
+
+ public static final long FIRST_UPDATE_INTERVAL = 60*1000; /* milliseconds */
+
+
/**
* This class cannot be instatiated.
*/
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresManager.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresManager.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresManager.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -22,11 +22,13 @@
package org.jboss.forge.status.service;
+import java.io.Serializable;
import java.util.Calendar;
import javax.naming.NamingException;
import org.jboss.forge.status.exceptions.GetScoresException;
+import org.jboss.forge.status.exceptions.ScoresSaveException;
import org.jboss.forge.status.service.protocol.PluginsValues;
@@ -34,7 +36,7 @@
* @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
*/
-public interface ScoresManager {
+public interface ScoresManager extends Serializable {
public boolean hasScores(Calendar cal) throws NamingException;
@@ -50,4 +52,6 @@
public long getValue(String id, String projectId,
Calendar start, Calendar end) throws GetScoresException;
+
+ public void save() throws ScoresSaveException;
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresService.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -39,9 +39,10 @@
public void init(String portalName, ScoresManager scoresManager,
ScoresRepositoryManager repositoryManager,
- ScoresFactory scoresFactory, List<PluginConf> pluginsConf);
+ ScoresFactory scoresFactory, List<PluginConf> pluginsConf,
+ Projects projects);
- public void save(Projects projects) throws ScoresSaveException;
+ public void save() throws ScoresSaveException;
public PluginsValues getPluginsValues(Calendar cal)
throws GetScoresException;
Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresUpdater.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresUpdater.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresUpdater.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -0,0 +1,32 @@
+/*
+ * 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.service;
+
+/**
+* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+*/
+public interface ScoresUpdater {
+
+ public void init(ScoresManager scoresManager);
+
+}
\ No newline at end of file
Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -0,0 +1,107 @@
+/*
+ * 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.service.impl;
+
+import java.util.Calendar;
+import javax.annotation.Resource;
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+
+import org.jboss.annotation.ejb.LocalBinding;
+
+import org.jboss.forge.status.common.Constants;
+import org.jboss.forge.status.exceptions.ScoresSaveException;
+import org.jboss.forge.status.service.ScoresManager;
+import org.jboss.forge.status.service.ScoresUpdater;
+
+import org.jboss.logging.Logger;
+
+/**
+* @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
+*/
+
+ at Stateless
+ at Local(ScoresUpdater.class)
+ at LocalBinding(jndiBinding=Constants.DAILY_SCORES_UPDATER)
+public class ScoresDailyUpdater implements ScoresUpdater {
+
+
+ @Resource private javax.ejb.TimerService timerService;
+
+ private Logger log = Logger.getLogger(ScoresDailyUpdater.class);
+
+ public void init(ScoresManager scoresManager) {
+
+ log.info("INIT ScoresManager: " + scoresManager);
+
+ clearSchedule();
+
+ scheduleUpdates(scoresManager);
+ }
+
+ @Timeout
+ public void update(Timer timer) {
+
+ log.info("UPDATE!");
+
+ ScoresManager scoresManager = (ScoresManager) timer.getInfo();
+
+ log.info("ScoresManager: " + scoresManager);
+
+ try {
+ scoresManager.save();
+
+ } catch (ScoresSaveException e) {
+
+ log.warn("Unable to update scores.\nCause: " + e.getMessage());
+ }
+ }
+
+ private void clearSchedule() {
+
+ for (Object obj : timerService.getTimers( )) {
+
+ Timer timer = (Timer) obj;
+ timer.cancel( );
+ }
+ }
+
+ private void scheduleUpdates(ScoresManager scoresManager) {
+
+ timerService.createTimer(Constants.FIRST_UPDATE_INTERVAL,
+ scoresManager);
+
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.DATE, 1);
+ cal.set(Calendar.HOUR_OF_DAY, 0);
+ cal.set(Calendar.MINUTE, 5);
+ //cal.add(Calendar.MINUTE, 2);
+
+ timerService.createTimer(cal.getTime(),
+ Constants.SCORES_UPDATE_INTERVAL,
+ scoresManager);
+
+ }
+}
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-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -27,10 +27,12 @@
import javax.ejb.Local;
import javax.ejb.Remote;
-import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
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;
@@ -52,7 +54,7 @@
* @author Pawel Wrzeszcz (pawel.wrzeszcz [at] gmail.com)
*/
- at Stateful
+ at Service
@Local(ScoresServiceLocal.class)
@LocalBinding(jndiBinding=Constants.STATUS_LOCAL_SERVICE)
@Remote(ScoresServiceRemote.class)
@@ -68,12 +70,14 @@
private ScoresFactory scoresFactory;
private List<PluginConf> pluginsConf;
+ private Projects projects;
public void init(String portalName, ScoresManager scoresManager,
ScoresRepositoryManager repositoryManager,
ScoresFactory scoresFactory,
- List<PluginConf> pluginsConf) {
+ List<PluginConf> pluginsConf,
+ Projects projects) {
this.portalName = portalName;
@@ -82,6 +86,7 @@
this.scoresFactory = scoresFactory;
this.pluginsConf = pluginsConf;
+ this.projects = projects;
log = Logger.getLogger(this.getClass());
}
@@ -94,7 +99,8 @@
* @param portalName
* @return true iff saving was successful
*/
- public void save(Projects projects) throws ScoresSaveException {
+ @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
+ public void save() throws ScoresSaveException {
log.info("Getting plugins...");
@@ -111,6 +117,8 @@
log.info("Saving...");
repositoryManager.save(pluginsValues);
+
+ log.info("Scores saved successfully");
}
@@ -154,6 +162,4 @@
return repositoryManager.getValue(pluginId, projectId, start, end);
}
-
-
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ServiceScoresManager.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ServiceScoresManager.java 2006-09-20 16:59:20 UTC (rev 6326)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ServiceScoresManager.java 2006-09-20 18:03:00 UTC (rev 6327)
@@ -29,6 +29,7 @@
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+
import javax.rmi.PortableRemoteObject;
import org.jboss.forge.common.projects.Projects;
@@ -40,12 +41,14 @@
import org.jboss.forge.status.service.ScoresService;
import org.jboss.forge.status.service.ScoresServiceLocal;
import org.jboss.forge.status.service.ScoresServiceRemote;
+import org.jboss.forge.status.service.ScoresUpdater;
import org.jboss.forge.status.service.protocol.PluginConf;
import org.jboss.forge.status.service.protocol.PluginsValues;
import org.jboss.forge.status.service.protocol.ScoresFactory;
import org.jboss.forge.status.service.protocol.ServiceConf;
import org.jboss.forge.status.tools.Tools;
import org.jboss.forge.status.common.Constants;
+
import org.jboss.logging.Logger;
/**
@@ -53,6 +56,9 @@
*/
public class ServiceScoresManager implements ScoresManager {
+
+
+ private static final long serialVersionUID = 0L;
private Properties properties;
private boolean isRemote;
@@ -65,7 +71,8 @@
ServiceConf serviceConf,
List<PluginConf> pluginsConf,
ScoresRepositoryManager repositoryManager,
- ScoresFactory scoresFactory)
+ ScoresFactory scoresFactory,
+ Projects projects)
throws ScoresException {
properties = serviceConf.getProperties();
@@ -75,12 +82,13 @@
try {
service = getService();
- service.init(portalName, this, repositoryManager,
- scoresFactory, pluginsConf);
+ service.init(portalName, this, repositoryManager, scoresFactory,
+ pluginsConf, projects);
} catch (NamingException e) {
throw new ScoresException(e);
}
+ sheduleUpdates();
}
public void saveAsync(final Projects projects,
@@ -104,7 +112,7 @@
try {
log.info("Saving scores asynchronously...");
- save(projects);
+ save();
asyncSave = true;
log.info("Finished async save.");
} catch (ScoresSaveException e) {
@@ -112,9 +120,9 @@
}
}
- public void save(Projects projects) throws ScoresSaveException {
+ public void save() throws ScoresSaveException {
- service.save(projects);
+ service.save();
}
@@ -232,4 +240,42 @@
return service;
}
+
+private void sheduleUpdates() {
+
+ ScoresUpdater updater = getScoresUpdater();
+
+ if (updater != null) {
+
+ updater.init(this);
+ }
+ }
+
+ private ScoresUpdater getScoresUpdater() {
+
+ ScoresUpdater updater;
+
+ try {
+ Context context = new InitialContext();
+
+ // Perform look up using JNDI name of ejb object
+ String serviceBinding = Constants.DAILY_SCORES_UPDATER;
+
+ Object ref = context.lookup(serviceBinding);
+
+ // Narrow the reference of the object returned by lookup() method
+ updater = (ScoresUpdater) PortableRemoteObject.narrow( ref,
+ ScoresUpdater.class);
+
+ } catch (NamingException e) {
+
+ log.warn("Unable to schedule updates." +
+ "\nCause: " + e.getMessage());
+ return null;
+ }
+
+
+ return updater;
+ }
+
}
More information about the jboss-svn-commits
mailing list