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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 22 06:58:15 EDT 2006


Author: wrzep
Date: 2006-07-22 06:58:11 -0400 (Sat, 22 Jul 2006)
New Revision: 5244

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/service/impl/DBScoresRepositoryManager.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBServiceImpl.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/db/PluginsValuesEntity.java
   labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java
Log:
JBLAB-689
Getting scores from DB works properly now.

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-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -70,8 +70,7 @@
 	private Projects projects;
 
 	private List<PluginConf> pluginsConf;
-	
-	private Calendar updateDate;
+
 	private boolean firstSave = false; /* true iff first save was performed */
 	
 	private ScoresManager scoresManager;
@@ -100,7 +99,6 @@
 		//	Get latest available scores
 		try { 	
 			pluginsValues = scoresManager.getLatestScores();
-			updateDate = pluginsValues.getDate();
 		} catch (GetScoresException e) {
 			log.warn("Getting computed scores failed ", e);
 			scoresManager.saveAsync(projects, pluginsConf);			
@@ -213,36 +211,41 @@
 		
 		PluginsValues pluginsValues = null;
 		
-		if (needsSave(updateDate)) {
+		try {
+			pluginsValues = scoresManager.getLatestScores();
+		} catch (GetScoresException e) {
+			log.warn("Failed to get latest scores.", e);
+		}
+		
+		boolean update = (pluginsValues == null) ||
+							needsSave(pluginsValues.getDate());
 			
+		if (update) {
+			
 			try {
 				scoresManager.save(projects, pluginsConf);
+				firstSave = true;
+				
+				pluginsValues = scoresManager.getLatestScores();
+			
+				refreshScores(pluginsValues);
+				log.info("Refreshed scores.");
+				
 			} catch (ScoresSaveException e) {
-				log.warn("Saving scores failed.");
+				log.warn("Saving scores failed.", e);
+				return false;
+			} catch (GetScoresException e) {
+				log.warn("Failed to get updated scores.", e);
+				return false;
 			}
-		}
+		}	
 		
-		try {
-			pluginsValues = scoresManager.getLatestScores();
-		} catch (GetScoresException e) {
-			log.warn("Failed to get lates scores.");
-		}
-		
-		if ((pluginsValues != null) && 
-				(!pluginsValues.getDate().equals(updateDate))) {
-		
-			refreshScores(pluginsValues);
-			log.info("Refreshed scores.");
-			return true;
-		}
-		
-		return false;
+		return update;
 	}
 
 	private boolean needsSave(Calendar date) {
 		
 		if (!firstSave) {
-			firstSave = true;
 			return true;
 		}
 		
@@ -255,8 +258,7 @@
 		
 		mainPageColumns.update(pluginsValues);
 		matrixTemplate.update(pluginsValues);
-		
-		updateDate = pluginsValues.getDate();
+
 	}
 
 }
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBScoresRepositoryManager.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBScoresRepositoryManager.java	2006-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBScoresRepositoryManager.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -35,6 +35,7 @@
 import org.jboss.forge.status.service.DBService;
 import org.jboss.forge.status.service.ScoresRepositoryManager;
 import org.jboss.forge.status.service.protocol.PluginsValues;
