modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementOOB.java
| 17
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
| 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
| 536 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
| 26
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
| 57 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java
| 9
7 files changed, 380 insertions(+), 274 deletions(-)
New commits:
commit 3d9933e477c7262cc55e76041d781e8339b382a7
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Tue Feb 22 18:57:58 2011 -0500
BZ:679200: finish conversion from Http get to Post during login requests. Embedded
url no longer displays.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
index 2b4848f..3a5fa85 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java
@@ -516,8 +516,9 @@ public class LoginView extends LocatableCanvas {
loginButton.setDisabled(true);
try {
- RequestBuilder b = new RequestBuilder(RequestBuilder.POST,
"/j_security_check.do?j_username=" + user
- + "&j_password=" + password);
+ RequestBuilder b = new RequestBuilder(RequestBuilder.POST,
"/j_security_check.do");
+ b.setHeader("Content-Type",
"application/x-www-form-urlencoded");
+ b.setRequestData("j_username=" + user +
"&j_password=" + password);
b.setCallback(new RequestCallback() {
public void onResponseReceived(Request request, Response response) {
int statusCode = response.getStatusCode();
commit af1df72c6ba095b7ad6c7e67226f09197c7cf4e1
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Tue Feb 22 17:09:58 2011 -0500
enable group Activity OOB content. Criteria method seemed non-trivial and not useful
beyond this one case.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementOOB.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementOOB.java
index c586c87..192b854 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementOOB.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementOOB.java
@@ -114,7 +114,21 @@ import javax.persistence.Table;
+ " AND sched.definition = def " //
+ " AND sched.resource = res " //
+ " AND bal.schedule = sched " //
- + " AND :resourceId = res.id ") })
+ + " AND :resourceId = res.id "), //
+ @NamedQuery(name = MeasurementOOB.GET_HIGHEST_FACTORS_FOR_GROUP, query = ""
//
+ + " SELECT new
org.rhq.core.domain.measurement.composite.MeasurementOOBComposite" //
+ + " ( res.name, res.id, def.displayName, sched.id, o.timestamp,
def.id, o.oobFactor, " //
+ + " bal.baselineMin , bal.baselineMax, def.units ) " //
+ + " FROM MeasurementOOB o, MeasurementSchedule sched " //
+ + "LEFT JOIN sched.definition def " //
+ + "LEFT JOIN sched.resource res " //
+ + "LEFT JOIN sched.baseline bal " //
+ + "LEFT JOIN sched.resource.explicitGroups ig " //
+ + " WHERE o.id = sched.id " //
+ + " AND sched.definition = def " //
+ + " AND sched.resource = res " //
+ + " AND bal.schedule = sched " //
+ + " AND :groupId = ig.id ") })
@Entity
@Table(name = "RHQ_MEASUREMENT_OOB")
public class MeasurementOOB {
@@ -125,6 +139,7 @@ public class MeasurementOOB {
public static final String DELETE_OUTDATED = "DeleteOutdatedOOBs";
public static final String COUNT_FOR_DATE = "CountOOBForDate";
public static final String GET_HIGHEST_FACTORS_FOR_RESOURCE =
"GetHighestOOBFactorForResource";
+ public static final String GET_HIGHEST_FACTORS_FOR_GROUP =
"GetHighestOOBFactorForGroup";
public static final String DELETE_FOR_GROUP_AND_DEFINITION =
"DeleteOOBForGroupAndDefinition";
public static final String DELETE_FOR_SCHEDULE = "DeleteOOBForSchedule";
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
index e80bba4..8db6354 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
@@ -74,6 +74,8 @@ public interface MeasurementDataGWTService extends RemoteService {
PageList<MeasurementOOBComposite> getHighestNOOBsForResource(int resourceId,
int n) throws RuntimeException;
+ PageList<MeasurementOOBComposite> getHighestNOOBsForGroup(int groupId, int n)
throws RuntimeException;
+
void enableSchedulesForResource(int resourceId, int[] measurementDefinitionIds)
throws RuntimeException;
void disableSchedulesForResource(int resourceId, int[] measurementDefinitionIds)
throws RuntimeException;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
index 5e19edf..625c139 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
@@ -44,6 +44,7 @@ import
org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
+import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
import org.rhq.core.domain.operation.GroupOperationHistory;
import org.rhq.core.domain.resource.composite.DisambiguationReport;
import org.rhq.core.domain.resource.group.GroupCategory;
@@ -86,7 +87,7 @@ public class ActivityView2 extends AbstractActivityView {
//TODO: spinder need to drive these calls off off facet availability
getRecentOperations();
getRecentConfigurationUpdates();
- // getRecentOobs();
+ getRecentOobs();
// getRecentPkgHistory();
getRecentMetrics();
}
@@ -346,55 +347,53 @@ public class ActivityView2 extends AbstractActivityView {
});
}
- // /** Fetches OOB measurements and updates the DynamicForm instance with the
latest 5
- // * oob change details.
- // */
- // private void getRecentOobs() {
- // final int groupId = this.groupComposite.getResourceGroup().getId();
- //
- ////
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForCompatibleGroup(groupId,
5,
- //
- //
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(groupId, 5,
- // new AsyncCallback<PageList<MeasurementOOBComposite>>()
{
- // @Override
- // public void onFailure(Throwable caught) {
- // Log.debug("Error retrieving recent out of bound
metrics for resource [" + groupId + "]:"
- // + caught.getMessage());
- // }
- //
- // @Override
- // public void onSuccess(PageList<MeasurementOOBComposite>
result) {
- // VLayout column = new VLayout();
- // column.setHeight(10);
- // if (!result.isEmpty()) {
- // for (MeasurementOOBComposite oob : result) {
- // LocatableDynamicForm row = new
LocatableDynamicForm(recentOobContent.extendLocatorId(oob
- // .getScheduleName()));
- // row.setNumCols(2);
- //
- // String title = oob.getScheduleName() +
":";
- // String destination =
"/resource/common/monitor/Visibility.do?m=" + oob.getDefinitionId()
- // + "&id=" + groupId +
"&mode=chartSingleMetricSingleResource";
- // LinkItem link = newLinkItem(title, destination);
- // StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(oob.getTimestamp()));
- //
- // row.setItems(link, time);
- // column.addMember(row);
- // }
- // } else {
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentOobContent.extendLocatorId("None"),
- // RECENT_OOB_NONE);
- // column.addMember(row);
- // }
- // recentOobContent.setContents("");
- // for (Canvas child : recentOobContent.getChildren()) {
- // child.destroy();
- // }
- // recentOobContent.addChild(column);
- // recentOobContent.markForRedraw();
- // }
- // });
- // }
+ /** Fetches OOB measurements and updates the DynamicForm instance with the latest 5
+ * oob change details.
+ */
+ private void getRecentOobs() {
+ final int groupId = this.groupComposite.getResourceGroup().getId();
+
+ GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForGroup(groupId, 5,
+ new AsyncCallback<PageList<MeasurementOOBComposite>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving recent out of bound metrics for
group [" + groupId + "]:"
+ + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(PageList<MeasurementOOBComposite> result) {
+ VLayout column = new VLayout();
+ column.setHeight(10);
+ if (!result.isEmpty()) {
+ for (MeasurementOOBComposite oob : result) {
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentOobContent.extendLocatorId(oob
+ .getScheduleName()));
+ row.setNumCols(2);
+
+ String title = oob.getScheduleName() + ":";
+ String destination =
"/resource/common/monitor/Visibility.do?m=" + oob.getDefinitionId()
+ + "&id=" + groupId +
"&mode=chartSingleMetricSingleResource";
+ LinkItem link = newLinkItem(title, destination);
+ StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(oob.getTimestamp()));
+
+ row.setItems(link, time);
+ column.addMember(row);
+ }
+ } else {
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentOobContent.extendLocatorId("None"),
+ RECENT_OOB_NONE);
+ column.addMember(row);
+ }
+ recentOobContent.setContents("");
+ for (Canvas child : recentOobContent.getChildren()) {
+ child.destroy();
+ }
+ recentOobContent.addChild(column);
+ recentOobContent.markForRedraw();
+ }
+ });
+ }
// /** Fetches recent package history information and updates the DynamicForm
instance with details.
// */
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
index 61d3a5e..4c19c9d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
@@ -167,6 +167,16 @@ public class MeasurementDataGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
+ public PageList<MeasurementOOBComposite> getHighestNOOBsForGroup(int groupId,
int n) throws RuntimeException {
+ try {
+ return SerialUtility.prepare(
+ measurementOOBManager.getHighestNOOBsForGroup(getSessionSubject(),
groupId, n),
+ "MeasurementDataService.getHighestNOOBsForGroup");
+ } catch (Throwable t) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(t));
+ }
+ }
+
public void enableSchedulesForResource(int resourceId, int[]
measurementDefinitionIds) throws RuntimeException {
try {
scheduleManager.enableSchedulesForResource(getSessionSubject(), resourceId,
measurementDefinitionIds);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
index 72d1cd4..0bf42d3 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerBean.java
@@ -54,7 +54,6 @@ import
org.rhq.core.domain.measurement.composite.MeasurementOOBComposite;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
-import org.rhq.core.server.MeasurementConverter;
import org.rhq.core.server.PersistenceUtility;
import org.rhq.core.util.jdbc.JDBCUtil;
import org.rhq.enterprise.server.RHQConstants;
@@ -278,7 +277,7 @@ public class MeasurementOOBManagerBean implements
MeasurementOOBManagerLocal {
metricNameFilter = QueryUtility.formatSearchParameter(metricNameFilter);
resourceNameFilter = QueryUtility.formatSearchParameter(resourceNameFilter);
- parentNameFilter = QueryUtility.formatSearchParameter(parentNameFilter);
+ parentNameFilter = QueryUtility.formatSearchParameter(parentNameFilter);
query.setParameter("metricName", metricNameFilter);
queryCount.setParameter("metricName", metricNameFilter);
@@ -287,7 +286,7 @@ public class MeasurementOOBManagerBean implements
MeasurementOOBManagerLocal {
query.setParameter("parentName", parentNameFilter);
queryCount.setParameter("parentName", parentNameFilter);
query.setParameter("escapeChar", QueryUtility.getEscapeCharacter());
- queryCount.setParameter("escapeChar",
QueryUtility.getEscapeCharacter());
+ queryCount.setParameter("escapeChar",
QueryUtility.getEscapeCharacter());
if (!isAdmin) {
query.setParameter("subjectId", subject.getId());
@@ -375,6 +374,58 @@ public class MeasurementOOBManagerBean implements
MeasurementOOBManagerLocal {
}
/**
+ * Returns the highest n OOBs for the passed group id
+ * @param subject caller
+ * @param groupId the group we are interested in
+ * @param n max number of entries wanted
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public PageList<MeasurementOOBComposite> getHighestNOOBsForGroup(Subject
subject, int groupId, int n) {
+
+ if (!authMangager.canViewResource(subject, groupId)) {
+ return new PageList<MeasurementOOBComposite>();
+ }
+
+ PageControl pc = new PageControl(0, n);
+ pc.addDefaultOrderingField("sched.id");
+ pc.addDefaultOrderingField("o.oobFactor", PageOrdering.DESC);
+
+ String queryName = MeasurementOOB.GET_HIGHEST_FACTORS_FOR_GROUP;
+ Query query = PersistenceUtility.createQueryWithOrderBy(entityManager, queryName,
pc);
+ Query countQuery = PersistenceUtility.createCountQuery(entityManager,
queryName);
+ query.setParameter("groupId", groupId);
+ countQuery.setParameter("groupId", groupId);
+
+ List<MeasurementOOBComposite> results = query.getResultList();
+
+ if (!results.isEmpty()) {
+ // we have the n OOBs, so lets fetch the MeasurementData for those
+ List<MeasurementDataPK> pks = new
ArrayList<MeasurementDataPK>(results.size());
+ Map<MeasurementDataPK, MeasurementOOBComposite> map = new
HashMap<MeasurementDataPK, MeasurementOOBComposite>();
+ for (MeasurementOOBComposite comp : results) {
+ int schedule = comp.getScheduleId();
+ MeasurementDataPK key = new MeasurementDataPK(comp.getTimestamp(),
schedule);
+ pks.add(key);
+ map.put(key, comp);
+ }
+ // compute and add the outlier data
+ List<MeasurementDataNumeric1H> datas = getOneHourDataForPKs(pks);
+ for (MeasurementDataNumeric1H data : datas) {
+ MeasurementDataPK pk = new MeasurementDataPK(data.getTimestamp(),
data.getScheduleId());
+ MeasurementOOBComposite comp = map.get(pk);
+ comp.setData(data);
+ comp.calculateOutlier();
+ }
+ }
+ // return the result
+ long totalCount = (Long) countQuery.getSingleResult();
+ PageList<MeasurementOOBComposite> result = new
PageList<MeasurementOOBComposite>(results, (int) totalCount, pc);
+
+ return result;
+ }
+
+ /**
* Return the 1h numeric data for the passed primary keys (schedule, timestamp)
* @param pks Primary keys to look up
* @return List of 1h data
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java
index 527ec29..e22a429 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementOOBManagerLocal.java
@@ -90,4 +90,13 @@ public interface MeasurementOOBManagerLocal {
* @return
*/
PageList<MeasurementOOBComposite> getHighestNOOBsForResource(Subject subject,
int resourceId, int n);
+
+ /**
+ * Returns the highest n OOBs for the passed group id within the last 72h
+ * @param subject caller
+ * @param groupId the resource we are interested in
+ * @param n max number of entries wanted
+ * @return
+ */
+ PageList<MeasurementOOBComposite> getHighestNOOBsForGroup(Subject subject, int
groupId, int n);
}
commit 15ebbfb34b7d6bde6fc6efa532f30b413591cb4f
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Tue Feb 22 14:21:43 2011 -0500
fix/enable group metric summary activity region.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
index 19899a1..e80bba4 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/MeasurementDataGWTService.java
@@ -54,7 +54,7 @@ public interface MeasurementDataGWTService extends RemoteService {
List<List<MeasurementDataNumericHighLowComposite>>
findDataForResource(int resourceId, int[] definitionIds,
long beginTime, long endTime, int numPoints) throws RuntimeException;
- List<List<MeasurementDataNumericHighLowComposite>>
findDataForCompatibleGroup(int groupId, int definitionId,
+ List<List<MeasurementDataNumericHighLowComposite>>
findDataForCompatibleGroup(int groupId, int[] definitionIds,
long beginTime, long endTime, int numPoints) throws RuntimeException;
PageList<CallTimeDataComposite> findCallTimeDataForResource(int scheduleId,
long start, long end,
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
index 31f92fe..5e19edf 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
@@ -19,13 +19,18 @@
package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.summary;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.types.ContentsType;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.HTMLFlow;
+import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.LinkItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.layout.VLayout;
@@ -37,6 +42,8 @@ import org.rhq.core.domain.criteria.AlertCriteria;
import org.rhq.core.domain.criteria.GroupOperationHistoryCriteria;
import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.event.EventSeverity;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.operation.GroupOperationHistory;
import org.rhq.core.domain.resource.composite.DisambiguationReport;
import org.rhq.core.domain.resource.group.GroupCategory;
@@ -49,6 +56,7 @@ import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView;
import org.rhq.enterprise.gui.coregui.client.resource.disambiguation.ReportDecorator;
+import org.rhq.enterprise.gui.coregui.client.util.BrowserUtility;
import org.rhq.enterprise.gui.coregui.client.util.GwtRelativeDurationConverter;
import org.rhq.enterprise.gui.coregui.client.util.GwtTuple;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
@@ -78,9 +86,9 @@ public class ActivityView2 extends AbstractActivityView {
//TODO: spinder need to drive these calls off off facet availability
getRecentOperations();
getRecentConfigurationUpdates();
- // getRecentOobs();
- // getRecentPkgHistory();
- // getRecentMetrics();
+ // getRecentOobs();
+ // getRecentPkgHistory();
+ getRecentMetrics();
}
}
@@ -338,65 +346,69 @@ public class ActivityView2 extends AbstractActivityView {
});
}
- // /** Fetches OOB measurements and updates the DynamicForm instance with the
latest 5
- // * oob change details.
- // */
- // private void getRecentOobs() {
- // final int resourceId = this.resourceComposite.getResource().getId();
- //
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resourceId, 5,
- // new AsyncCallback<PageList<MeasurementOOBComposite>>() {
- // @Override
- // public void onFailure(Throwable caught) {
- // Log.debug("Error retrieving recent out of bound metrics
for resource [" + resourceId + "]:"
- // + caught.getMessage());
- // }
+ // /** Fetches OOB measurements and updates the DynamicForm instance with the
latest 5
+ // * oob change details.
+ // */
+ // private void getRecentOobs() {
+ // final int groupId = this.groupComposite.getResourceGroup().getId();
//
- // @Override
- // public void onSuccess(PageList<MeasurementOOBComposite>
result) {
- // VLayout column = new VLayout();
- // column.setHeight(10);
- // if (!result.isEmpty()) {
- // for (MeasurementOOBComposite oob : result) {
- // LocatableDynamicForm row = new
LocatableDynamicForm(recentOobContent.extendLocatorId(oob
- // .getScheduleName()));
- // row.setNumCols(2);
+ ////
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForCompatibleGroup(groupId,
5,
//
- // String title = oob.getScheduleName() + ":";
- // String destination =
"/resource/common/monitor/Visibility.do?m=" + oob.getDefinitionId()
- // + "&id=" + resourceId +
"&mode=chartSingleMetricSingleResource";
- // LinkItem link = newLinkItem(title, destination);
- // StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(oob.getTimestamp()));
+ //
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(groupId, 5,
+ // new AsyncCallback<PageList<MeasurementOOBComposite>>()
{
+ // @Override
+ // public void onFailure(Throwable caught) {
+ // Log.debug("Error retrieving recent out of bound
metrics for resource [" + groupId + "]:"
+ // + caught.getMessage());
+ // }
+ //
+ // @Override
+ // public void onSuccess(PageList<MeasurementOOBComposite>
result) {
+ // VLayout column = new VLayout();
+ // column.setHeight(10);
+ // if (!result.isEmpty()) {
+ // for (MeasurementOOBComposite oob : result) {
+ // LocatableDynamicForm row = new
LocatableDynamicForm(recentOobContent.extendLocatorId(oob
+ // .getScheduleName()));
+ // row.setNumCols(2);
+ //
+ // String title = oob.getScheduleName() +
":";
+ // String destination =
"/resource/common/monitor/Visibility.do?m=" + oob.getDefinitionId()
+ // + "&id=" + groupId +
"&mode=chartSingleMetricSingleResource";
+ // LinkItem link = newLinkItem(title, destination);
+ // StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(oob.getTimestamp()));
//
- // row.setItems(link, time);
+ // row.setItems(link, time);
+ // column.addMember(row);
+ // }
+ // } else {
+ // LocatableDynamicForm row =
createEmptyDisplayRow(recentOobContent.extendLocatorId("None"),
+ // RECENT_OOB_NONE);
// column.addMember(row);
// }
- // } else {
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentOobContent.extendLocatorId("None"),
- // RECENT_OOB_NONE);
- // column.addMember(row);
- // }
- // recentOobContent.setContents("");
- // for (Canvas child : recentOobContent.getChildren()) {
- // child.destroy();
+ // recentOobContent.setContents("");
+ // for (Canvas child : recentOobContent.getChildren()) {
+ // child.destroy();
+ // }
+ // recentOobContent.addChild(column);
+ // recentOobContent.markForRedraw();
// }
- // recentOobContent.addChild(column);
- // recentOobContent.markForRedraw();
- // }
- // });
- // }
- //
+ // });
+ // }
+
// /** Fetches recent package history information and updates the DynamicForm
instance with details.
// */
// private void getRecentPkgHistory() {
- //// final int resourceId = this.resourceComposite.getResource().getId();
+ // // final int resourceId =
this.resourceComposite.getResource().getId();
// final int groupId = this.groupComposite.getResourceGroup().getId();
// InstalledPackageCriteria criteria = new InstalledPackageCriteria();
- //// criteria.addFilterResourceId(resourceId);
- // criteria.addFilterResourceId(groupId);
+ // // criteria.addFilterResourceId(resourceId);
+ //// criteria.addFilterResourceId(groupId);
+ // criteria.addFilter(groupId);
// PageControl pageControl = new PageControl(0, 5);
// criteria.setPageControl(pageControl);
//
- ////
GWTServiceLookup.getContentService().getInstalledPackageHistoryForResource(resourceId, 5,
+ // //
GWTServiceLookup.getContentService().getInstalledPackageHistoryForResource(resourceId, 5,
//
GWTServiceLookup.getContentService().getInstalledPackageHistoryForResource(resourceId, 5,
// new AsyncCallback<PageList<InstalledPackageHistory>>() {
// @Override
@@ -442,151 +454,143 @@ public class ActivityView2 extends AbstractActivityView {
// });
// }
- // /** Fetches recent metric information and updates the DynamicForm instance with
i)sparkline information,
- // * ii) link to recent metric graph for more details and iii) last metric value
formatted to show significant
- // * digits.
- // */
- // private void getRecentMetrics() {
- // //display container
- // final VLayout column = new VLayout();
- // column.setHeight(10);//pack
- // // final int resourceId =
this.resourceComposite.getResource().getId();
- // final int groupId = this.groupComposite.getResourceGroup().getId();
- //
- // // MeasurementDefinitionCriteria mdc = new
MeasurementDefinitionCriteria();
- // // mdc.
- //
- // //retrieve all relevant measurement definition ids.
- // // Set<MeasurementDefinition> definitions =
this.resourceComposite.getResource().getResourceType()
- // Set<MeasurementDefinition> definitions =
this.groupComposite.getResourceGroup().getResourceType()
- // .getMetricDefinitions();
- //
- // //build id mapping for measurementDefinition instances Ex. Free Memory
-> MeasurementDefinition[100071]
- // final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
- // for (MeasurementDefinition definition : definitions) {
- // measurementDefMap.put(definition.getDisplayName(), definition);
- // }
- //
- // //bundle definition ids for asynch call.
- // int[] definitionArrayIds = new int[definitions.size()];
- // final String[] displayOrder = new String[definitions.size()];
- // measurementDefMap.keySet().toArray(displayOrder);
- // //sort the charting data ex. Free Memory, Free Swap Space,..System Load
- // Arrays.sort(displayOrder);
- //
- // //organize definitionArrayIds for ordered request on server.
- // int index = 0;
- // for (String definitionToDisplay : displayOrder) {
- // definitionArrayIds[index++] =
measurementDefMap.get(definitionToDisplay).getId();
- // }
- // //make the asynchronous call for all the measurement data
- // //
GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId,
definitionArrayIds,
- //
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(groupId,
definitionArrayIds[0],
- // System.currentTimeMillis() - (1000L * 60 * 60 * 8),
System.currentTimeMillis(), 60,
- // new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- // @Override
- // public void onFailure(Throwable caught) {
- // // Log.debug("Error retrieving recent
metrics charting data for group [" + resourceId + "]:"
- // Log.debug("Error retrieving recent metrics charting data
for group [" + groupId + "]:"
- // + caught.getMessage());
- // }
- //
- // @Override
- // public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
- // if (!results.isEmpty()) {
- // boolean someChartedData = false;
- // //iterate over the retrieved charting data
- // for (int index = 0; index < displayOrder.length;
index++) {
- //
- // //retrieve the correct measurement definition
- // MeasurementDefinition md =
measurementDefMap.get(displayOrder[index]);
- //
- // //load the data results for the given metric
definition
- // List<MeasurementDataNumericHighLowComposite> data
= results.get(index);
- //
- // //locate last and minimum values.
- // double lastValue = -1;
- // double minValue = Double.MAX_VALUE;//
- // for (MeasurementDataNumericHighLowComposite d : data)
{
- // if ((!Double.isNaN(d.getValue()))
- // &&
(String.valueOf(d.getValue()).indexOf("NaN") == -1)) {
- // if (d.getValue() < minValue) {
- // minValue = d.getValue();
- // }
- // lastValue = d.getValue();
- // }
- // }
- //
- // //collapse the data into comma delimited list for
consumption by third party javascript library(jquery.sparkline)
- // String commaDelimitedList = "";
- //
- // for (MeasurementDataNumericHighLowComposite d : data)
{
- // if ((!Double.isNaN(d.getValue()))
- // &&
(String.valueOf(d.getValue()).indexOf("NaN") == -1)) {
- // commaDelimitedList += d.getValue() +
",";
- // }
- // }
- // LocatableDynamicForm row = new
LocatableDynamicForm(recentMeasurementsContent
- // .extendLocatorId(md.getName()));
- // row.setNumCols(3);
- // HTMLFlow graph = new HTMLFlow();
- // // String contents =
"<span id='sparkline_" + index + "'
class='dynamicsparkline' width='0'>"
- // // + commaDelimitedList +
"</span>";
- // String contents = "<span
id='sparkline_" + index + "' class='dynamicsparkline'
width='0' "
- // + "values='" + commaDelimitedList +
"'>...</span>";
- // graph.setContents(contents);
- // graph.setContentsType(ContentsType.PAGE);
- // //diable scrollbars on span
- // graph.setScrollbarSize(0);
- //
- // CanvasItem graphContainer = new CanvasItem();
- // graphContainer.setShowTitle(false);
- // graphContainer.setHeight(16);
- // graphContainer.setWidth(60);
- // graphContainer.setCanvas(graph);
- //
- // //Link/title element
- // //TODO: spinder, change link whenever
portal.war/graphing is removed.
- // String title = md.getDisplayName() + ":";
- // // String destination =
"/resource/common/monitor/Visibility.do?mode=chartSingleMetricSingleResource&id="
- // // + resourceId +
"&m=" + md.getId();
- // String destination =
"/resource/common/monitor/Visibility.do?mode=chartSingleMetricMultiResource&groupId="
- // + groupId + "&m=" + md.getId();
- // LinkItem link = newLinkItem(title, destination);
- //
- // //Value
- // String convertedValue = lastValue + " " +
md.getUnits();
- // convertedValue = convertLastValueForDisplay(lastValue,
md);
- // StaticTextItem value = newTextItem(convertedValue);
- //
- // row.setItems(graphContainer, link, value);
- // //if graph content returned
- // if ((md.getName().trim().indexOf("Trait.") ==
-1) && (lastValue != -1)) {
- // column.addMember(row);
- // someChartedData = true;
- // }
- // }
- // if (!someChartedData) {// when there are results but no
chartable entries.
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
- // .extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
- // column.addMember(row);
- // }
- // //call out to 3rd party javascript lib
- // BrowserUtility.graphSparkLines();
- // } else {
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
- // .extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
- // column.addMember(row);
- // }
- // }
- // });
- //
- // //cleanup
- // for (Canvas child : recentMeasurementsContent.getChildren()) {
- // child.destroy();
- // }
- // recentMeasurementsContent.addChild(column);
- // recentMeasurementsContent.markForRedraw();
- // }
+ /** Fetches recent metric information and updates the DynamicForm instance with
i)sparkline information,
+ * ii) link to recent metric graph for more details and iii) last metric value
formatted to show significant
+ * digits.
+ */
+ private void getRecentMetrics() {
+
+ //display container
+ final VLayout column = new VLayout();
+ column.setHeight(10);//pack
+ final int groupId = this.groupComposite.getResourceGroup().getId();
+
+ //retrieve all relevant measurement definition ids.
+ Set<MeasurementDefinition> definitions =
this.groupComposite.getResourceGroup().getResourceType()
+ .getMetricDefinitions();
+
+ //build id mapping for measurementDefinition instances Ex. Free Memory ->
MeasurementDefinition[100071]
+ final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
+ for (MeasurementDefinition definition : definitions) {
+ measurementDefMap.put(definition.getDisplayName(), definition);
+ }
+ //bundle definition ids for asynch call.
+ int[] definitionArrayIds = new int[definitions.size()];
+ final String[] displayOrder = new String[definitions.size()];
+ measurementDefMap.keySet().toArray(displayOrder);
+ //sort the charting data ex. Free Memory, Free Swap Space,..System Load
+ Arrays.sort(displayOrder);
+
+ //organize definitionArrayIds for ordered request on server.
+ int index = 0;
+ for (String definitionToDisplay : displayOrder) {
+ definitionArrayIds[index++] =
measurementDefMap.get(definitionToDisplay).getId();
+ }
+ //make the asynchronous call for all the measurement data
+ GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(groupId,
definitionArrayIds,
+ System.currentTimeMillis() - (1000L * 60 * 60 * 8),
System.currentTimeMillis(), 60,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving recent metrics charting data for
group [" + groupId + "]:"
+ + caught.getMessage());
+ }
+
+ @Override
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
+ if (!results.isEmpty()) {
+ boolean someChartedData = false;
+ //iterate over the retrieved charting data
+ for (int index = 0; index < displayOrder.length; index++) {
+ //retrieve the correct measurement definition
+ MeasurementDefinition md =
measurementDefMap.get(displayOrder[index]);
+
+ //load the data results for the given metric definition
+ List<MeasurementDataNumericHighLowComposite> data =
results.get(index);
+
+ //locate last and minimum values.
+ double lastValue = -1;
+ double minValue = Double.MAX_VALUE;//
+ for (MeasurementDataNumericHighLowComposite d : data) {
+ if ((!Double.isNaN(d.getValue()))
+ &&
(String.valueOf(d.getValue()).indexOf("NaN") == -1)) {
+ if (d.getValue() < minValue) {
+ minValue = d.getValue();
+ }
+ lastValue = d.getValue();
+ }
+ }
+
+ //collapse the data into comma delimited list for consumption
by third party javascript library(jquery.sparkline)
+ String commaDelimitedList = "";
+
+ for (MeasurementDataNumericHighLowComposite d : data) {
+ if ((!Double.isNaN(d.getValue()))
+ &&
(String.valueOf(d.getValue()).indexOf("NaN") == -1)) {
+ commaDelimitedList += d.getValue() + ",";
+ }
+ }
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentMeasurementsContent
+ .extendLocatorId(md.getName()));
+ row.setNumCols(3);
+ HTMLFlow graph = new HTMLFlow();
+ // String contents = "<span
id='sparkline_" + index + "' class='dynamicsparkline'
width='0'>"
+ // + commaDelimitedList +
"</span>";
+ String contents = "<span id='sparkline_" +
index + "' class='dynamicsparkline' width='0' "
+ + "values='" + commaDelimitedList +
"'>...</span>";
+ graph.setContents(contents);
+ graph.setContentsType(ContentsType.PAGE);
+ //diable scrollbars on span
+ graph.setScrollbarSize(0);
+
+ CanvasItem graphContainer = new CanvasItem();
+ graphContainer.setShowTitle(false);
+ graphContainer.setHeight(16);
+ graphContainer.setWidth(60);
+ graphContainer.setCanvas(graph);
+
+ //Link/title element
+ //TODO: spinder, change link whenever portal.war/graphing is
removed.
+ String title = md.getDisplayName() + ":";
+ // String destination =
"/resource/common/monitor/Visibility.do?mode=chartSingleMetricSingleResource&id="
+ // + resourceId +
"&m=" + md.getId();
+ String destination =
"/resource/common/monitor/Visibility.do?mode=chartSingleMetricMultiResource&groupId="
+ + groupId + "&m=" + md.getId();
+ LinkItem link = newLinkItem(title, destination);
+
+ //Value
+ String convertedValue = lastValue + " " +
md.getUnits();
+ convertedValue = convertLastValueForDisplay(lastValue, md);
+ StaticTextItem value = newTextItem(convertedValue);
+
+ row.setItems(graphContainer, link, value);
+ //if graph content returned
+ if ((md.getName().trim().indexOf("Trait.") == -1)
&& (lastValue != -1)) {
+ column.addMember(row);
+ someChartedData = true;
+ }
+ }
+ if (!someChartedData) {// when there are results but no chartable
entries.
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
+ .extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
+ column.addMember(row);
+ }
+ //call out to 3rd party javascript lib
+ BrowserUtility.graphSparkLines();
+ } else {
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
+ .extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
+ column.addMember(row);
+ }
+ }
+ });
+
+ //cleanup
+ for (Canvas child : recentMeasurementsContent.getChildren()) {
+ child.destroy();
+ }
+ recentMeasurementsContent.addChild(column);
+ recentMeasurementsContent.markForRedraw();
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
index 3af7acb..61d3a5e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/MeasurementDataGWTServiceImpl.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.gui.coregui.server.gwt;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -47,6 +48,7 @@ import
org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
/**
+ * @author Simeon Pinder
* @author Greg Hinkle
*/
public class MeasurementDataGWTServiceImpl extends AbstractGWTServiceImpl implements
MeasurementDataGWTService {
@@ -89,12 +91,16 @@ public class MeasurementDataGWTServiceImpl extends
AbstractGWTServiceImpl implem
}
}
- // public List<List<MeasurementDataNumericHighLowComposite>>
findDataForCompatibleGroup(int resourceId, int[] definitionIds,
- public List<List<MeasurementDataNumericHighLowComposite>>
findDataForCompatibleGroup(int resourceId,
- int definitionId, long beginTime, long endTime, int numPoints) throws
RuntimeException {
+ public List<List<MeasurementDataNumericHighLowComposite>>
findDataForCompatibleGroup(int groupId,
+ int[] definitionIds, long beginTime, long endTime, int numPoints) throws
RuntimeException {
try {
- return
SerialUtility.prepare(dataManager.findDataForCompatibleGroup(getSessionSubject(),
resourceId,
- definitionId, beginTime, endTime, numPoints),
"MeasurementDataService.findDataForCompatibleGroup");
+ //iterate over each of the definitionIds to retrieve the display data for
each.
+ List<List<MeasurementDataNumericHighLowComposite>> results = new
ArrayList<List<MeasurementDataNumericHighLowComposite>>();
+ for (int nextDefinitionId : definitionIds) {
+
results.addAll(dataManager.findDataForCompatibleGroup(getSessionSubject(), groupId,
nextDefinitionId,
+ beginTime, endTime, numPoints));
+ }
+ return SerialUtility.prepare(results,
"MeasurementDataService.findDataForCompatibleGroup");
} catch (Throwable t) {
throw new RuntimeException(ThrowableUtil.getAllMessages(t));
}
commit c7dfdd202b030c91874181b12da596674b76025b
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Mon Feb 21 12:03:41 2011 -0500
enable group config query. More work needed here as group config changes not
currently supported.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
index 17fcad0..31f92fe 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
@@ -32,8 +32,10 @@ import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.alert.Alert;
import org.rhq.core.domain.alert.AlertDefinition;
+import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
import org.rhq.core.domain.criteria.AlertCriteria;
import org.rhq.core.domain.criteria.GroupOperationHistoryCriteria;
+import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.operation.GroupOperationHistory;
import org.rhq.core.domain.resource.composite.DisambiguationReport;
@@ -73,8 +75,9 @@ public class ActivityView2 extends AbstractActivityView {
getRecentEventUpdates();
if ((groupComposite != null)
&&
(groupComposite.getResourceGroup().getGroupCategory().equals(GroupCategory.COMPATIBLE)))
{//CompatibleGroup
+ //TODO: spinder need to drive these calls off off facet availability
getRecentOperations();
- // getRecentConfigurationUpdates();
+ getRecentConfigurationUpdates();
// getRecentOobs();
// getRecentPkgHistory();
// getRecentMetrics();
@@ -203,67 +206,73 @@ public class ActivityView2 extends AbstractActivityView {
});
}
- // /** Fetches configuration updates and updates the DynamicForm instance with the
latest
- // * config change information.
- // */
- // private void getRecentConfigurationUpdates() {
- // final int resourceId = this.resourceComposite.getResource().getId();
- //
- // PageControl lastFive = new PageControl(0, 5);
- // lastFive.initDefaultOrderingField("cu.createdTime",
PageOrdering.DESC);
- //
- //
GWTServiceLookup.getConfigurationService().findResourceConfigurationUpdates(resourceId,
null, null, true,
- // lastFive, new
AsyncCallback<PageList<ResourceConfigurationUpdate>>() {
- //
- // @Override
- // public void onFailure(Throwable caught) {
- // Log.debug("Error retrieving recent configuration updates
for resource [" + resourceId + "]:"
- // + caught.getMessage());
- // }
- //
- // @Override
- // public void onSuccess(PageList<ResourceConfigurationUpdate>
result) {
- // VLayout column = new VLayout();
- // column.setHeight(10);
- // if (!result.isEmpty()) {
- // int rowNum = 0;
- // for (ResourceConfigurationUpdate update : result) {
- // // config update history records do not have a usable
locatorId, we'll use rownum, which is unique and
- // // may be repeatable.
- // LocatableDynamicForm row = new
LocatableDynamicForm(recentConfigurationContent
- // .extendLocatorId(String.valueOf(rowNum)));
- // row.setNumCols(3);
- //
- // StaticTextItem iconItem =
newTextItemIcon(ImageManager.getResourceConfigurationIcon(update
- // .getStatus()), null);
- // String linkTitle =
MSG.view_resource_inventory_activity_changed_by() + " "
- // + update.getSubjectName() + ":";
- // if ((update.getSubjectName() == null) ||
(update.getSubjectName().trim().isEmpty())) {
- // linkTitle = MSG.common_msg_changeAutoDetected();
- // }
- // LinkItem link = newLinkItem(linkTitle,
ReportDecorator.GWT_RESOURCE_URL + resourceId
- // + "/Configuration/History/" +
update.getId());
- // StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(update
- // .getCreatedTime()));
- //
- // row.setItems(iconItem, link, time);
- // column.addMember(row);
- // }
- // } else {
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentConfigurationContent
- // .extendLocatorId("None"),
RECENT_CONFIGURATIONS_NONE);
- // column.addMember(row);
- // }
- // //cleanup
- // for (Canvas child : recentConfigurationContent.getChildren())
{
- // child.destroy();
- // }
- // recentConfigurationContent.addChild(column);
- // recentConfigurationContent.markForRedraw();
- // }
- // });
- // }
- //
+ /** Fetches configuration updates and updates the DynamicForm instance with the
latest
+ * config change information.
+ */
+ private void getRecentConfigurationUpdates() {
+ final int groupId = this.groupComposite.getResourceGroup().getId();
+
+ PageControl lastFive = new PageControl(0, 5);
+ GroupResourceConfigurationUpdateCriteria criteria = new
GroupResourceConfigurationUpdateCriteria();
+ criteria.setPageControl(lastFive);
+ criteria.addSortStatus(PageOrdering.DESC);
+ List<Integer> filterResourceGroupIds = new ArrayList<Integer>();
+ filterResourceGroupIds.add(groupId);
+ criteria.addFilterResourceGroupIds(filterResourceGroupIds);
+
+
GWTServiceLookup.getConfigurationService().findGroupResourceConfigurationUpdatesByCriteria(criteria,
+ new AsyncCallback<PageList<GroupResourceConfigurationUpdate>>()
{
+
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving recent configuration updates for
group [" + groupId + "]:"
+ + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(PageList<GroupResourceConfigurationUpdate>
result) {
+ VLayout column = new VLayout();
+ column.setHeight(10);
+ if (!result.isEmpty()) {
+ int rowNum = 0;
+ for (GroupResourceConfigurationUpdate update : result) {
+ // config update history records do not have a usable
locatorId, we'll use rownum, which is unique and
+ // may be repeatable.
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentConfigurationContent
+ .extendLocatorId(String.valueOf(rowNum)));
+ row.setNumCols(3);
+
+ StaticTextItem iconItem =
newTextItemIcon(ImageManager.getResourceConfigurationIcon(update
+ .getStatus()), null);
+ String linkTitle =
MSG.view_resource_inventory_activity_changed_by() + " "
+ + update.getSubjectName() + ":";
+ if ((update.getSubjectName() == null) ||
(update.getSubjectName().trim().isEmpty())) {
+ linkTitle = MSG.common_msg_changeAutoDetected();
+ }
+ LinkItem link = newLinkItem(linkTitle,
ReportDecorator.GWT_GROUP_URL + groupId
+ + "/Configuration/History/" + update.getId());
+ StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(update
+ .getCreatedTime()));
+
+ row.setItems(iconItem, link, time);
+ column.addMember(row);
+ }
+ } else {
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentConfigurationContent
+ .extendLocatorId("None"),
RECENT_CONFIGURATIONS_NONE);
+ column.addMember(row);
+ }
+ //cleanup
+ for (Canvas child : recentConfigurationContent.getChildren()) {
+ child.destroy();
+ }
+ recentConfigurationContent.addChild(column);
+ recentConfigurationContent.markForRedraw();
+
+ }
+ });
+ }
+
/** Fetches recent events and updates the DynamicForm instance with the latest
* event information over last 24hrs.
*/