[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