[jboss-svn-commits] JBL Code SVN: r6377 - in labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status: common service service/impl service/impl/protocol service/protocol

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 22 14:33:16 EDT 2006


Author: wrzep
Date: 2006-09-22 14:33:10 -0400 (Fri, 22 Sep 2006)
New Revision: 6377

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/Tags.java
   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
   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/protocol/ServiceConfImpl.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/ServiceConf.java
Log:
JBLAB-599
Updates configurable from cms.

Pawel


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-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -25,13 +25,19 @@
 	public static final long CACHE_INTERVAL 			= 3*60*1000; /* milliseconds */
 						   /* Check for new scores every 3 minutes */
 	
-	public static final long SCORES_UPDATE_INTERVAL  = 4*60*60*1000; /* milliseconds */
-	 								  /* Perform update every 4 hours */
+	public static final int SCORES_UPDATE_INTERVAL_DEFAULT  
+														= 24*60; /* minutes */
+	 							/* By default perform update every 24 hours */
 
-	public static final long FIRST_UPDATE_INTERVAL   = 60*1000;	   /* milliseconds */
-									  /* First update after 1 minute */
+	public static final int FIRST_UPDATE_INTERVAL_DEFAULT   = 1;/* minutes */
+								/* By default perform first update after 1 minute */
 
-	
+								/* By default start at midnight */
+	public static final int UPDATE_START_HOUR_DEFAULT 	= 0;
+
+	public static final int UPDATE_START_MINUTE_DEFAULT = 0;
+
+
 	/**
 	 * This class cannot be instatiated.
 	 */

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-09-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Tags.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -58,8 +58,15 @@
 	public static final String METRIC_BOOLEAN_ELEMENT 		= "boolean";
 	
 	/* service.properties tags */
+	public static final String SERVICE_PROPERTIES_PREFIX 		= "service.";
+	
 	public static final String SERVICE_REMOTE_ELEMENT 		= "service.remote";
 	
+	public static final String SERVICE_FIRST_UPDATE_ELEMENT 	= "service.first.update";
+	public static final String SERVICE_UPDATE_START_HOUR_ELEMENT = "service.update.start.hour";
+	public static final String SERVICE_UPDATE_START_MINUTE_ELEMENT = "service.update.start.minute";
+	public static final String SERVICE_UPDATE_INTERVAL_ELEMENT = "service.update.interval";
+	
 	/* plugins.xml tags */
 	
 		/* plugin element*/

Modified: 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-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/ScoresUpdater.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -22,11 +22,13 @@
 
 package org.jboss.forge.status.service;
 
+import org.jboss.forge.status.service.protocol.ServiceConf;
+
 /**
 * @author Pawel Wrzeszcz (pawel . wrzeszcz [at] jboss . com)
 */
 public interface ScoresUpdater {
 	
-	public void init(ScoresManager scoresManager);
+	public void init(ScoresManager scoresManager, ServiceConf conf);
 	
 }
\ No newline at end of file

Modified: 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-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresDailyUpdater.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -35,6 +35,7 @@
 import org.jboss.forge.status.exceptions.ScoresSaveException;
 import org.jboss.forge.status.service.ScoresManager;
 import org.jboss.forge.status.service.ScoresUpdater;
+import org.jboss.forge.status.service.protocol.ServiceConf;
 
 import org.jboss.logging.Logger;
 
@@ -52,13 +53,13 @@
 	
 	private Logger log = Logger.getLogger(ScoresDailyUpdater.class);
 	
-	public void init(ScoresManager scoresManager) {
+	public void init(ScoresManager scoresManager, ServiceConf conf) {
 	
 		 log.info("INIT ScoresManager: " + scoresManager);
 		
 		clearSchedule();
 		
-		scheduleUpdates(scoresManager);
+		scheduleUpdates(scoresManager, conf);
 	}
 
 	@Timeout
@@ -88,20 +89,19 @@
         }
     }
 	
-	private void scheduleUpdates(ScoresManager scoresManager) {
+	private void scheduleUpdates(ScoresManager scoresManager, ServiceConf conf) {
 	
-		timerService.createTimer(Constants.FIRST_UPDATE_INTERVAL, 
-									scoresManager);
+		long firstUpdateMills = conf.getFirstUpdate() * 60 * 1000;
+		long updateIntervalMills = conf.getUpdateInterval() * 60 * 1000;
 		
+		timerService.createTimer(firstUpdateMills, 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);
+		cal.set(Calendar.HOUR_OF_DAY, conf.getUpdateStartHour());
+		cal.set(Calendar.MINUTE, conf.getUpdateStartMinute());
 		
 		timerService.createTimer(cal.getTime(),
-								Constants.SCORES_UPDATE_INTERVAL,
-									scoresManager);
-		
+										updateIntervalMills, scoresManager);
 	}
 }

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-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ServiceScoresManager.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -88,7 +88,7 @@
 			throw new ScoresException(e);
 		}
 		
-		sheduleUpdates();
+		sheduleUpdates(serviceConf);
 	}
 	
 	public void saveAsync(final Projects projects,
@@ -241,13 +241,13 @@
 		return service;
 	}
 	
