modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
| 7
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/GroupBundleDeploymentCriteria.java
| 55 ++
modules/core/domain/src/main/java/org/rhq/core/domain/criteria/InstalledPackageHistoryCriteria.java
| 110 +++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ContentGWTService.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
| 33 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView2.java
| 216 +++++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
| 55 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/disambiguation/ReportDecorator.java
| 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ContentGWTServiceImpl.java
| 14
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
| 28 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerLocal.java
| 11
12 files changed, 451 insertions(+), 85 deletions(-)
New commits:
commit 9a26c11106e6a100e22da87d691f412832253cf7
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Feb 25 08:25:07 2011 -0500
enable 'see more...' links for Resource/Group Activity pages where
applicable.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
index 2cdc766..13abdd5 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
@@ -27,6 +27,7 @@ import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
@@ -73,6 +74,7 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
protected String RECENT_PKG_HISTORY_NONE =
MSG.view_resource_inventory_activity_no_recent_pkg_history();
protected String RECENT_BUNDLE_DEPLOY =
MSG.common_title_recent_bundle_deployments();
protected String RECENT_BUNDLE_DEPLOY_NONE =
MSG.view_resource_inventory_activity_no_recent_bundle_deploy();
+ protected String SEE_MORE = MSG.common_msg_see_more();
private ResourceGroupComposite groupComposite = null;
@@ -109,6 +111,7 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
leftPane.setMembersMargin(5);
leftPane.setAutoHeight();
+ Resource resource = null;
ResourceGroup group = null;
if (groupComposite != null) {
group = groupComposite.getResourceGroup();
@@ -173,7 +176,9 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
}
HLayout recentBundleDeployTitle = new
TitleWithIcon("subsystems/content/Content_24.png", RECENT_BUNDLE_DEPLOY);
- if (((group != null) &&
(group.getGroupCategory().equals(GroupCategory.COMPATIBLE)))) {//resource,CompatibleGroup
+ // if (resource.type==Platform) || (Group(Mixed/Compat) of Platforms)
+ // if ((group == null)&&())||((group != null) &&
(group.getGroupCategory().equals(GroupCategory.COMPATIBLE)))) {
+ if (((group != null) &&
(group.getGroupCategory().equals(GroupCategory.COMPATIBLE)))) {
rightPane.addMember(divider6);
rightPane.addMember(recentBundleDeployTitle);
rightPane.addMember(recentBundleDeployContent);
@@ -302,4 +307,19 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
return item;
}
+ /** Generates a "See more.." link item, using the locatable dynamic form
passed in and appends to the VLayout passed in.
+ *
+ * @param form
+ * @param linkDestination
+ * @param column
+ */
+ protected void addSeeMoreLink(LocatableDynamicForm form, String linkDestination,
VLayout column) {
+ if ((form != null) && (column != null)) {
+ form.setNumCols(1);
+ LinkItem link = newLinkItem(SEE_MORE, linkDestination);
+ form.setItems(link);
+ column.addMember(form);
+ }
+ }
+
}
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 bacbb8d..a7c1b4f 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
@@ -57,7 +57,6 @@ import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
-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;
@@ -132,14 +131,17 @@ public class ActivityView2 extends AbstractActivityView {
StaticTextItem iconItem =
newTextItemIcon(ImageManager.getAlertIcon(alert.getAlertDefinition()
.getPriority()),
alert.getAlertDefinition().getPriority().getDisplayName());
- LinkItem link = newLinkItem(alert.getAlertDefinition().getName()
+ ": ", LinkManager
- .getResourceGroupLink(groupId)
- + "/Alerts/History/" + alert.getId());
+ LinkItem link = newLinkItem(alert.getAlertDefinition().getName()
+ ": ",
+ ReportDecorator.GWT_GROUP_URL + groupId +
"/Alerts/History/" + alert.getId());
StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(alert.getCtime()));
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ //link to more details
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentAlertsContent.extendLocatorId(String
+ .valueOf(rowNum++)));
+ addSeeMoreLink(row, ReportDecorator.GWT_GROUP_URL + groupId +
"/Alerts/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentAlertsContent.extendLocatorId("None"),
RECENT_ALERTS_NONE);
@@ -206,6 +208,10 @@ public class ActivityView2 extends AbstractActivityView {
column.addMember(row);
}
+ //insert see more link
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentOperationsContent
+ .extendLocatorId(String.valueOf(rowNum)));
+ addSeeMoreLink(row, ReportDecorator.GWT_GROUP_URL + groupId +
"/Operations/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentOperationsContent
.extendLocatorId("None"), RECENT_OPERATIONS_NONE);
@@ -271,6 +277,10 @@ public class ActivityView2 extends AbstractActivityView {
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ //insert see more link
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentConfigurationContent
+ .extendLocatorId(String.valueOf(rowNum)));
+ addSeeMoreLink(row, ReportDecorator.GWT_GROUP_URL + groupId +
"/Configuration/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentConfigurationContent
.extendLocatorId("None"),
RECENT_CONFIGURATIONS_NONE);
@@ -337,6 +347,10 @@ public class ActivityView2 extends AbstractActivityView {
column.addMember(row);
}
+ //insert see more link
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentEventsContent.extendLocatorId(String
+ .valueOf(rowNum)));
+ addSeeMoreLink(row, ReportDecorator.GWT_GROUP_URL + groupId +
"/Events/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentEventsContent.extendLocatorId("None"),
RECENT_EVENTS_NONE);
@@ -385,6 +399,7 @@ public class ActivityView2 extends AbstractActivityView {
row.setItems(link, time);
column.addMember(row);
}
+ //insert see more link spinder(2/24/11): no page that displays
all oobs... See More not possible.
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentOobContent.extendLocatorId("None"),
RECENT_OOB_NONE);
@@ -440,6 +455,11 @@ public class ActivityView2 extends AbstractActivityView {
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ // //insert see more link
+ // LocatableDynamicForm row = new
LocatableDynamicForm(recentPkgHistoryContent
+ //
.extendLocatorId("PkgHistoryContentSeeMore"));
+ // String destination =
"/rhq/resource/content/audit-trail-item.xhtml?id=" + groupId;
+ // addSeeMoreLink(row, destination, column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentPkgHistoryContent.extendLocatorId("None"),
RECENT_PKG_HISTORY_NONE);
@@ -576,6 +596,11 @@ public class ActivityView2 extends AbstractActivityView {
LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
.extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
column.addMember(row);
+ } else {
+ //insert see more link
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentMeasurementsContent
+
.extendLocatorId("RecentMeasurementsContentSeeMore"));
+ addSeeMoreLink(row, ReportDecorator.GWT_GROUP_URL + groupId +
"/Monitoring/Graphs/", column);
}
//call out to 3rd party javascript lib
BrowserUtility.graphSparkLines();
@@ -639,6 +664,10 @@ public class ActivityView2 extends AbstractActivityView {
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ //insert see more link
+ //TODO: spinder(add this later) no current view for seeing all
bundle deployments
+ // LocatableDynamicForm row = new
LocatableDynamicForm(recentBundleDeployContent.extendLocatorId("RecentBundleContentSeeMore"));
+ // addSeeMoreLink(row,
LinkManager.getResourceGroupLink(groupId) + "/Events/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentBundleDeployContent
.extendLocatorId("None"),
RECENT_BUNDLE_DEPLOY_NONE);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
index 46bb87b..452d85c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
@@ -51,13 +51,13 @@ import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
+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.measurement.GwtMonitorUtils;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
/**
@@ -121,6 +121,10 @@ public class ActivityView extends AbstractActivityView {
column.addMember(row);
}
+ //link to more details
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentAlertsContent.extendLocatorId(String
+ .valueOf(rowNum++)));
+ addSeeMoreLink(row, ReportDecorator.GWT_RESOURCE_URL + resourceId +
"/Alerts/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentAlertsContent.extendLocatorId("None"),
RECENT_ALERTS_NONE);
@@ -173,15 +177,20 @@ public class ActivityView extends AbstractActivityView {
StaticTextItem iconItem =
newTextItemIcon(ImageManager.getOperationResultsIcon(report
.getOriginal().getOperationStatus()),
report.getOriginal().getOperationStatus()
.getDisplayName());
- LinkItem link =
newLinkItem(report.getOriginal().getOperationName() + ": ",
- ReportDecorator.GWT_RESOURCE_URL + resourceId +
"/Operations/History/"
- + report.getOriginal().getOperationHistoryId());
+ LinkItem link =
newLinkItem(report.getOriginal().getOperationName() + ": ", LinkManager
+ .getResourceLink(resourceId)
+ + "/Operations/History/" +
report.getOriginal().getOperationHistoryId());
StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(report.getOriginal()
.getOperationStartTime()));
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ //link to more details
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentOperationsContent
+ .extendLocatorId(String.valueOf(rowNum++)));
+ addSeeMoreLink(row, ReportDecorator.GWT_RESOURCE_URL + resourceId
+ "/Operations/History/",
+ column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentOperationsContent
.extendLocatorId("None"), RECENT_OPERATIONS_NONE);
@@ -234,7 +243,7 @@ public class ActivityView extends AbstractActivityView {
if ((update.getSubjectName() == null) ||
(update.getSubjectName().trim().isEmpty())) {
linkTitle = MSG.common_msg_changeAutoDetected();
}
- LinkItem link = newLinkItem(linkTitle,
ReportDecorator.GWT_RESOURCE_URL + resourceId
+ LinkItem link = newLinkItem(linkTitle,
LinkManager.getResourceLink(resourceId)
+ "/Configuration/History/" + update.getId());
StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(update
.getCreatedTime()));
@@ -242,6 +251,11 @@ public class ActivityView extends AbstractActivityView {
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ //link to more details
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentConfigurationContent
+ .extendLocatorId(String.valueOf(rowNum++)));
+ addSeeMoreLink(row, ReportDecorator.GWT_RESOURCE_URL + resourceId
+ "/Configuration/History/",
+ column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentConfigurationContent
.extendLocatorId("None"),
RECENT_CONFIGURATIONS_NONE);
@@ -308,6 +322,9 @@ public class ActivityView extends AbstractActivityView {
column.addMember(row);
}
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentEventsContent.extendLocatorId(String
+ .valueOf(rowNum++)));
+ addSeeMoreLink(row, ReportDecorator.GWT_RESOURCE_URL + resourceId
+ "/Events/History/", column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentEventsContent.extendLocatorId("None"),
RECENT_EVENTS_NONE);
@@ -409,6 +426,11 @@ public class ActivityView extends AbstractActivityView {
row.setItems(iconItem, link, time);
column.addMember(row);
}
+ // //insert see more link
+ // LocatableDynamicForm row = new
LocatableDynamicForm(recentPkgHistoryContent
+ //
.extendLocatorId("RecentPkgHistorySeeMore"));
+ // String destination =
"/rhq/resource/content/audit-trail-item.xhtml?id=" + resourceId;
+ // addSeeMoreLink(row, destination,
column);
} else {
LocatableDynamicForm row =
createEmptyDisplayRow(recentPkgHistoryContent
.extendLocatorId("None"),
RECENT_PKG_HISTORY_NONE);
@@ -543,6 +565,12 @@ public class ActivityView extends AbstractActivityView {
LocatableDynamicForm row =
createEmptyDisplayRow(recentMeasurementsContent
.extendLocatorId("None"),
RECENT_MEASUREMENTS_NONE);
column.addMember(row);
+ } else {
+ //insert see more link
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentMeasurementsContent
+
.extendLocatorId("RecentMeasurementsContentSeeMore"));
+ addSeeMoreLink(row, ReportDecorator.GWT_RESOURCE_URL +
resourceId + "/Monitoring/Graphs/",
+ column);
}
//call out to 3rd party javascript lib
BrowserUtility.graphSparkLines();
@@ -561,21 +589,4 @@ public class ActivityView extends AbstractActivityView {
recentMeasurementsContent.addChild(column);
recentMeasurementsContent.markForRedraw();
}
-
- /** Takes last double value returned and the relevant MeasurementDefinition and
formats
- * the results for display in the UI. 'Formatting' refers to relevant
rounding,
- * number format for significant digits depending upon the measurement definition
- * details.
- *
- * @param lastValue
- * @param md MeasurementDefinition
- * @return formatted String representation of the last value retrieved.
- */
- protected String convertLastValueForDisplay(double lastValue, MeasurementDefinition
md) {
- String convertedValue = "";
- String[] convertedValues = GwtMonitorUtils.formatSimpleMetrics(new double[] {
lastValue }, md);
- convertedValue = convertedValues[0];
-
- return convertedValue;
- }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 33d344c..2d4f866 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -193,6 +193,7 @@ common_msg_emphasizedNotePrefix = NOTE:
common_msg_loading = Loading...
common_msg_noItemsToShow = No items to show
common_msg_notYetImplemented = Not Yet Implemented
+common_msg_see_more = see more...
# Common Values
#--------------
commit 6fd55ba202029187ee76b3a81a7e96b60c2ba2b4
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Feb 24 13:57:12 2011 -0500
enable Bundles view for Group Activity page. Include new criteria.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
index 9e613c6..3ad25b8 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/BundleDeploymentCriteria.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import org.rhq.core.domain.bundle.BundleDeployment;
import org.rhq.core.domain.bundle.BundleDeploymentStatus;
+import org.rhq.core.domain.util.PageOrdering;
/**
* @author Jay Shaughnessy
@@ -44,6 +45,7 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
private Integer filterDestinationId; // needs override
private String filterDestinationName; // needs override
private BundleDeploymentStatus filterStatus;
+ private PageOrdering sortStatus;
private String filterSubjectName;
private boolean fetchBundleVersion;
@@ -124,4 +126,9 @@ public class BundleDeploymentCriteria extends TaggedCriteria {
this.fetchResourceDeployments = fetchResourceDeployments;
}
+ public void addSortStatus(PageOrdering sortStatus) {
+ addSortField("sort");
+ this.sortStatus = sortStatus;
+ }
+
}
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/GroupBundleDeploymentCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/GroupBundleDeploymentCriteria.java
new file mode 100644
index 0000000..4678483
--- /dev/null
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/GroupBundleDeploymentCriteria.java
@@ -0,0 +1,55 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2009 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package org.rhq.core.domain.criteria;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author Simeon Pinder
+ */
+@XmlRootElement
+(a)XmlAccessorType(XmlAccessType.FIELD)
+@SuppressWarnings("unused")
+public class GroupBundleDeploymentCriteria extends BundleDeploymentCriteria {
+ private static final long serialVersionUID = 1L;
+
+ private List<Integer> filterResourceGroupIds; // requires overrides
+
+ public GroupBundleDeploymentCriteria() {
+ filterOverrides.put("resourceGroupIds", "destination.group.id IN
" //
+ + "( SELECT rg.id " //
+ + " FROM ResourceGroup rg " //
+ + " JOIN rg.bundleDestinations bds " //
+ + " WHERE rg.id = ? )");
+ }
+
+ public void addFilterResourceGroupIds(Integer... filterResourceGroupIds) {
+ this.filterResourceGroupIds = Arrays.asList(filterResourceGroupIds);
+ }
+
+ public List<Integer> getFilterGroupIds() {
+ return filterResourceGroupIds;
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
index 5d06ee1..2cdc766 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
@@ -54,6 +54,7 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
protected LocatableCanvas recentOperationsContent = new
LocatableCanvas(extendLocatorId("RecentOperations"));
protected LocatableCanvas recentEventsContent = new
LocatableCanvas(extendLocatorId("RecentEvents"));
protected LocatableCanvas recentPkgHistoryContent = new
LocatableCanvas(extendLocatorId("RecentPkgHistory"));
+ protected LocatableCanvas recentBundleDeployContent = new
LocatableCanvas(extendLocatorId("RecentBundleDeploy"));
//retrieve localized text
protected String RECENT_MEASUREMENTS = MSG.common_title_recent_measurements();
@@ -70,6 +71,8 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
protected String RECENT_EVENTS_NONE =
MSG.view_resource_inventory_activity_no_recent_events();
protected String RECENT_PKG_HISTORY = MSG.common_title_recent_pkg_history();
protected String RECENT_PKG_HISTORY_NONE =
MSG.view_resource_inventory_activity_no_recent_pkg_history();
+ protected String RECENT_BUNDLE_DEPLOY =
MSG.common_title_recent_bundle_deployments();
+ protected String RECENT_BUNDLE_DEPLOY_NONE =
MSG.view_resource_inventory_activity_no_recent_bundle_deploy();
private ResourceGroupComposite groupComposite = null;
@@ -92,11 +95,13 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
HTMLFlow divider3 = new HTMLFlow("<hr/>");
HTMLFlow divider4 = new HTMLFlow("<hr/>");
HTMLFlow divider5 = new HTMLFlow("<hr/>");
+ HTMLFlow divider6 = new HTMLFlow("<hr/>");
divider1.setWidth("50%");
divider2.setWidth("50%");
divider3.setWidth("50%");
divider4.setWidth("50%");
divider5.setWidth("50%");
+ divider6.setWidth("50%");
//leftPane
leftPane.setWidth("50%");
@@ -167,6 +172,14 @@ public abstract class AbstractActivityView extends LocatableHLayout
implements R
recentPkgHistoryContent.setHeight(20);
}
+ HLayout recentBundleDeployTitle = new
TitleWithIcon("subsystems/content/Content_24.png", RECENT_BUNDLE_DEPLOY);
+ if (((group != null) &&
(group.getGroupCategory().equals(GroupCategory.COMPATIBLE)))) {//resource,CompatibleGroup
+ rightPane.addMember(divider6);
+ rightPane.addMember(recentBundleDeployTitle);
+ rightPane.addMember(recentBundleDeployContent);
+ recentBundleDeployTitle.setHeight(20);
+ }
+
addMember(leftPane);
addMember(rightPane);
}
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 2262d36..bacbb8d 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
@@ -37,9 +37,11 @@ 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.bundle.BundleDeployment;
import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
import org.rhq.core.domain.content.InstalledPackageHistory;
import org.rhq.core.domain.criteria.AlertCriteria;
+import org.rhq.core.domain.criteria.GroupBundleDeploymentCriteria;
import org.rhq.core.domain.criteria.GroupOperationHistoryCriteria;
import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
@@ -86,12 +88,13 @@ 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
+ //TODO: spinder should we drive these calls off of facet availability?
getRecentOperations();
getRecentConfigurationUpdates();
getRecentOobs();
getRecentPkgHistory();
getRecentMetrics();
+ getRecentBundleDeployments();
}
}
@@ -591,4 +594,63 @@ public class ActivityView2 extends AbstractActivityView {
recentMeasurementsContent.addChild(column);
recentMeasurementsContent.markForRedraw();
}
+
+ /** Fetches recent bundle deployment information and updates the DynamicForm instance
with details.
+ */
+ private void getRecentBundleDeployments() {
+ final int groupId = this.groupComposite.getResourceGroup().getId();
+ GroupBundleDeploymentCriteria criteria = new GroupBundleDeploymentCriteria();
+ PageControl pageControl = new PageControl(0, 5);
+ criteria.setPageControl(pageControl);
+ criteria.addFilterResourceGroupIds(groupId);
+ criteria.addSortStatus(PageOrdering.DESC);
+ criteria.fetchDestination(true);
+ criteria.fetchBundleVersion(true);
+
+ GWTServiceLookup.getBundleService().findBundleDeploymentsByCriteria(criteria,
+ new AsyncCallback<PageList<BundleDeployment>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving installed bundle deployments for
group [" + groupId + "]:"
+ + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(PageList<BundleDeployment> result) {
+ VLayout column = new VLayout();
+ column.setHeight(10);
+ if (!result.isEmpty()) {
+ for (BundleDeployment deployment : result) {
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentBundleDeployContent
+ .extendLocatorId(deployment.getBundleVersion().getName()
+ + deployment.getBundleVersion().getVersion()));
+ row.setNumCols(3);
+
+ StaticTextItem iconItem =
newTextItemIcon("subsystems/content/Content_16.png", null);
+ String title = deployment.getBundleVersion().getName() +
"["
+ + deployment.getBundleVersion().getVersion() +
"]:";
+ String destination = ReportDecorator.GWT_BUNDLE_URL
+ + deployment.getBundleVersion().getBundle().getId() +
"/destinations/"
+ + deployment.getDestination().getId();
+ LinkItem link = newLinkItem(title, destination);
+ StaticTextItem time =
newTextItem(GwtRelativeDurationConverter
+ .format(deployment.getCtime()));
+
+ row.setItems(iconItem, link, time);
+ column.addMember(row);
+ }
+ } else {
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentBundleDeployContent
+ .extendLocatorId("None"),
RECENT_BUNDLE_DEPLOY_NONE);
+ column.addMember(row);
+ }
+ //cleanup
+ for (Canvas child : recentBundleDeployContent.getChildren()) {
+ child.destroy();
+ }
+ recentBundleDeployContent.addChild(column);
+ recentBundleDeployContent.markForRedraw();
+ }
+ });
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/disambiguation/ReportDecorator.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/disambiguation/ReportDecorator.java
index 8c7cc05..4e40077 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/disambiguation/ReportDecorator.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/resource/disambiguation/ReportDecorator.java
@@ -24,6 +24,7 @@ public class ReportDecorator {
//TODO: pull value from more bookmarking/history definition
public final static String GWT_RESOURCE_URL = "#Resource/";
public final static String GWT_GROUP_URL = "#ResourceGroup/";
+ public final static String GWT_BUNDLE_URL = "#Bundles/Bundle/";
public static final String DEFAULT_SEPARATOR = " > ";
/**
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 2caa83d..33d344c 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -137,6 +137,7 @@ common_title_port = Port
common_title_portlet_auto_refresh=Portlet Auto-Refresh Interval
common_title_providers = Providers
common_title_recent_alerts = Recent Alerts
+common_title_recent_bundle_deployments = Recent Bundle Deployments
common_title_recent_configuration_updates = Recent Configuration Updates
common_title_recent_event_counts = Recent Event Counts
common_title_recent_measurements = Recent Measurements
@@ -1463,6 +1464,7 @@ view_inventory_resources_title_children = Child Resources
view_inventory_resources_title_members = Member Resources
view_resource_inventory_activity_changed_by=Changed by
view_resource_inventory_activity_no_recent_alerts=No recent alerts
+view_resource_inventory_activity_no_recent_bundle_deploy=No recent bundle deployments
view_resource_inventory_activity_no_recent_config_history=No configuration change
history
view_resource_inventory_activity_no_recent_events =No events in the last 24 hours
view_resource_inventory_activity_no_recent_metrics=This resource has no recent metrics
commit abb0a4e4572f19cf995108d4adee7bf5aa9fdfcd
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed Feb 23 15:07:49 2011 -0500
enable Pkg History for Group Activity page. Added new InstalledPackageHistoryCriteria
class.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/InstalledPackageHistoryCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/InstalledPackageHistoryCriteria.java
new file mode 100644
index 0000000..e640369
--- /dev/null
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/InstalledPackageHistoryCriteria.java
@@ -0,0 +1,110 @@
+package org.rhq.core.domain.criteria;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+
+import org.rhq.core.domain.content.InstalledPackageHistory;
+import org.rhq.core.domain.util.PageOrdering;
+
+(a)XmlAccessorType(XmlAccessType.FIELD)
+@SuppressWarnings("unused")
+public class InstalledPackageHistoryCriteria extends Criteria {
+ private static final long serialVersionUID = 1L;
+
+ private Integer filterId;
+ private Long filterInstallationTimeMinimum; // requires overrides
+ private Long filterInstallationTimeMaximum; // requires overrides
+ private Integer filterPackageVersionId; // requires overrides
+ private Integer filterResourceId; // requires overrides
+ private List<Integer> filterResourceGroupIds; // requires overrides
+ private Integer filterUserId; // requires overrides
+
+ private boolean fetchPackageVersion;
+ private boolean fetchResource;
+ private boolean fetchUser;
+
+ private PageOrdering sortInstallationDate;
+ private PageOrdering sortStatus;
+
+ public InstalledPackageHistoryCriteria() {
+ super();
+ filterOverrides.put("installationTimeMinimum", "installationDate
>= ?");
+ filterOverrides.put("installationTimeMaximum", "installationDate
<= ?");
+ filterOverrides.put("packageVersionId", "packageVersion.id = ?
");
+ filterOverrides.put("resourceId", "resource.id = ? ");
+ filterOverrides.put("groupId", "resource.explicitGroups.id = ?
");
+ filterOverrides.put("resourceGroupIds", "resource.id IN " //
+ + "( SELECT res.id " //
+ + " FROM ResourceGroup rg " //
+ + " JOIN rg.explicitResources res " //
+ + " WHERE rg.id = ? )");
+ filterOverrides.put("userId", "user.id = ? ");
+ }
+
+ @Override
+ public Class<InstalledPackageHistory> getPersistentClass() {
+ return InstalledPackageHistory.class;
+ }
+
+ public void addFilterId(Integer filterId) {
+ this.filterId = filterId;
+ }
+
+ public void addFilterPackageVersionId(Integer filterPackageVersionId) {
+ this.filterPackageVersionId = filterPackageVersionId;
+ }
+
+ public void addFilterResourceId(Integer filterResourceId) {
+ this.filterResourceId = filterResourceId;
+ }
+
+ public void addFilterResourceGroupIds(Integer... filterResourceGroupIds) {
+ this.filterResourceGroupIds = Arrays.asList(filterResourceGroupIds);
+ }
+
+ public Integer getFilterResourceId() {
+ return filterResourceId;
+ }
+
+ public List<Integer> getFilterGroupIds() {
+ return filterResourceGroupIds;
+ }
+
+ public void addFilterSubjectId(Integer filterSubjectId) {
+ this.filterUserId = filterSubjectId;
+ }
+
+ public void addFilterInstallationTimeMinimum(Long filterInstallationTimeMinimum) {
+ this.filterInstallationTimeMinimum = filterInstallationTimeMinimum;
+ }
+
+ public void addFilterInstallationTimeMaximum(Long filterInstallationTimeMaximum) {
+ this.filterInstallationTimeMaximum = filterInstallationTimeMaximum;
+ }
+
+ public void fetchResource(boolean fetchResource) {
+ this.fetchResource = fetchResource;
+ }
+
+ public void fetchPackageVersion(boolean fetchPackageVersion) {
+ this.fetchPackageVersion = fetchPackageVersion;
+ }
+
+ public void fetchSubject(boolean fetchSubject) {
+ this.fetchUser = fetchSubject;
+ }
+
+ public void addSortInstallationTime(PageOrdering sortInstallationDate) {
+ addSortField("installationDate");
+ this.sortInstallationDate = sortInstallationDate;
+ }
+
+ public void addSortStatus(PageOrdering sortStatus) {
+ addSortField("sort");
+ this.sortStatus = sortStatus;
+ }
+
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ContentGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ContentGWTService.java
index 7cd0f55..080d749 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ContentGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ContentGWTService.java
@@ -30,6 +30,7 @@ import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.InstalledPackageHistory;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
import org.rhq.core.domain.criteria.PackageVersionCriteria;
import org.rhq.core.domain.util.PageList;
@@ -44,6 +45,8 @@ public interface ContentGWTService extends RemoteService {
PageList<InstalledPackageHistory> getInstalledPackageHistoryForResource(int
resourceId, int count);
+ PageList<InstalledPackageHistory>
findInstalledPackageHistoryByCriteria(InstalledPackageHistoryCriteria criteria);
+
List<Architecture> getArchitectures() throws RuntimeException;
PackageType getResourceCreationPackageType(int resourceTypeId) 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 625c139..2262d36 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
@@ -38,9 +38,11 @@ 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.content.InstalledPackageHistory;
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.criteria.InstalledPackageHistoryCriteria;
import org.rhq.core.domain.event.EventSeverity;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
@@ -88,7 +90,7 @@ public class ActivityView2 extends AbstractActivityView {
getRecentOperations();
getRecentConfigurationUpdates();
getRecentOobs();
- // getRecentPkgHistory();
+ getRecentPkgHistory();
getRecentMetrics();
}
}
@@ -395,63 +397,60 @@ public class ActivityView2 extends AbstractActivityView {
});
}
- // /** Fetches recent package history information and updates the DynamicForm
instance with details.
- // */
- // private void getRecentPkgHistory() {
- // // 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.addFilter(groupId);
- // PageControl pageControl = new PageControl(0, 5);
- // criteria.setPageControl(pageControl);
- //
- // //
GWTServiceLookup.getContentService().getInstalledPackageHistoryForResource(resourceId, 5,
- //
GWTServiceLookup.getContentService().getInstalledPackageHistoryForResource(resourceId, 5,
- // new AsyncCallback<PageList<InstalledPackageHistory>>() {
- // @Override
- // public void onFailure(Throwable caught) {
- // Log.debug("Error retrieving installed package history for
resource [" + resourceId + "]:"
- // + caught.getMessage());
- // }
- //
- // @Override
- // public void onSuccess(PageList<InstalledPackageHistory>
result) {
- // VLayout column = new VLayout();
- // column.setHeight(10);
- // if (!result.isEmpty()) {
- // for (InstalledPackageHistory history : result) {
- // LocatableDynamicForm row = new
LocatableDynamicForm(recentPkgHistoryContent
- //
.extendLocatorId(history.getPackageVersion().getFileName()
- // + history.getPackageVersion().getVersion()));
- // row.setNumCols(3);
- //
- // StaticTextItem iconItem =
newTextItemIcon("subsystems/content/Content_16.png", null);
- // String title =
history.getPackageVersion().getFileName() + ":";
- // String destination =
"/rhq/resource/content/audit-trail-item.xhtml?id=" + resourceId
- // + "&selectedHistoryId=" +
history.getId();
- // LinkItem link = newLinkItem(title, destination);
- // StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(history
- // .getTimestamp()));
- //
- // row.setItems(iconItem, link, time);
- // column.addMember(row);
- // }
- // } else {
- // LocatableDynamicForm row =
createEmptyDisplayRow(recentPkgHistoryContent
- // .extendLocatorId("None"),
RECENT_PKG_HISTORY_NONE);
- // column.addMember(row);
- // }
- // //cleanup
- // for (Canvas child : recentPkgHistoryContent.getChildren()) {
- // child.destroy();
- // }
- // recentPkgHistoryContent.addChild(column);
- // recentPkgHistoryContent.markForRedraw();
- // }
- // });
- // }
+ /** Fetches recent package history information and updates the DynamicForm instance
with details.
+ */
+ private void getRecentPkgHistory() {
+ final int groupId = this.groupComposite.getResourceGroup().getId();
+ InstalledPackageHistoryCriteria criteria = new
InstalledPackageHistoryCriteria();
+ PageControl pageControl = new PageControl(0, 5);
+ criteria.setPageControl(pageControl);
+ criteria.addFilterResourceGroupIds(groupId);
+ criteria.addSortStatus(PageOrdering.DESC);
+
+
GWTServiceLookup.getContentService().findInstalledPackageHistoryByCriteria(criteria,
+
+ new AsyncCallback<PageList<InstalledPackageHistory>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving installed package history for group
[" + groupId + "]:"
+ + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(PageList<InstalledPackageHistory> result) {
+ VLayout column = new VLayout();
+ column.setHeight(10);
+ if (!result.isEmpty()) {
+ for (InstalledPackageHistory history : result) {
+ LocatableDynamicForm row = new
LocatableDynamicForm(recentPkgHistoryContent
+ .extendLocatorId(history.getPackageVersion().getFileName()
+ + history.getPackageVersion().getVersion()));
+ row.setNumCols(3);
+
+ StaticTextItem iconItem =
newTextItemIcon("subsystems/content/Content_16.png", null);
+ String title = history.getPackageVersion().getFileName() +
":";
+ String destination =
"/rhq/resource/content/audit-trail-item.xhtml?id=" + groupId
+ + "&selectedHistoryId=" + history.getId();
+ LinkItem link = newLinkItem(title, destination);
+ StaticTextItem time =
newTextItem(GwtRelativeDurationConverter.format(history.getTimestamp()));
+
+ row.setItems(iconItem, link, time);
+ column.addMember(row);
+ }
+ } else {
+ LocatableDynamicForm row =
createEmptyDisplayRow(recentPkgHistoryContent.extendLocatorId("None"),
+ RECENT_PKG_HISTORY_NONE);
+ column.addMember(row);
+ }
+ //cleanup
+ for (Canvas child : recentPkgHistoryContent.getChildren()) {
+ child.destroy();
+ }
+ recentPkgHistoryContent.addChild(column);
+ recentPkgHistoryContent.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
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ContentGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ContentGWTServiceImpl.java
index caee06b..603288e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ContentGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ContentGWTServiceImpl.java
@@ -28,6 +28,7 @@ import org.rhq.core.domain.content.Architecture;
import org.rhq.core.domain.content.InstalledPackageHistory;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.PackageVersion;
+import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
import org.rhq.core.domain.criteria.PackageVersionCriteria;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
@@ -39,6 +40,7 @@ import org.rhq.enterprise.server.content.ContentUIManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
/**
+ * @author Simeon Pinder
* @author Greg Hinkle
*/
public class ContentGWTServiceImpl extends AbstractGWTServiceImpl implements
ContentGWTService {
@@ -68,6 +70,18 @@ public class ContentGWTServiceImpl extends AbstractGWTServiceImpl
implements Con
}
}
+ public PageList<InstalledPackageHistory>
findInstalledPackageHistoryByCriteria(
+ InstalledPackageHistoryCriteria criteria) throws RuntimeException {
+ try {
+ PageList<InstalledPackageHistory> results =
SerialUtility.prepare(contentUiManager
+ .findInstalledPackageHistoryByCriteria(getSessionSubject(), criteria),
+ "ContentService.findInstalledPackageHistoryByCriteria");
+ return results;
+ } catch (Throwable t) {
+ throw new RuntimeException(ThrowableUtil.getAllMessages(t));
+ }
+ }
+
public PageList<InstalledPackageHistory>
getInstalledPackageHistoryForResource(int resourceId, int count)
throws RuntimeException {
try {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
index a3a377a..c54f6eb 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerBean.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@@ -48,12 +49,16 @@ import
org.rhq.core.domain.content.composite.AdvisoryDetailsComposite;
import org.rhq.core.domain.content.composite.LoadedPackageBitsComposite;
import org.rhq.core.domain.content.composite.PackageListItemComposite;
import org.rhq.core.domain.content.composite.PackageVersionComposite;
+import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
import org.rhq.core.domain.util.OrderingField;
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.PersistenceUtility;
import org.rhq.enterprise.server.RHQConstants;
+import org.rhq.enterprise.server.authz.AuthorizationManagerLocal;
+import org.rhq.enterprise.server.util.CriteriaQueryGenerator;
+import org.rhq.enterprise.server.util.CriteriaQueryRunner;
/**
* @author Jason Dobies
@@ -68,6 +73,9 @@ public class ContentUIManagerBean implements ContentUIManagerLocal {
@PersistenceContext(unitName = RHQConstants.PERSISTENCE_UNIT_NAME)
private EntityManager entityManager;
+ @EJB
+ private AuthorizationManagerLocal authorizationManager;
+
// ContentUIManagerLocal Implementation
--------------------------------------------
public LoadedPackageBitsComposite getLoadedPackageBitsComposite(int packageVersionId)
{
@@ -497,4 +505,24 @@ public class ContentUIManagerBean implements ContentUIManagerLocal {
return new PageList<InstalledPackageHistory>(packages, (int) totalCount,
pc);
}
+
+ @SuppressWarnings("unchecked")
+ public PageList<InstalledPackageHistory>
findInstalledPackageHistoryByCriteria(Subject subject,
+ InstalledPackageHistoryCriteria criteria) {
+
+ CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject,
criteria);
+ ;
+
+ if (!authorizationManager.isInventoryManager(subject)) {
+ // Ensure we limit to packages installed to viewable resources
+
generator.setAuthorizationResourceFragment(CriteriaQueryGenerator.AuthorizationTokenType.RESOURCE,
+ "resource", subject.getId());
+ }
+
+ CriteriaQueryRunner<InstalledPackageHistory> queryRunner = new
CriteriaQueryRunner(criteria, generator,
+ entityManager);
+
+ return queryRunner.execute();
+
+ }
}
\ No newline at end of file
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerLocal.java
index 6b9d2f8..6ef67d9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentUIManagerLocal.java
@@ -35,6 +35,7 @@ import org.rhq.core.domain.content.composite.AdvisoryDetailsComposite;
import org.rhq.core.domain.content.composite.LoadedPackageBitsComposite;
import org.rhq.core.domain.content.composite.PackageListItemComposite;
import org.rhq.core.domain.content.composite.PackageVersionComposite;
+import org.rhq.core.domain.criteria.InstalledPackageHistoryCriteria;
import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
@@ -243,6 +244,16 @@ public interface ContentUIManagerLocal {
PageList<InstalledPackageHistory> getInstalledPackageHistoryForResource(int
resourceId, PageControl pc);
/**
+ * Returns a pagable list of all package events that have taken place on the given
resource.
+ *
+ * @param resourceId must refer to a valid resource in the database
+ * @param pc pagination controller
+ * @return pagable list of package change items; will not be
<code>null</code>
+ */
+ PageList<InstalledPackageHistory> findInstalledPackageHistoryByCriteria(Subject
subject,
+ InstalledPackageHistoryCriteria criteria);
+
+ /**
* Retrieves Advisory Details by its ID. One and only one must exist for the ID;
* @param user user who wants to see the information
* @param id identifier for advisory