+import org.jboss.forge.status.tools.Tools;
 
 
 /**
@@ -65,6 +66,8 @@
 		
 		PluginsValues pv = null;
 		
+		Tools.truncate(cal);	
+		
 		try {
 			pv = service.get(cal);
 		} catch (Exception e) {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBServiceImpl.java	2006-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/DBServiceImpl.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -27,9 +27,12 @@
 
 import javax.ejb.Local;
 import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
+import javax.persistence.TemporalType;
 
 import org.jboss.annotation.ejb.LocalBinding;
 
@@ -50,9 +53,17 @@
 	@PersistenceContext (unitName="scores")
     protected EntityManager em;
 	
-	public void save(PluginsValues pluginsValues) {
+	@TransactionAttribute(TransactionAttributeType.REQUIRED)
+	public void save(PluginsValues toSave) {
+				
+		PluginsValues pv = get(toSave.getDate());
 		
-		em.persist(pluginsValues);
+		if (pv.getDate().equals(toSave.getDate())) {
+			
+			em.remove(pv);
+		}
+		
+		em.persist(toSave);
 	}
 
 	public PluginsValues get(Calendar date) {
@@ -61,14 +72,17 @@
 		
 		Query query = em.createQuery(
 				" SELECT c FROM PluginsValuesEntity c " +
-				" LEFT JOIN FETCH c.values cv " + "" +
-				" LEFT JOIN FETCH cv.values");
+				" LEFT JOIN FETCH c.values cv " +
+				" LEFT JOIN FETCH cv.values " +
+				" WHERE c.date = :date ");
+		
+		query.setParameter("date", date, TemporalType.DATE);
 
 		list = query.getResultList();
 		
 		System.out.println("get(0): " + list.get(0));
 		
-		return (PluginsValues) list.get(0);
+		return (list.size() == 0 ? null : (PluginsValues) list.get(0));
 	}	
 	
 }

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-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ServiceScoresManager.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -45,6 +45,7 @@
 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;
 
@@ -56,6 +57,7 @@
 	
 	private Properties properties;
 	private boolean isRemote;
+	private boolean asyncSave = false;
 	private Logger log;
 	
 	private ScoresService service;
@@ -94,9 +96,14 @@
 	
 	private synchronized void saveAsyncOnce(Projects projects,
 										List<PluginConf> pluginsConf) {
+		if (asyncSave) {
+			return;
+		}
+		
 		try {
 			log.info("Saving scores asynchronously...");
 			save(projects, pluginsConf);
+			asyncSave = true;
 			log.info("Finished async save.");
 		} catch (ScoresSaveException e) {
 			log.warn("Async saving scores failed.", e);
@@ -140,6 +147,7 @@
 									throws GetScoresException {
 		
 		Calendar cal = Calendar.getInstance();
+		Tools.truncate(cal);
 		int attempts = 0;
 		
 		for(;;) {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/db/PluginsValuesEntity.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/db/PluginsValuesEntity.java	2006-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/db/PluginsValuesEntity.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -37,6 +37,8 @@
 import javax.persistence.MapKey;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
 
 import org.jboss.forge.common.projects.Projects;
 import org.jboss.forge.common.projects.permissions.NullPermissionsChecker;
@@ -44,6 +46,7 @@
 import org.jboss.forge.status.service.protocol.PluginValues;
 import org.jboss.forge.status.service.protocol.PluginsValues;
 import org.jboss.forge.status.tools.Plugins;
+import org.jboss.forge.status.tools.Tools;
 
 /**
  *
@@ -60,6 +63,8 @@
 	private static final long serialVersionUID = 1299912767177909726L;
 
 	private long id;
+	
+	@Temporal(TemporalType.DATE)
     private Calendar date;
     
 	/** Map : pluginId -> pluginValue */
@@ -77,6 +82,7 @@
 	public PluginsValuesEntity(Projects projects, Plugins plugins) {
 		
 		date = Calendar.getInstance();
+		Tools.truncate(date);
 		
 		values = new HashMap<String,PluginValuesEntity>();
 		

Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java	2006-07-22 10:57:51 UTC (rev 5243)
+++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java	2006-07-22 10:58:11 UTC (rev 5244)
@@ -1,5 +1,7 @@
 package org.jboss.forge.status.tools;
 
+import java.util.Calendar;
+
 import org.jboss.forge.status.StatusDescriptor;
 import org.jboss.forge.status.StatusConfWatcher;
 import org.jboss.forge.status.common.Constants;
@@ -19,4 +21,13 @@
 		return conf.get(portalName);
 	}
 	
+	public static void truncate(Calendar cal) {
+		
+		cal.set(Calendar.HOUR_OF_DAY, 0);
+		cal.set(Calendar.MINUTE, 0);
+		cal.set(Calendar.SECOND, 0);
+		cal.set(Calendar.MILLISECOND, 0);
+		
+	}
+	
 }




More information about the jboss-svn-commits mailing list