-private void sheduleUpdates() {
+	private void sheduleUpdates(ServiceConf conf) {
 		
 		ScoresUpdater updater = getScoresUpdater();
 		
 		if (updater != null) {
 			
-			updater.init(this);
+			updater.init(this, conf);
 		}
 	}
 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/ServiceConfImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/ServiceConfImpl.java	2006-09-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/ServiceConfImpl.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -24,6 +24,7 @@
 
 import java.util.Properties;
 
+import org.jboss.forge.status.common.Constants;
 import org.jboss.forge.status.common.Tags;
 import org.jboss.forge.status.service.protocol.ServiceConf;
 import org.jboss.shotoku.Node;
@@ -33,18 +34,71 @@
 */
 public class ServiceConfImpl implements ServiceConf {
 	
-	boolean remoteService;
+	private boolean remoteService;
 	
-	Properties properties;
+	private Properties properties;
 	
+	private int firstUpdate;
+	private int updateInterval;
+	private int updateStartHour;
+	private int updateStartMinute;
+	
+	
 	public ServiceConfImpl(Node serviceNode) {
 		
-		properties = parseProperties(serviceNode);
+		Properties allProperties = parseProperties(serviceNode, null);
 		
-		String remoteString = (String) properties.get(Tags.SERVICE_REMOTE_ELEMENT);
-		remoteService = remoteString.equals("true");
+		setServiceProperties(allProperties);
+		
+		properties = parseProperties(serviceNode,
+											Tags.SERVICE_PROPERTIES_PREFIX);
 	}
 
+	private void setServiceProperties(Properties properties) {
+		
+		String remoteString = (String) properties.get(
+											Tags.SERVICE_REMOTE_ELEMENT);
+		
+		remoteService = (remoteString == null) ? false : remoteString.equals("true");
+		
+		firstUpdate = parseIntProperty(properties,
+								Tags.SERVICE_FIRST_UPDATE_ELEMENT,
+								Constants.FIRST_UPDATE_INTERVAL_DEFAULT);
+		
+		updateInterval = parseIntProperty(properties,
+								Tags.SERVICE_UPDATE_INTERVAL_ELEMENT,
+								Constants.SCORES_UPDATE_INTERVAL_DEFAULT);
+		
+		updateStartHour = parseIntProperty(properties,
+								Tags.SERVICE_UPDATE_START_HOUR_ELEMENT,
+								Constants.UPDATE_START_HOUR_DEFAULT);
+		
+		updateStartMinute = parseIntProperty(properties,
+								Tags.SERVICE_UPDATE_START_MINUTE_ELEMENT,
+								Constants.UPDATE_START_MINUTE_DEFAULT);
+		
+	}
+
+	private static int parseIntProperty(Properties properties, String element,
+														int defaultValue) {
+		
+		String string = (String) properties.get(element);
+
+		if (string != null) {
+			
+			try {
+
+				return Integer.parseInt(string);
+
+			} catch (NumberFormatException e) {
+				
+				// Do nothing
+			}
+		}
+				
+		return defaultValue;
+	}
+
 	public boolean isRemote() {
 		return remoteService;
 	}
@@ -53,26 +107,51 @@
 		return properties;
 	}
 
-	private Properties parseProperties(Node serviceNode) {
+	private Properties parseProperties(Node serviceNode,
+											String excludePrefix) {
 		
+		Properties props = new Properties();
+		
 		if (serviceNode == null) {
-			return null;
+			return props;
 		}
 		
-		Properties props = new Properties();
-		
 		String propsString = serviceNode.getContent();
 		String[] propsArr = propsString.split("\n");
 		
 		for (String propString : propsArr) {
 			
 			String[] propArr = propString.split("=");
-			if ((propArr != null) && (propArr.length == 2)) {
+			
+			if ((propArr != null) && (propArr.length == 2) && 
+					((excludePrefix == null) ||
+								(!propArr[0].startsWith(excludePrefix)))) {
+				
 				props.put(propArr[0], propArr[1]);
 			}
 					
 		}
 		
 		return props;
+	}
+
+	public int getFirstUpdate() {
+		
+		return firstUpdate;
+	}
+
+	public int getUpdateInterval() {
+		
+		return updateInterval;
+	}
+
+	public int getUpdateStartHour() {
+		
+		return updateStartHour;
+	}
+
+	public int getUpdateStartMinute() {
+		
+		return updateStartMinute;
 	}	
 }
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/ServiceConf.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/ServiceConf.java	2006-09-22 17:41:29 UTC (rev 6376)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/ServiceConf.java	2006-09-22 18:33:10 UTC (rev 6377)
@@ -30,6 +30,14 @@
 public interface ServiceConf {
 
 	public boolean isRemote();
+	
+	public int getFirstUpdate();
+	
+	public int getUpdateStartHour();
+	
+	public int getUpdateStartMinute();
+	
+	public int getUpdateInterval();
 
 	public Properties getProperties();
 	




More information about the jboss-svn-commits mailing list