Author: wrzep Date: 2006-05-25 12:40:27 -0400 (Thu, 25 May 2006) New Revision: 4426 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/StatusConfWatcher.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.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/protocol/GetScoresResponseImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java Log: JBLAB-599 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-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -24,6 +24,7 @@ import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,6 +73,8 @@ /** Projects present in the Status Matrix */ private Projects projects; + private List<PluginConf> pluginsConf; + private Timestamp timestamp; private Logger log; @@ -88,7 +91,7 @@ // Get configuration projects = ProjectsHelper.getProjects(portalName); - List<PluginConf> pluginsConf = getPluginsConfList(pluginsRoot); + pluginsConf = getPluginsConfList(pluginsRoot); ServiceConf serviceConf = new ServiceConfImpl(serviceNode); ScoresManagerSync.init(portalName, serviceConf); @@ -206,11 +209,43 @@ return colMap; } + + /** + * @return true iff updated scores are available + */ public boolean needsUpdate() { - PluginsValues pluginsValues = ScoresManager.getScores(timestamp); + PluginsValues pluginsValues; + try { + pluginsValues = ScoresManager.getScores(timestamp); + } catch (GetScoresException e) { + log.warn("Resending \"get\" request failed.", e); + return false; + } + if (pluginsValues == null) { + + Calendar tsCal = Calendar.getInstance(); + tsCal.setTime(timestamp); + Calendar now = Calendar.getInstance(); + + if (tsCal.get(Calendar.DAY_OF_MONTH) != + now.get(Calendar.DAY_OF_MONTH)) { + + try { + ScoresManager.save(projects, pluginsConf); + //TODO *Maybe* get rid of "save", have only "get" + // and service performing "save" on it's own + // (after necessary init)? + timestamp = ScoresManager.requestCurrentScores(); + } catch (ScoresSaveException e) { + log.warn("Sending \"save\" request failed.", e); + } catch (GetScoresException e) { + log.warn("Sending \"get\" request failed.", e); + } + } + return false; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -70,6 +70,7 @@ } @Override + /* Called to check if updated scores are available. */ public void update(String key, StatusDescriptor desc) { desc.update(); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -107,10 +107,10 @@ } } - private static void handleRequest(GetScoresRequest getScoresRequest) { + private static void handleRequest(GetScoresRequest request) { - Calendar cal = getScoresRequest.getCalendar(); - Timestamp timestamp = getScoresRequest.getTimestamp(); + Calendar cal = request.getCalendar(); + Timestamp timestamp = request.getTimestamp(); PluginsValues pluginsValues = null; try { @@ -121,7 +121,7 @@ } GetScoresResponse response = - new GetScoresResponseImpl(pluginsValues, timestamp); + new GetScoresResponseImpl(pluginsValues, request); RecordManager.add(timestamp, response); } 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-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -164,14 +164,14 @@ public PluginsValuesImpl getPluginsValues(String portalName, Calendar cal) throws GetScoresException { - log.info("Returning plugins values..."); + String key = getNodeName(cal); + log.info("Returning plugins values (" + key + ") ..."); // null date means today if (cal == null) { cal = Calendar.getInstance(); } - String key = getNodeName(cal); PluginsValuesImpl v = values.get(key); if (v == null) { // Not in cache => get value and store it @@ -181,7 +181,8 @@ Directory dir; try { - dir = rootDir.getDirectory(Locations.getShotokuStatusPath(portalName)); + dir = rootDir.getDirectory(Locations. + getShotokuStatusPath(portalName)); } catch (RepositoryException e) { throw new GetScoresException(e); } catch (ResourceDoesNotExist e) { Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -22,7 +22,7 @@ package org.jboss.forge.status.service.impl.protocol; -import java.sql.Timestamp; +import org.jboss.forge.status.service.protocol.GetScoresRequest; import org.jboss.forge.status.service.protocol.GetScoresResponse; import org.jboss.forge.status.service.protocol.PluginsValues; @@ -34,23 +34,21 @@ private static final long serialVersionUID = 7844595317056960170L; private PluginsValues pluginsValues; - private Timestamp timestamp; + private GetScoresRequest request; public GetScoresResponseImpl(PluginsValues pluginsValues, - Timestamp timestamp) { + GetScoresRequest request) { this.pluginsValues = pluginsValues; - this.timestamp = timestamp; + this.request = request; } public PluginsValues getPluginsValues() { return pluginsValues; } - - public Timestamp getTimestamp() { - return timestamp; - } - + public GetScoresRequest getRequest() { + return request; + } } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -23,15 +23,14 @@ package org.jboss.forge.status.service.protocol; import java.io.Serializable; -import java.sql.Timestamp; /** * @author Pawel Wrzeszcz */ public interface GetScoresResponse extends Serializable { - - public Timestamp getTimestamp(); public PluginsValues getPluginsValues(); + + public GetScoresRequest getRequest(); } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -30,8 +30,9 @@ for (int i = 0; i < buff.size (); i++) { GetScoresResponse resp = buff.get(i); + Timestamp ts = resp.getRequest().getTimestamp(); - if (resp.getTimestamp().equals(sent)) { + if (ts.equals(sent)) { buff.remove(i); return resp; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -101,27 +101,6 @@ } return timestamp; - /* - int attempts = 0; - - for (;;) { - - pluginsValues = RecordManager.get(timestamp); - - System.out.println("attempt: " + pluginsValues); - - if ((pluginsValues != null) || - ((attempts++) == Constants.MAX_ATTEMPTS)) { - break; - } - - try { - Thread.sleep(Constants.SLEEP_TIME); - } catch (InterruptedException e) { - throw new GetScoresException(e); - } - } - */ } public static Timestamp requestCurrentScores() @@ -132,7 +111,8 @@ return requestScores(cal); } - public static PluginsValues getScores(Timestamp timestamp) { + public static PluginsValues getScores(Timestamp timestamp) + throws GetScoresException { GetScoresResponse response = RecordManager.get(timestamp); @@ -143,7 +123,18 @@ return null; } - return response.getPluginsValues(); //TODO null here => retry + PluginsValues pluginsValues = response.getPluginsValues(); + + if (pluginsValues == null) { + try { + sendMessage(Constants.GET_SCORES_MESSAGE, + response.getRequest()); + } catch (Exception e) { + throw new GetScoresException(e); + } + } + + return pluginsValues; } public static PluginsValues getLatestScores() |