modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
| 16
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
| 8
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
| 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/PortletConfigurationEditorComponent.java
| 93 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
| 551 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOperationsPortlet.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
| 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet.java
| 324 +++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/summary/AbstractActivityView.java
| 20
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/GroupResourceConfigurationDataSource.java
| 97 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationTable.java
| 100 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/summary/ActivityView.java
| 7
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 17
17 files changed, 1180 insertions(+), 123 deletions(-)
New commits:
commit a89e5f870173e6c9df210a97cb39ed12d2fa64f6
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Mon Apr 4 08:17:06 2011 -0400
remove config-updates portlet unless compatible grp.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index 650c9a3..f087202 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -527,6 +527,7 @@ public class DashboardView extends LocatableVLayout {
groupKeyNameMap.remove(GroupMetricsPortlet.KEY);
groupKeyNameMap.remove(GroupOobsPortlet.KEY);
groupKeyNameMap.remove(GroupPkgHistoryPortlet.KEY);
+ groupKeyNameMap.remove(GroupConfigurationUpdatesPortlet.KEY);
} else {
//for compatible may still need to do some pruning.
if (!facets.isEmpty()) {
commit 687c8c170ac700896242e59e2e5d7acc5d301335
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Sun Apr 3 15:03:34 2011 -0400
remove old activityView2 tabs.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 86a7c1c..8e8eca7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -64,7 +64,6 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.monitoring.
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.operation.history.GroupOperationHistoryListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.operation.schedule.GroupOperationScheduleListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.summary.ActivityView;
-import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.summary.ActivityView3;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
/**
@@ -91,7 +90,6 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
// subtabs
private SubTab summaryActivity;
- private SubTab summaryActivity2;
private SubTab summaryTimeline;
private SubTab monitorGraphs;
private SubTab monitorTables;
@@ -155,13 +153,9 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
.view_tabs_common_summary()),
ImageManager.getResourceIcon(ResourceCategory.SERVICE, Boolean.TRUE));
summaryActivity = new SubTab(summaryTab.extendLocatorId("Activity"),
new ViewName("Activity", MSG
.view_tabs_common_activity()), null);
- summaryActivity2 = new SubTab(summaryTab.extendLocatorId("Activity2"),
new ViewName("Activity2", MSG
- .view_tabs_common_activity()
- + "2"), null);
summaryTimeline = new SubTab(summaryTab.extendLocatorId("Timeline"),
new ViewName("Timeline", MSG
.view_tabs_common_timeline()), null);
- // summaryTab.registerSubTabs(summaryActivity, summaryTimeline);
- summaryTab.registerSubTabs(summaryActivity, summaryActivity2, summaryTimeline);
+ summaryTab.registerSubTabs(summaryActivity, summaryTimeline);
tabs.add(summaryTab);
inventoryTab = new
TwoLevelTab(getTabSet().extendLocatorId("Inventory"), new
ViewName("Inventory", MSG
@@ -260,12 +254,6 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
return new
ActivityView(summaryActivity.extendLocatorId("View"), groupComposite);
}
});
- updateSubTab(this.summaryTab, this.summaryActivity2, true, true, new
ViewFactory() {
- @Override
- public Canvas createView() {
- return new
ActivityView3(summaryActivity2.extendLocatorId("View2"), groupComposite);
- }
- });
// TODO (ips): Add Timeline subtab?
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
index 91f617d..8ddb631 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
@@ -68,7 +68,6 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitorin
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.history.ResourceOperationHistoryListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.schedule.ResourceOperationScheduleListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.ActivityView;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.ActivityView3;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
@@ -113,7 +112,6 @@ public class ResourceDetailView extends
AbstractTwoLevelTabSetView<ResourceCompo
private TwoLevelTab contentTab;
private SubTab summaryActivity;
- private SubTab summaryActivity2;
private SubTab summaryTimeline;
private SubTab monitorGraphs;
private SubTab monitorTables;
@@ -153,12 +151,9 @@ public class ResourceDetailView extends
AbstractTwoLevelTabSetView<ResourceCompo
.view_tabs_common_summary()),
ImageManager.getResourceIcon(ResourceCategory.SERVICE, Boolean.TRUE));
summaryActivity = new SubTab(summaryTab.extendLocatorId("Activity"),
new ViewName("Activity", MSG
.view_tabs_common_activity()), null);
- summaryActivity2 = new SubTab(summaryTab.extendLocatorId("Activity2"),
new ViewName("Activity2", MSG
- .view_tabs_common_activity()
- + "2"), null);
summaryTimeline = new SubTab(summaryTab.extendLocatorId("Timeline"),
new ViewName("Timeline", MSG
.view_tabs_common_timeline()), null);
- summaryTab.registerSubTabs(summaryActivity, summaryActivity2, summaryTimeline);
+ summaryTab.registerSubTabs(summaryActivity, summaryTimeline);
tabs.add(summaryTab);
inventoryTab = new
TwoLevelTab(getTabSet().extendLocatorId("Inventory"), new
ViewName("Inventory", MSG
@@ -285,13 +280,6 @@ public class ResourceDetailView extends
AbstractTwoLevelTabSetView<ResourceCompo
}
});
- updateSubTab(this.summaryTab, this.summaryActivity2, true, true, new
ViewFactory() {
- @Override
- public Canvas createView() {
- return new
ActivityView3(summaryActivity2.extendLocatorId("View"), resourceComposite);
- }
- });
-
updateSubTab(this.summaryTab, this.summaryTimeline, true, true, new ViewFactory()
{
@Override
public Canvas createView() {
commit 076c5fd6ad952765cab9e92b815c2fddfd723e9b
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Sun Apr 3 14:59:22 2011 -0400
update portlet table view message to better reflect criteria filtering.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
index 93fd686..188b2a1 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
@@ -247,6 +247,16 @@ public abstract class AbstractRecentAlertsPortlet extends
AlertHistoryView imple
super.setupTableInteractions(hasWriteAccess);
}
+ @Override
+ protected void refreshTableInfo() {
+ super.refreshTableInfo();
+ if (getTableInfo() != null) {
+ int count = getListGrid().getSelection().length;
+ getTableInfo().setContents(
+ MSG.view_table_matchingRows(String.valueOf(getListGrid().getTotalRows()),
String.valueOf(count)));
+ }
+ }
+
public void startRefreshCycle() {
refreshTimer = AutoRefreshPortletUtil.startRefreshCycle(this, this,
refreshTimer);
}
commit 39f958f9bb1723096d99f54a9834fbe3c103ecc1
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Sun Apr 3 13:42:45 2011 -0400
modify default portlet arangements to include config updates where necessary.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index ba91415..650c9a3 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -67,11 +67,13 @@ import org.rhq.enterprise.gui.coregui.client.ImageManager;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.components.form.ColorButtonItem;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupMetricsPortlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOobsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOperationsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupPkgHistoryPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceEventsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceMetricsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceOperationsPortlet;
@@ -495,6 +497,10 @@ public class DashboardView extends LocatableVLayout {
if (!facets.contains(ResourceTypeFacet.EVENT)) {
resourceKeyNameMap.remove(ResourceEventsPortlet.KEY);
}
+ //Configuration related portlets
+ if (!facets.contains(ResourceTypeFacet.CONFIGURATION)) {
+ resourceKeyNameMap.remove(ResourceConfigurationUpdatesPortlet.KEY);
+ }
}
//Bundle related portlet
if
(!resource.getResourceType().getCategory().equals(ResourceCategory.PLATFORM)) {
@@ -537,6 +543,10 @@ public class DashboardView extends LocatableVLayout {
if (!facets.contains(ResourceTypeFacet.CONTENT)) {
groupKeyNameMap.remove(GroupPkgHistoryPortlet.KEY);
}
+ //CONFIGURATION related portlets(CONFIGURATION)
+ if (!facets.contains(ResourceTypeFacet.CONFIGURATION)) {
+ groupKeyNameMap.remove(GroupConfigurationUpdatesPortlet.KEY);
+ }
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView.java
index dc74fb6..c6b36b0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/summary/ActivityView.java
@@ -56,6 +56,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.DashboardView;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletFactory;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupAlertsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupMetricsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOperationsPortlet;
import org.rhq.enterprise.gui.coregui.client.gwt.DashboardGWTServiceAsync;
@@ -269,6 +270,12 @@ public class ActivityView extends LocatableVLayout implements
DashboardContainer
dashboard.addPortlet(ops, colRight, rowRight++);
groupKeyNameMap.remove(GroupOperationsPortlet.KEY);
}
+ if (groupKeyNameMap.containsKey(GroupConfigurationUpdatesPortlet.KEY))
{//operations if available
+ DashboardPortlet ops = new
DashboardPortlet(GroupConfigurationUpdatesPortlet.NAME,
+ GroupConfigurationUpdatesPortlet.KEY, 220);
+ dashboard.addPortlet(ops, colRight, rowRight++);
+ groupKeyNameMap.remove(GroupConfigurationUpdatesPortlet.KEY);
+ }
//Fill out left column(typically smaller portlets) then alternate cols with
remaining
displayLeft = false;
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 4cec210..ca227e2 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
@@ -30,6 +30,7 @@ import
org.rhq.enterprise.gui.coregui.client.dashboard.DashboardContainer;
import org.rhq.enterprise.gui.coregui.client.dashboard.DashboardView;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletFactory;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceAlertsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceMetricsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceOperationsPortlet;
import org.rhq.enterprise.gui.coregui.client.gwt.DashboardGWTServiceAsync;
@@ -199,6 +200,12 @@ public class ActivityView extends LocatableVLayout implements
DashboardContainer
dashboard.addPortlet(ops, colRight, rowRight++);
resKeyNameMap.remove(ResourceOperationsPortlet.KEY);
}
+ if (resKeyNameMap.containsKey(ResourceConfigurationUpdatesPortlet.KEY))
{//configuration if available
+ DashboardPortlet ops = new
DashboardPortlet(ResourceConfigurationUpdatesPortlet.NAME,
+ ResourceConfigurationUpdatesPortlet.KEY, 220);
+ dashboard.addPortlet(ops, colRight, rowRight++);
+ resKeyNameMap.remove(ResourceConfigurationUpdatesPortlet.KEY);
+ }
//Fill out left column(typically smaller portlets) then alternate cols with
remaining
boolean displayLeft = false;
commit ede97db6398b087d3624b4736e24e531a685e85f
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Sun Apr 3 13:21:38 2011 -0400
add resource configuration updates portlet.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
index 1bd51de..2ccb582 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
@@ -49,6 +49,7 @@ import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operation
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.problems.ProblemResourcesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceAlertsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceEventsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceMetricsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.resource.ResourceOobsPortlet;
@@ -151,6 +152,8 @@ public class PortletFactory {
ResourcePkgHistoryPortlet.Factory.INSTANCE);
registeredResourcePortletFactoryMap.put(ResourceBundleDeploymentsPortlet.KEY,
ResourceBundleDeploymentsPortlet.Factory.INSTANCE);
+ registeredResourcePortletFactoryMap.put(ResourceConfigurationUpdatesPortlet.KEY,
+ ResourceConfigurationUpdatesPortlet.Factory.INSTANCE);
//register resource portlet names
registeredResourcePortletNameMap = new HashMap<String,
String>(registeredResourcePortletFactoryMap.size());
@@ -162,6 +165,8 @@ public class PortletFactory {
registeredResourcePortletNameMap.put(ResourceAlertsPortlet.KEY,
ResourceAlertsPortlet.NAME);
registeredResourcePortletNameMap.put(ResourceBundleDeploymentsPortlet.KEY,
ResourceBundleDeploymentsPortlet.NAME);
+ registeredResourcePortletNameMap.put(ResourceConfigurationUpdatesPortlet.KEY,
+ ResourceConfigurationUpdatesPortlet.NAME);
//############## Portlet icon mappings
############################################
//register portlet names
@@ -181,6 +186,7 @@ public class PortletFactory {
registeredPortletIconMap.put(GroupBundleDeploymentsPortlet.KEY,
ImageManager.getBundleIcon());
registeredPortletIconMap.put(ResourceBundleDeploymentsPortlet.KEY,
ImageManager.getBundleIcon());
registeredPortletIconMap.put(GroupConfigurationUpdatesPortlet.KEY,
ImageManager.getConfigureIcon());
+ registeredPortletIconMap.put(ResourceConfigurationUpdatesPortlet.KEY,
ImageManager.getConfigureIcon());
}
public static Portlet buildPortlet(String locatorId, PortletWindow portletWindow,
DashboardPortlet storedPortlet) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
index 083c43b..f002795 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
@@ -124,11 +124,14 @@ public class GroupConfigurationUpdatesPortlet extends
LocatableVLayout implement
//figure out which page we're loading
String currentPage = History.getToken();
String[] elements = currentPage.split("/");
- int currentGroupId = AbstractActivityView.groupIdLookup(currentPage);
- this.groupId = currentGroupId;
+ this.groupId = groupId;
baseViewPath = elements[0];
}
+ public GroupConfigurationUpdatesPortlet(String locatorId) {
+ super(locatorId);
+ }
+
/**Defines layout for the portlet page.
*/
protected void initializeUi() {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet.java
new file mode 100644
index 0000000..a4a6e67
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceConfigurationUpdatesPortlet.java
@@ -0,0 +1,324 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.enterprise.gui.coregui.client.dashboard.portlets.resource;
+
+import java.util.ArrayList;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.CellFormatter;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.ResourceConfigurationUpdate;
+import org.rhq.core.domain.criteria.ResourceConfigurationUpdateCriteria;
+import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
+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.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.PortletConfigurationEditorComponent.Constant;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupConfigurationUpdatesPortlet;
+import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configuration.ConfigurationHistoryDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configuration.ConfigurationHistoryView;
+import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility;
+
+/**This portlet allows the end user to customize the Package History display
+ *
+ * @author Simeon Pinder
+ */
+public class ResourceConfigurationUpdatesPortlet extends GroupConfigurationUpdatesPortlet
{
+
+ // A non-displayed, persisted identifier for the portlet
+ public static final String KEY = "ResourceConfigurationUpdates";
+ // A default displayed, persisted name for the portlet
+ public static final String NAME =
MSG.view_portlet_defaultName_resource_config_updates();
+
+ private int resourceId = -1;
+ private ResourceComposite resourceComposite;
+
+ private ResourceConfigurationHistoryCriteriaView resourceHistoryTable;
+
+ public ResourceConfigurationUpdatesPortlet(String locatorId, int resourceId) {
+ super(locatorId);
+ this.resourceId = resourceId;
+ //figure out which page we're loading
+ String currentPage = History.getToken();
+ String[] elements = currentPage.split("/");
+ baseViewPath = elements[0];
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+ initializeUi();
+ loadData();
+ }
+
+ public static final class Factory implements PortletViewFactory {
+ public static PortletViewFactory INSTANCE = new Factory();
+
+ /* (non-Javadoc)
+ * TODO: This factory ASSUMES the user is currently navigated to a group detail
view, and generates a portlet
+ * for that group. It will fail in other scenarios. This mechanism
should be improved such that the
+ * factory method can take an EntityContext explicitly indicating, in this
case, the group.
+ * @see
org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory#getInstance(java.lang.String)
+ */
+ public final Portlet getInstance(String locatorId) {
+ //figure out which page we're loading
+ String currentPage = History.getToken();
+ String[] elements = currentPage.split("/");
+ int currentResourceIdentifier = Integer.valueOf(elements[1]);
+ int resourceId = currentResourceIdentifier;
+
+ return new ResourceConfigurationUpdatesPortlet(locatorId, resourceId);
+ }
+ }
+
+ @Override
+ public void redraw() {
+ super.redraw();
+ loadData();
+ }
+
+ private void loadData() {
+ //populate composite data
+ //locate resourceRef
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterId(this.resourceId);
+ criteria.fetchResourceConfigurationUpdates(false);
+ criteria.fetchOperationHistories(false);
+
+ //locate the resource
+ GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceComposite>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving resource composite for resource
[" + resourceId + "]:"
+ + caught.getMessage());
+ currentlyLoading = false;
+ }
+
+ @Override
+ public void onSuccess(PageList<ResourceComposite> results) {
+ if (!results.isEmpty()) {
+ resourceComposite = results.get(0);
+ //instantiate view
+
+ PageControl lastFive = new PageControl(0, 5);
+ ResourceConfigurationUpdateCriteria criteria = new
ResourceConfigurationUpdateCriteria();
+ criteria.setPageControl(lastFive);
+ //TODO: spinder: move this up into the pageControl.
+ criteria.addSortStatus(PageOrdering.DESC);
+ criteria.addFilterResourceIds(resourceId);
+
+ resourceHistoryTable = new
ResourceConfigurationHistoryCriteriaView(extendLocatorId("Table"),
+ resourceComposite.getResourcePermission().isConfigureWrite(),
resourceId);
+ } else {
+ resourceHistoryTable = new
ResourceConfigurationHistoryCriteriaView(extendLocatorId("Table"),
+ resourceComposite.getResourcePermission().isConfigureWrite(),
-1);
+ }
+ resourceHistoryTable.setDataSource(new
ConfigurationUdpatesCriteriaDataSource(portletConfig));
+ resourceHistoryTable.setShowHeader(false);
+ resourceHistoryTable.setShowFooterRefresh(false);
+
+ //cleanup
+ for (Canvas child : recentConfigurationContent.getChildren()) {
+ child.destroy();
+ }
+ recentConfigurationContent.addChild(resourceHistoryTable);
+ recentConfigurationContent.markForRedraw();
+ currentlyLoading = false;
+ }
+ });
+ }
+
+ class ResourceConfigurationHistoryCriteriaView extends ConfigurationHistoryView {
+
+ public ResourceConfigurationHistoryCriteriaView(String locatorId, boolean
hasWritePerm, int resourceId) {
+ super(locatorId, hasWritePerm, resourceId);
+ }
+
+ @Override
+ protected void refreshTableInfo() {
+ super.refreshTableInfo();
+ if (getTableInfo() != null) {
+ int count = getListGrid().getSelection().length;
+ getTableInfo().setContents(
+
MSG.view_table_matchingRows(String.valueOf(getListGrid().getTotalRows()),
String.valueOf(count)));
+ }
+ }
+
+ /**
+ * Override if you don't want the detailsLinkColumn to have the default link
wrapper.
+ * @return the desired CellFormatter.
+ */
+ protected CellFormatter getDetailsLinkColumnCellFormatter() {
+ return new CellFormatter() {
+ public String format(Object value, ListGridRecord record, int i, int i1)
{
+ Integer recordId = getId(record);
+ String detailsUrl = "#" + getBasePath() + "/" +
recordId;
+ return SeleniumUtility.getLocatableHref(detailsUrl, value.toString(),
null);
+ }
+ };
+ }
+
+ @Override
+ protected String getBasePath() {
+ return "Resource/" + resourceComposite.getResource().getId() +
"/Configuration/History";
+ }
+ }
+
+ class ConfigurationUdpatesCriteriaDataSource extends ConfigurationHistoryDataSource
{
+
+ public ConfigurationUdpatesCriteriaDataSource(Configuration portletConfig) {
+ super();
+ this.portletConfig = portletConfig;
+ }
+
+ private Configuration portletConfig;
+
+ @Override
+ protected void executeFetch(final DSRequest request, final DSResponse response,
+ final ResourceConfigurationUpdateCriteria criteria) {
+ ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
+
+ configurationService.findResourceConfigurationUpdatesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceConfigurationUpdate>>() {
+
+ @Override
+ public void onSuccess(PageList<ResourceConfigurationUpdate>
result) {
+ response.setData(buildRecords(result));
+ //adjust for portlets that restrict result size
+ response.setTotalRows(result.size());
+ processResponse(request.getRequestId(), response);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_group_resConfig_table_failFetch(),
caught);
+ response.setStatus(DSResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+
+ @Override
+ protected ResourceConfigurationUpdateCriteria getFetchCriteria(final DSRequest
request) {
+ //initialize criteria
+ ResourceConfigurationUpdateCriteria criteria = new
ResourceConfigurationUpdateCriteria();
+ criteria.addFilterResourceIds(resourceId);
+
+ //initialize to only five for quick queries.
+ PageControl pageControl = new PageControl(0, 5);//default to displaying five
+ //customize query with latest configuration selections
+
+ //retrieve previous settings from portlet config
+ if (portletConfig != null) {
+ // //result sort order
+ // PropertySimple property =
portletConfig.getSimple(Constant.RESULT_SORT_ORDER);
+ // if (property != null) {
+ // String currentSetting = property.getStringValue();
+ // if (currentSetting.trim().isEmpty() ||
currentSetting.equalsIgnoreCase(PageOrdering.DESC.name())) {
+ // criteria.addSortStatus(PageOrdering.DESC);
+ // } else {
+ // criteria.addSortStatus(PageOrdering.ASC);
+ // }
+ // }
+ //result timeframe if enabled
+ PropertySimple property =
portletConfig.getSimple(Constant.METRIC_RANGE_ENABLE);
+ if (Boolean.valueOf(property.getBooleanValue())) {//then proceed setting
+
+ boolean isAdvanced = false;
+ //detect type of widget[Simple|Advanced]
+ property =
portletConfig.getSimple(Constant.METRIC_RANGE_BEGIN_END_FLAG);
+ if (property != null) {
+ isAdvanced = property.getBooleanValue();
+ }
+ if (isAdvanced) {
+ //Advanced time settings
+ property = portletConfig.getSimple(Constant.METRIC_RANGE);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ String[] range = currentSetting.split(",");
+ criteria.addFilterStartTime(Long.valueOf(range[0]));
+ criteria.addFilterEndTime(Long.valueOf(range[1]));
+ }
+ } else {
+ //Simple time settings
+ property = portletConfig.getSimple(Constant.METRIC_RANGE_LASTN);
+ if (property != null) {
+ int lastN = property.getIntegerValue();
+ property =
portletConfig.getSimple(Constant.METRIC_RANGE_UNIT);
+ int lastUnits = property.getIntegerValue();
+ ArrayList<Long> beginEnd =
MeasurementUtility.calculateTimeFrame(lastN, Integer
+ .valueOf(lastUnits));
+ criteria.addFilterStartTime(Long.valueOf(beginEnd.get(0)));
+ criteria.addFilterEndTime(Long.valueOf(beginEnd.get(1)));
+ }
+ }
+ }
+
+ //result count
+ property = portletConfig.getSimple(Constant.RESULT_COUNT);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ if (currentSetting.trim().isEmpty() ||
currentSetting.equalsIgnoreCase("5")) {
+ pageControl.setPageSize(5);
+ } else {
+ pageControl = new PageControl(0,
Integer.valueOf(currentSetting));
+ }
+ }
+ criteria.setPageControl(pageControl);
+
+ //detect operation status filter
+ property = portletConfig.getSimple(Constant.CONFIG_UPDATE_STATUS);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ String[] parsedValues = currentSetting.trim().split(",");
+ if (currentSetting.trim().isEmpty()
+ || parsedValues.length ==
ConfigurationUpdateStatus.values().length) {
+ //all operation stati assumed
+ } else {
+ ConfigurationUpdateStatus[] updateStatus = new
ConfigurationUpdateStatus[parsedValues.length];
+ int indx = 0;
+ for (String priority : parsedValues) {
+ ConfigurationUpdateStatus s =
ConfigurationUpdateStatus.valueOf(priority);
+ updateStatus[indx++] = s;
+ }
+ criteria.addFilterStatuses(updateStatus);
+ }
+ }
+ }
+ return criteria;
+ }
+ }
+}
\ No newline at end of file
commit 815e140add7fc76d04157ee5349e560360ee3f68
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Apr 1 11:50:12 2011 -0400
fix invalid ConfigUpdate criteria values when querying on created/ctime.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
index d01b28a..14ebac6 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
@@ -38,7 +38,8 @@ import org.rhq.core.domain.util.PageOrdering;
public abstract class AbstractConfigurationUpdateCriteria extends Criteria {
private static final long serialVersionUID = 1L;
- public static final String SORT_FIELD_CTIME = "ctime";
+ public static final String SORT_FIELD_CTIME = "createdTime";
+
public static final String SORT_FIELD_STATUS = "status";
private Integer filterId;
@@ -54,8 +55,8 @@ public abstract class AbstractConfigurationUpdateCriteria extends
Criteria {
public AbstractConfigurationUpdateCriteria() {
- filterOverrides.put("startTime", "ctime >= ?");
- filterOverrides.put("endTime", "ctime <= ?");
+ filterOverrides.put("startTime", "createdTime >= ?");
+ filterOverrides.put("endTime", "createdTime <= ?");
filterOverrides.put("statuses", "status IN ( ? )");
sortOverrides.put(SORT_FIELD_STATUS, "status");
commit b986579932d81b59f805c23e20c9038a0075da93
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Fri Apr 1 09:06:38 2011 -0400
Adding missing ConfigUpdates portlet:
i)updating ConfigUpdateCriteria to support ConfigUpdateStatus[] as well
ii)ImageManager changes
iii)missing i18n messages
iv)ConfigUpdateStatus widget for shared portlets.
v)moved HistoryGroupResourceConfigurationTable.Datasource to top level class for
better sharing.
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
index bd454d5..d01b28a 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/criteria/AbstractConfigurationUpdateCriteria.java
@@ -22,11 +22,14 @@
*/
package org.rhq.core.domain.criteria;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
+import org.rhq.core.domain.util.CriteriaUtils;
import org.rhq.core.domain.util.PageOrdering;
@XmlRootElement
@@ -42,6 +45,7 @@ public abstract class AbstractConfigurationUpdateCriteria extends
Criteria {
private Long filterStartTime; // requires overrides
private Long filterEndTime; // requires overrides
private ConfigurationUpdateStatus filterStatus;
+ private List<ConfigurationUpdateStatus> filterStatuses; // requires overrides
private boolean fetchConfiguration;
@@ -52,6 +56,7 @@ public abstract class AbstractConfigurationUpdateCriteria extends
Criteria {
filterOverrides.put("startTime", "ctime >= ?");
filterOverrides.put("endTime", "ctime <= ?");
+ filterOverrides.put("statuses", "status IN ( ? )");
sortOverrides.put(SORT_FIELD_STATUS, "status");
}
@@ -72,6 +77,10 @@ public abstract class AbstractConfigurationUpdateCriteria extends
Criteria {
this.filterStatus = status;
}
+ public void addFilterStatuses(ConfigurationUpdateStatus... configUpdateStatus) {
+ this.filterStatuses = CriteriaUtils.getListIgnoringNulls(configUpdateStatus);
+ }
+
public void fetchConfiguration(boolean configuration) {
this.fetchConfiguration = configuration;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
index 58346f0..8be3976 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ImageManager.java
@@ -485,4 +485,12 @@ public class ImageManager {
public static String getBundleIcon() {
return "subsystems/content/Content_16.png";
}
+
+ public static String getConfigureLargeIcon() {
+ return "subsystems/configure/Configure_24.png";
+ }
+
+ public static String getConfigureIcon() {
+ return "subsystems/configure/Configure_16.png";
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
index 520a948..1bd51de 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortletFactory.java
@@ -32,6 +32,7 @@ import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupAlertsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupBundleDeploymentsPortlet;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupConfigurationUpdatesPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupEventsPortlet;
import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupMetricsPortlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOobsPortlet;
@@ -123,6 +124,8 @@ public class PortletFactory {
registeredGroupPortletFactoryMap.put(GroupPkgHistoryPortlet.KEY,
GroupPkgHistoryPortlet.Factory.INSTANCE);
registeredGroupPortletFactoryMap.put(GroupBundleDeploymentsPortlet.KEY,
GroupBundleDeploymentsPortlet.Factory.INSTANCE);
+ registeredGroupPortletFactoryMap.put(GroupConfigurationUpdatesPortlet.KEY,
+ GroupConfigurationUpdatesPortlet.Factory.INSTANCE);
//register group portlet names
registeredGroupPortletNameMap = new HashMap<String,
String>(registeredGroupPortletFactoryMap.size());
@@ -133,6 +136,7 @@ public class PortletFactory {
registeredGroupPortletNameMap.put(GroupOperationsPortlet.KEY,
GroupOperationsPortlet.NAME);
registeredGroupPortletNameMap.put(GroupPkgHistoryPortlet.KEY,
GroupPkgHistoryPortlet.NAME);
registeredGroupPortletNameMap.put(GroupBundleDeploymentsPortlet.KEY,
GroupBundleDeploymentsPortlet.NAME);
+ registeredGroupPortletNameMap.put(GroupConfigurationUpdatesPortlet.KEY,
GroupConfigurationUpdatesPortlet.NAME);
//############## Resource Activity Dashboard
############################################
//defines mapping for Group Activity Dashboard
@@ -176,6 +180,7 @@ public class PortletFactory {
registeredPortletIconMap.put(ResourcePkgHistoryPortlet.KEY,
ImageManager.getActivityPackageIcon());
registeredPortletIconMap.put(GroupBundleDeploymentsPortlet.KEY,
ImageManager.getBundleIcon());
registeredPortletIconMap.put(ResourceBundleDeploymentsPortlet.KEY,
ImageManager.getBundleIcon());
+ registeredPortletIconMap.put(GroupConfigurationUpdatesPortlet.KEY,
ImageManager.getConfigureIcon());
}
public static Portlet buildPortlet(String locatorId, PortletWindow portletWindow,
DashboardPortlet storedPortlet) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/PortletConfigurationEditorComponent.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/PortletConfigurationEditorComponent.java
index cea94a9..b7488da 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/PortletConfigurationEditorComponent.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/PortletConfigurationEditorComponent.java
@@ -27,6 +27,7 @@ import com.smartgwt.client.widgets.form.fields.SelectItem;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
@@ -68,6 +69,8 @@ public class PortletConfigurationEditorComponent {
String CUSTOM_REFRESH = "CUSTOM_REFRESH";
String OPERATION_STATUS = "OPERATION_STATUS";
String OPERATION_STATUS_DEFAULT = "";//empty
+ String CONFIG_UPDATE_STATUS = "CONFIG_UPDATE_STATUS";
+ String CONFIG_UPDATE_STATUS_DEFAULT = "";
}
//configuration map initialization
@@ -90,6 +93,8 @@ public class PortletConfigurationEditorComponent {
CONFIG_PROPERTY_INITIALIZATION.put(Constant.METRIC_RANGE_UNIT,
Constant.METRIC_RANGE_UNIT_DEFAULT);
//operation status, if empty initialize to "" i.e. all stati
CONFIG_PROPERTY_INITIALIZATION.put(Constant.OPERATION_STATUS,
Constant.OPERATION_STATUS_DEFAULT);
+ //config update status, if empty initialize to "" i.e. all stati
+ CONFIG_PROPERTY_INITIALIZATION.put(Constant.CONFIG_UPDATE_STATUS,
Constant.CONFIG_UPDATE_STATUS_DEFAULT);
}
/* Single select combobox for number of items to display on the dashboard
@@ -99,9 +104,9 @@ public class PortletConfigurationEditorComponent {
public static SelectItem getResultCountEditor(Configuration portletConfig) {
final SelectItem maximumResultsComboBox = new SelectItem(Constant.RESULT_COUNT);
- maximumResultsComboBox.setTitle("Results Count");
+ maximumResultsComboBox.setTitle(MSG.common_title_results_count());
maximumResultsComboBox.setWrapTitle(false);
- maximumResultsComboBox.setTooltip("<nobr><b> " +
"Displays N results with alerts" + "</b></nobr>");
+ maximumResultsComboBox.setTooltip("<nobr><b> " +
MSG.common_title_results_count_tooltip() + "</b></nobr>");
//spinder 9/3/10: the following is required workaround to disable editability of
combobox.
maximumResultsComboBox.setType("selection");
//set width of dropdown display region
@@ -176,9 +181,9 @@ public class PortletConfigurationEditorComponent {
* @return Populated selectItem instance.
*/
public static SelectItem getResulSortOrderEditor(Configuration portletConfig) {
- SelectItem sortPrioritySelection = new SelectItem(Constant.RESULT_SORT_PRIORITY,
"Sort Order");
+ SelectItem sortPrioritySelection = new SelectItem(Constant.RESULT_SORT_PRIORITY,
MSG.common_title_sort_order());
sortPrioritySelection.setWrapTitle(false);
- sortPrioritySelection.setTooltip("Sets sort order for results.");
+ sortPrioritySelection.setTooltip(MSG.common_title_sort_order_tooltip());
LinkedHashMap<String, String> priorities = new LinkedHashMap<String,
String>(2);
priorities.put(PageOrdering.ASC.name(), "Ascending");
priorities.put(PageOrdering.DESC.name(), "Descending");
@@ -213,7 +218,7 @@ public class PortletConfigurationEditorComponent {
}
public static SelectItem getOperationStatusEditor(Configuration portletConfig) {
- SelectItem priorityFilter = new SelectItem(Constant.OPERATION_STATUS,
"Operation Status");
+ SelectItem priorityFilter = new SelectItem(Constant.OPERATION_STATUS,
MSG.common_title_operation_status());
priorityFilter.setWrapTitle(false);
priorityFilter.setWidth(325);
priorityFilter.setMultiple(true);
@@ -286,4 +291,82 @@ public class PortletConfigurationEditorComponent {
return priorityFilter;
}
+ public static SelectItem getConfigurationUpdateStatusEditor(Configuration
portletConfig) {
+ SelectItem priorityFilter = new SelectItem(Constant.CONFIG_UPDATE_STATUS, MSG
+ .common_title_config_update_status());
+ priorityFilter.setWrapTitle(false);
+ priorityFilter.setWidth(335);
+ priorityFilter.setMultiple(true);
+ priorityFilter.setMultipleAppearance(MultipleAppearance.PICKLIST);
+
+ LinkedHashMap<String, String> stati = new LinkedHashMap<String,
String>(4);
+ stati.put(ConfigurationUpdateStatus.SUCCESS.name(),
MSG.common_status_success());
+ stati.put(ConfigurationUpdateStatus.INPROGRESS.name(),
MSG.common_status_inprogress());
+ stati.put(ConfigurationUpdateStatus.NOCHANGE.name(),
MSG.common_status_nochange());
+ stati.put(ConfigurationUpdateStatus.FAILURE.name(), MSG.common_status_failed());
+
+ LinkedHashMap<String, String> statusIcons = new LinkedHashMap<String,
String>(3);
+ statusIcons.put(ConfigurationUpdateStatus.SUCCESS.name(), ImageManager
+ .getResourceConfigurationIcon(ConfigurationUpdateStatus.SUCCESS));
+ statusIcons.put(ConfigurationUpdateStatus.INPROGRESS.name(), ImageManager
+ .getResourceConfigurationIcon(ConfigurationUpdateStatus.INPROGRESS));
+ statusIcons.put(ConfigurationUpdateStatus.NOCHANGE.name(), ImageManager
+ .getResourceConfigurationIcon(ConfigurationUpdateStatus.NOCHANGE));
+ statusIcons.put(ConfigurationUpdateStatus.FAILURE.name(), ImageManager
+ .getResourceConfigurationIcon(ConfigurationUpdateStatus.FAILURE));
+ priorityFilter.setValueMap(stati);
+ priorityFilter.setValueIcons(statusIcons);
+ //reload current settings if they exist, otherwise enable all.
+ String currentValue =
portletConfig.getSimple(Constant.CONFIG_UPDATE_STATUS).getStringValue();
+ if (currentValue.isEmpty() || currentValue.split(",").length ==
ConfigurationUpdateStatus.values().length) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.INPROGRESS
+ .name(), ConfigurationUpdateStatus.NOCHANGE.name(),
ConfigurationUpdateStatus.FAILURE.name());
+ } else {
+ //spinder:3/4/11 doing this nonsense due to some weird smartgwt issue with
SelectItem in VLayout.
+ if (currentValue.equalsIgnoreCase(ConfigurationUpdateStatus.SUCCESS.name()))
{
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name());
+ } else if
(currentValue.equalsIgnoreCase("SUCCESS,INPROGRESS,NOCHANGE,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.INPROGRESS
+ .name(), ConfigurationUpdateStatus.NOCHANGE.name(),
ConfigurationUpdateStatus.FAILURE.name());
+ } else if
(currentValue.equalsIgnoreCase("SUCCESS,INPROGRESS,NOCHANGE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.INPROGRESS
+ .name(), ConfigurationUpdateStatus.NOCHANGE.name());
+ } else if
(currentValue.equalsIgnoreCase("SUCCESS,INPROGRESS,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.INPROGRESS
+ .name(), ConfigurationUpdateStatus.FAILURE.name());
+ } else if (currentValue.equalsIgnoreCase("SUCCESS,INPROGRESS")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.INPROGRESS
+ .name());
+ } else if
(currentValue.equalsIgnoreCase("SUCCESS,NOCHANGE,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.NOCHANGE
+ .name(), ConfigurationUpdateStatus.FAILURE.name());
+ } else if (currentValue.equalsIgnoreCase("SUCCESS,NOCHANGE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.NOCHANGE
+ .name());
+ } else if (currentValue.equalsIgnoreCase("SUCCESS,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.SUCCESS.name(),
ConfigurationUpdateStatus.FAILURE
+ .name());
+ } else if (currentValue.equalsIgnoreCase("INPROGRESS")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.INPROGRESS.name());
+ } else if
(currentValue.equalsIgnoreCase("INPROGRESS,NOCHANGE,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.INPROGRESS.name(),
+ ConfigurationUpdateStatus.NOCHANGE.name(),
ConfigurationUpdateStatus.FAILURE.name());
+ } else if (currentValue.equalsIgnoreCase("INPROGRESS,NOCHANGE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.INPROGRESS.name(),
+ ConfigurationUpdateStatus.NOCHANGE.name());
+ } else if (currentValue.equalsIgnoreCase("INPROGRESS,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.INPROGRESS.name(),
ConfigurationUpdateStatus.FAILURE
+ .name());
+ } else if (currentValue.equalsIgnoreCase("NOCHANGE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.NOCHANGE.name());
+ } else if (currentValue.equalsIgnoreCase("NOCHANGE,FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.NOCHANGE.name(),
ConfigurationUpdateStatus.FAILURE
+ .name());
+ } else if (currentValue.equalsIgnoreCase("FAILURE")) {
+ priorityFilter.setValues(ConfigurationUpdateStatus.FAILURE.name());
+ }
+ }
+ return priorityFilter;
+ }
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
new file mode 100644
index 0000000..083c43b
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupConfigurationUpdatesPortlet.java
@@ -0,0 +1,548 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 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.enterprise.gui.coregui.client.dashboard.portlets.groups;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.HTMLFlow;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.events.SubmitValuesEvent;
+import com.smartgwt.client.widgets.form.events.SubmitValuesHandler;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
+import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
+import org.rhq.core.domain.criteria.ResourceGroupCriteria;
+import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.core.domain.resource.group.ResourceGroup;
+import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+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.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
+import
org.rhq.enterprise.gui.coregui.client.components.measurement.CustomConfigMeasurementRangeEditor;
+import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory;
+import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.PortletConfigurationEditorComponent;
+import
org.rhq.enterprise.gui.coregui.client.dashboard.portlets.PortletConfigurationEditorComponent.Constant;
+import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
+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.inventory.groups.detail.ResourceGroupDetailView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.configuration.GroupResourceConfigurationDataSource;
+import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.configuration.HistoryGroupResourceConfigurationTable;
+import org.rhq.enterprise.gui.coregui.client.util.MeasurementUtility;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableCanvas;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+/**
+ * @author Simeon Pinder
+ */
+public class GroupConfigurationUpdatesPortlet extends LocatableVLayout implements
CustomSettingsPortlet,
+ AutoRefreshPortlet {
+
+ // A non-displayed, persisted identifier for the portlet
+ public static final String KEY = "GroupConfigurationUpdates";
+ // A default displayed, persisted name for the portlet
+ public static final String NAME =
MSG.view_portlet_defaultName_group_config_updates();
+
+ private int groupId = -1;
+ protected LocatableCanvas recentConfigurationContent = new LocatableCanvas(
+ extendLocatorId("RecentConfigurationUpdates"));
+
+ public static final String ID = "id";
+
+ //defines the list of configuration elements to load/persist for this portlet
+ protected static List<String> CONFIG_INCLUDE = new ArrayList<String>();
+ static {
+ CONFIG_INCLUDE.add(Constant.METRIC_RANGE);
+ CONFIG_INCLUDE.add(Constant.METRIC_RANGE_BEGIN_END_FLAG);
+ CONFIG_INCLUDE.add(Constant.METRIC_RANGE_ENABLE);
+ CONFIG_INCLUDE.add(Constant.METRIC_RANGE_LASTN);
+ CONFIG_INCLUDE.add(Constant.METRIC_RANGE_UNIT);
+ CONFIG_INCLUDE.add(Constant.RESULT_COUNT);
+ CONFIG_INCLUDE.add(Constant.CONFIG_UPDATE_STATUS);
+ // CONFIG_INCLUDE.add(Constant.RESULT_SORT_ORDER);
+ }
+
+ // set on initial configuration, the window for this portlet view.
+ protected PortletWindow portletWindow;
+
+ //instance ui widgets
+ protected Canvas containerCanvas;
+
+ protected Timer refreshTimer;
+ protected DashboardPortlet storedPortlet;
+ protected Configuration portletConfig;
+ private ResourceGroupComposite groupComposite;
+ protected boolean portletConfigInitialized = false;
+ protected boolean currentlyLoading = false;
+ protected String baseViewPath = "";
+ private HistoryGroupResourceConfigurationTable groupHistoryTable;
+
+ protected static HashMap<String, String> updatedMapping = new
HashMap<String, String>();
+ static {
+
updatedMapping.putAll(PortletConfigurationEditorComponent.CONFIG_PROPERTY_INITIALIZATION);
+ }
+
+ public GroupConfigurationUpdatesPortlet(String locatorId, int groupId) {
+ super(locatorId);
+ //figure out which page we're loading
+ String currentPage = History.getToken();
+ String[] elements = currentPage.split("/");
+ int currentGroupId = AbstractActivityView.groupIdLookup(currentPage);
+ this.groupId = currentGroupId;
+ baseViewPath = elements[0];
+ }
+
+ /**Defines layout for the portlet page.
+ */
+ protected void initializeUi() {
+ setHeight("*");
+ setWidth100();
+
+ //tell canvas to fill it's component
+ recentConfigurationContent.setHeight100();
+ addMember(recentConfigurationContent);
+ markForRedraw();
+ }
+
+ /** Responsible for initialization and lazy configuration of the portlet values
+ */
+ public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
+ //populate portlet configuration details
+ if (null == this.portletWindow && null != portletWindow) {
+ this.portletWindow = portletWindow;
+ }
+
+ if ((null == storedPortlet) || (null == storedPortlet.getConfiguration())) {
+ return;
+ }
+ this.storedPortlet = storedPortlet;
+ portletConfig = storedPortlet.getConfiguration();
+
+ //lazy init any elements not yet configured.
+ for (String key :
PortletConfigurationEditorComponent.CONFIG_PROPERTY_INITIALIZATION.keySet()) {
+ if ((portletConfig.getSimple(key) == null) &&
CONFIG_INCLUDE.contains(key)) {
+ portletConfig.put(new PropertySimple(key,
+
PortletConfigurationEditorComponent.CONFIG_PROPERTY_INITIALIZATION.get(key)));
+ }
+ }
+ }
+
+ public Canvas getHelpCanvas() {
+ return new HTMLFlow(MSG.view_portlet_help_config_updates());
+ }
+
+ @Override
+ public DynamicForm getCustomSettingsForm() {
+ LocatableDynamicForm customSettings = new
LocatableDynamicForm(extendLocatorId("customSettings"));
+ LocatableVLayout page = new
LocatableVLayout(customSettings.extendLocatorId("page"));
+ //build editor form container
+ final LocatableDynamicForm form = new
LocatableDynamicForm(page.extendLocatorId("alert-filter"));
+ form.setMargin(5);
+
+ //add sort priority selector
+ // final SelectItem resultSortSelector =
PortletConfigurationEditorComponent
+ // .getResulSortOrderEditor(portletConfig);
+ //add result status selector
+ final SelectItem resultStatusSelector = PortletConfigurationEditorComponent
+ .getConfigurationUpdateStatusEditor(portletConfig);
+
+ //add result count selector
+ final SelectItem resultCountSelector =
PortletConfigurationEditorComponent.getResultCountEditor(portletConfig);
+
+ //add range selector
+ final CustomConfigMeasurementRangeEditor measurementRangeEditor =
PortletConfigurationEditorComponent
+ .getMeasurementRangeEditor(portletConfig);
+
+ // form.setItems(alertPrioritySelector, resultCountSelector);
+ form.setItems(resultStatusSelector, resultCountSelector);
+
+ //submit handler
+ customSettings.addSubmitValuesHandler(new SubmitValuesHandler() {
+
+ @Override
+ public void onSubmitValues(SubmitValuesEvent event) {
+ String selectedValue;
+
+ // //result sort order
+ // selectedValue =
resultSortSelector.getValue().toString();
+ // if ((selectedValue.trim().isEmpty()) ||
(selectedValue.equalsIgnoreCase(PageOrdering.DESC.name()))) {//then desc
+ // portletConfig.put(new
PropertySimple(Constant.RESULT_SORT_ORDER, PageOrdering.DESC));
+ // } else {
+ // portletConfig.put(new
PropertySimple(Constant.RESULT_SORT_ORDER, PageOrdering.ASC));
+ // }
+ //config status
+ portletConfig =
AbstractActivityView.saveConfigUpdateStatusSelectorSettings(resultStatusSelector,
+ portletConfig);
+
+ //result count
+ portletConfig =
AbstractActivityView.saveResultCounterSettings(resultCountSelector, portletConfig);
+
+ //time range settings
+ portletConfig =
AbstractActivityView.saveMeasurementRangeEditorSettings(measurementRangeEditor,
+ portletConfig);
+
+ //persist and reload portlet
+ storedPortlet.setConfiguration(portletConfig);
+ configure(portletWindow, storedPortlet);
+ // refresh();
+ redraw();
+ }
+ });
+ form.markForRedraw();
+ page.addMember(measurementRangeEditor);
+ page.addMember(form);
+ customSettings.addChild(page);
+ return customSettings;
+ }
+
+ public static final class Factory implements PortletViewFactory {
+ public static PortletViewFactory INSTANCE = new Factory();
+
+ /* (non-Javadoc)
+ * TODO: This factory ASSUMES the user is currently navigated to a group detail
view, and generates a portlet
+ * for that group. It will fail in other scenarios. This mechanism
should be improved such that the
+ * factory method can take an EntityContext explicitly indicating, in this
case, the group.
+ * @see
org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory#getInstance(java.lang.String)
+ */
+ public final Portlet getInstance(String locatorId) {
+
+ String currentPage = History.getToken();
+ int groupId = -1;
+ String[] elements = currentPage.split("/");
+ // process for groups and auto groups Ex. ResourceGroup/10111 or
ResourceGroup/AutoCluster/10321
+ try {
+ groupId = Integer.valueOf(elements[1]);
+ } catch (NumberFormatException nfe) {
+ groupId = Integer.valueOf(elements[2]);
+ }
+
+ return new GroupConfigurationUpdatesPortlet(locatorId, groupId);
+ }
+ }
+
+ @Override
+ public void startRefreshCycle() {
+ //current setting
+ final int refreshInterval =
UserSessionManager.getUserPreferences().getPageRefreshInterval();
+
+ //cancel any existing timer
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
+ }
+
+ if (refreshInterval >= MeasurementUtility.MINUTES) {
+
+ refreshTimer = new Timer() {
+ public void run() {
+ redraw();
+ }
+ };
+
+ refreshTimer.scheduleRepeating(refreshInterval);
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ if (refreshTimer != null) {
+ refreshTimer.cancel();
+ }
+
+ super.onDestroy();
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+ //disable the refresh timer for this run
+ currentlyLoading = true;
+ initializeUi();
+ loadData();
+ }
+
+ // @Override
+ // protected void refreshTableInfo() {
+ // super.refreshTableInfo();
+ // if (getTableInfo() != null) {
+ // int count = getListGrid().getSelection().length;
+ // getTableInfo().setContents(
+ //
MSG.view_table_matchingRows(String.valueOf(getListGrid().getTotalRows()),
String.valueOf(count)));
+ // }
+ // }
+
+ @Override
+ public boolean isRefreshing() {
+ return this.currentlyLoading;
+ }
+
+ protected void setRefreshing(boolean currentlyRefreshing) {
+ this.currentlyLoading = currentlyRefreshing;
+ }
+
+ @Override
+ public void redraw() {
+ super.redraw();
+ loadData();
+ }
+
+ private void loadData() {
+ //populate composite data
+ //locate resourceGroupRef
+ ResourceGroupCriteria criteria = new ResourceGroupCriteria();
+ criteria.addFilterId(this.groupId);
+ criteria.fetchConfigurationUpdates(false);
+ criteria.fetchExplicitResources(false);
+ criteria.fetchGroupDefinition(false);
+ criteria.fetchOperationHistories(false);
+
+ // for autoclusters and autogroups we need to add more criteria
+ final boolean isAutoCluster = isAutoCluster();
+ final boolean isAutoGroup = isAutoGroup();
+ if (isAutoCluster) {
+ criteria.addFilterVisible(false);
+ } else if (isAutoGroup) {
+ criteria.addFilterVisible(false);
+ criteria.addFilterPrivate(true);
+ }
+
+ //locate the resource group
+
GWTServiceLookup.getResourceGroupService().findResourceGroupCompositesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceGroupComposite>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving resource group composite for group
[" + groupId + "]:"
+ + caught.getMessage());
+ currentlyLoading = false;
+ }
+
+ @Override
+ public void onSuccess(PageList<ResourceGroupComposite> results) {
+ if (!results.isEmpty()) {
+ groupComposite = results.get(0);
+ //instantiate view
+
+ PageControl lastFive = new PageControl(0, 5);
+ GroupResourceConfigurationUpdateCriteria criteria = new
GroupResourceConfigurationUpdateCriteria();
+ criteria.setPageControl(lastFive);
+ //TODO: spinder: move this up into the pageControl.
+ criteria.addSortStatus(PageOrdering.DESC);
+ List<Integer> filterResourceGroupIds = new
ArrayList<Integer>();
+ filterResourceGroupIds.add(groupId);
+ criteria.addFilterResourceGroupIds(filterResourceGroupIds);
+
+ groupHistoryTable = new
HistoryGroupResourceConfigurationTable(extendLocatorId("Table"),
+ groupComposite);
+ // groupHistoryTable.setDataSource(new
GroupConfigurationUdpatesCriteriaDataSource(portletConfig,
+ // groupId));
+ //
groupHistoryTable.setShowHeader(false);
+ //
groupHistoryTable.setShowFooterRefresh(false);
+ } else {
+ //TODO: spinder fix for empties
+ // Criteria criteria = new Criteria();
+ ResourceGroup emptyGroup = new ResourceGroup("");
+ emptyGroup.setId(-1);
+ Long zero = new Long(0);
+ groupComposite = new ResourceGroupComposite(zero, zero, zero,
zero, emptyGroup);
+ // groupOperations = new
GroupOperationsCriteriaHistoryListView(locatorId,
+ // new
GroupOperationsCriteriaDataSource(portletConfig), null, criteria, groupComposite);
+ groupHistoryTable = new
HistoryGroupResourceConfigurationTable(extendLocatorId("Table"),
+ groupComposite);
+ // groupHistoryTable.setDataSource(new
GroupConfigurationUdpatesCriteriaDataSource(portletConfig,
+ // groupId));
+ //
groupHistoryTable.setShowHeader(false);
+ //
groupHistoryTable.setShowFooterRefresh(false);
+ }
+
+ groupHistoryTable.setDataSource(new
GroupConfigurationUdpatesCriteriaDataSource(portletConfig,
+ groupId));
+ groupHistoryTable.setShowHeader(false);
+ groupHistoryTable.setShowFooterRefresh(false);
+
+ //cleanup
+ for (Canvas child : recentConfigurationContent.getChildren()) {
+ child.destroy();
+ }
+ recentConfigurationContent.addChild(groupHistoryTable);
+ recentConfigurationContent.markForRedraw();
+ currentlyLoading = false;
+ }
+ });
+ }
+
+ private boolean isAutoGroup() {
+ return ResourceGroupDetailView.AUTO_GROUP_VIEW_PATH.equals(getBaseViewPath());
+ }
+
+ private boolean isAutoCluster() {
+ return ResourceGroupDetailView.AUTO_CLUSTER_VIEW_PATH.equals(getBaseViewPath());
+ }
+
+ public String getBaseViewPath() {
+ return baseViewPath;
+ }
+
+ class GroupConfigurationUdpatesCriteriaDataSource extends
GroupResourceConfigurationDataSource {
+
+ public GroupConfigurationUdpatesCriteriaDataSource(Configuration portletConfig,
int groupId) {
+ super(groupId);
+ this.portletConfig = portletConfig;
+ this.groupId = groupId;
+ }
+
+ private int groupId;
+ private Configuration portletConfig;
+
+ @Override
+ protected void executeFetch(final DSRequest request, final DSResponse response,
+ final GroupResourceConfigurationUpdateCriteria criteria) {
+ ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
+
+
configurationService.findGroupResourceConfigurationUpdatesByCriteria(criteria,
+ new
AsyncCallback<PageList<GroupResourceConfigurationUpdate>>() {
+
+ @Override
+ public void
onSuccess(PageList<GroupResourceConfigurationUpdate> result) {
+ response.setData(buildRecords(result));
+ //adjust for portlets that restrict result size
+ response.setTotalRows(result.size());
+ processResponse(request.getRequestId(), response);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_group_resConfig_table_failFetch(),
caught);
+ response.setStatus(DSResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+
+ @Override
+ protected GroupResourceConfigurationUpdateCriteria getFetchCriteria(final
DSRequest request) {
+ //initialize criteria
+ GroupResourceConfigurationUpdateCriteria criteria = new
GroupResourceConfigurationUpdateCriteria();
+
+ criteria.addFilterResourceGroupIds(Arrays.asList(groupId));
+
+ //initialize to only five for quick queries.
+ PageControl pageControl = new PageControl(0, 5);//default to displaying five
+ //customize query with latest configuration selections
+
+ //retrieve previous settings from portlet config
+ if (portletConfig != null) {
+ // //result sort order
+ // PropertySimple property =
portletConfig.getSimple(Constant.RESULT_SORT_ORDER);
+ // if (property != null) {
+ // String currentSetting = property.getStringValue();
+ // if (currentSetting.trim().isEmpty() ||
currentSetting.equalsIgnoreCase(PageOrdering.DESC.name())) {
+ // criteria.addSortStatus(PageOrdering.DESC);
+ // } else {
+ // criteria.addSortStatus(PageOrdering.ASC);
+ // }
+ // }
+ //result timeframe if enabled
+ PropertySimple property =
portletConfig.getSimple(Constant.METRIC_RANGE_ENABLE);
+ if (Boolean.valueOf(property.getBooleanValue())) {//then proceed setting
+
+ boolean isAdvanced = false;
+ //detect type of widget[Simple|Advanced]
+ property =
portletConfig.getSimple(Constant.METRIC_RANGE_BEGIN_END_FLAG);
+ if (property != null) {
+ isAdvanced = property.getBooleanValue();
+ }
+ if (isAdvanced) {
+ //Advanced time settings
+ property = portletConfig.getSimple(Constant.METRIC_RANGE);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ String[] range = currentSetting.split(",");
+ criteria.addFilterStartTime(Long.valueOf(range[0]));
+ criteria.addFilterEndTime(Long.valueOf(range[1]));
+ }
+ } else {
+ //Simple time settings
+ property = portletConfig.getSimple(Constant.METRIC_RANGE_LASTN);
+ if (property != null) {
+ int lastN = property.getIntegerValue();
+ property =
portletConfig.getSimple(Constant.METRIC_RANGE_UNIT);
+ int lastUnits = property.getIntegerValue();
+ ArrayList<Long> beginEnd =
MeasurementUtility.calculateTimeFrame(lastN, Integer
+ .valueOf(lastUnits));
+ criteria.addFilterStartTime(Long.valueOf(beginEnd.get(0)));
+ criteria.addFilterEndTime(Long.valueOf(beginEnd.get(1)));
+ }
+ }
+ }
+
+ //result count
+ property = portletConfig.getSimple(Constant.RESULT_COUNT);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ if (currentSetting.trim().isEmpty() ||
currentSetting.equalsIgnoreCase("5")) {
+ pageControl.setPageSize(5);
+ } else {
+ pageControl = new PageControl(0,
Integer.valueOf(currentSetting));
+ }
+ }
+ criteria.setPageControl(pageControl);
+
+ //detect operation status filter
+ property = portletConfig.getSimple(Constant.CONFIG_UPDATE_STATUS);
+ if (property != null) {
+ String currentSetting = property.getStringValue();
+ String[] parsedValues = currentSetting.trim().split(",");
+ if (currentSetting.trim().isEmpty()
+ || parsedValues.length ==
ConfigurationUpdateStatus.values().length) {
+ //all operation stati assumed
+ } else {
+ ConfigurationUpdateStatus[] updateStatus = new
ConfigurationUpdateStatus[parsedValues.length];
+ int indx = 0;
+ for (String priority : parsedValues) {
+ ConfigurationUpdateStatus s =
ConfigurationUpdateStatus.valueOf(priority);
+ updateStatus[indx++] = s;
+ }
+ criteria.addFilterStatuses(updateStatus);
+ }
+ }
+ }
+ return criteria;
+ }
+ }
+}
\ No newline at end of file
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 5fec813..0ee3647 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
@@ -41,6 +41,7 @@ import com.smartgwt.client.widgets.toolbar.ToolStrip;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.measurement.MeasurementDefinition;
@@ -507,6 +508,25 @@ public abstract class AbstractActivityView extends LocatableVLayout
implements R
/** Takes the current value of the widget and persists it into the configuration
object passed in.
*
+ * @param configUpdateStatusSelector
+ * @param portletConfig
+ * returns populated configuration object.
+ */
+ public static Configuration saveConfigUpdateStatusSelectorSettings(final SelectItem
configStatusSelector,
+ final Configuration portletConfig) {
+ String selectedValue;
+ selectedValue = configStatusSelector.getValue().toString();
+ if ((selectedValue.trim().isEmpty())
+ || (selectedValue.split(",").length ==
ConfigurationUpdateStatus.values().length)) {//then no operation status specified
+ portletConfig.put(new PropertySimple(Constant.CONFIG_UPDATE_STATUS,
Constant.CONFIG_UPDATE_STATUS_DEFAULT));
+ } else {//some subset of available configUpdate statuses will be used
+ portletConfig.put(new PropertySimple(Constant.CONFIG_UPDATE_STATUS,
selectedValue));
+ }
+ return portletConfig;
+ }
+
+ /** Takes the current value of the widget and persists it into the configuration
object passed in.
+ *
* @param measurementRangeEditor
* @param portletConfig
* returns populated configuration object.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/GroupResourceConfigurationDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/GroupResourceConfigurationDataSource.java
new file mode 100644
index 0000000..770753a
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/GroupResourceConfigurationDataSource.java
@@ -0,0 +1,97 @@
+package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.configuration;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.Record;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
+import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
+
+/**
+ * DataSource implementation for HistoryGroupResourceConfigurationTable.
+ *
+ * @author John Mazzitelli
+ * @author Simeon Pinder
+ */
+public class GroupResourceConfigurationDataSource extends
+ RPCDataSource<GroupResourceConfigurationUpdate,
GroupResourceConfigurationUpdateCriteria> {
+
+ private int groupId;
+
+ public class Field {
+ public static final String ID = "id";
+ public static final String DATECREATED = "dateCreated";
+ public static final String LASTUPDATED = "lastUpdated";
+ public static final String STATUS = "status";
+ public static final String USER = "user";
+ public static final String OBJECT = "object";
+ }
+
+ public GroupResourceConfigurationDataSource(int groupId) {
+ super();
+ this.groupId = groupId;
+ }
+
+ @Override
+ public GroupResourceConfigurationUpdate copyValues(Record from) {
+ return (GroupResourceConfigurationUpdate)
from.getAttributeAsObject(Field.OBJECT);
+ }
+
+ @Override
+ public ListGridRecord copyValues(GroupResourceConfigurationUpdate from) {
+ ListGridRecord record = new ListGridRecord();
+
+ record.setAttribute(Field.ID, from.getId());
+ record.setAttribute(Field.DATECREATED, new Date(from.getCreatedTime()));
+ record.setAttribute(Field.LASTUPDATED, new Date(from.getModifiedTime()));
+ record.setAttribute(Field.STATUS, from.getStatus().name());
+ record.setAttribute(Field.USER, from.getSubjectName());
+
+ record.setAttribute(Field.OBJECT, from);
+
+ return record;
+ }
+
+ @Override
+ protected void executeFetch(final DSRequest request, final DSResponse response,
+ final GroupResourceConfigurationUpdateCriteria criteria) {
+ ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
+
+ configurationService.findGroupResourceConfigurationUpdatesByCriteria(criteria,
+ new AsyncCallback<PageList<GroupResourceConfigurationUpdate>>()
{
+
+ @Override
+ public void onSuccess(PageList<GroupResourceConfigurationUpdate>
result) {
+ response.setData(buildRecords(result));
+ response.setTotalRows(result.getTotalSize());
+ processResponse(request.getRequestId(), response);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+
CoreGUI.getErrorHandler().handleError(MSG.view_group_resConfig_table_failFetch(),
caught);
+ response.setStatus(DSResponse.STATUS_FAILURE);
+ processResponse(request.getRequestId(), response);
+ }
+ });
+ }
+
+ @Override
+ protected GroupResourceConfigurationUpdateCriteria getFetchCriteria(final DSRequest
request) {
+ GroupResourceConfigurationUpdateCriteria criteria = new
GroupResourceConfigurationUpdateCriteria();
+ ArrayList<Integer> groupList = new ArrayList<Integer>(1);
+ groupList.add(this.groupId);
+ criteria.addFilterResourceGroupIds(groupList);
+ return criteria;
+ }
+}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationTable.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationTable.java
index 35be43c..ae52f4d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationTable.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/configuration/HistoryGroupResourceConfigurationTable.java
@@ -18,14 +18,10 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.configuration;
-import java.util.ArrayList;
-import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.data.DSRequest;
-import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.widgets.grid.HoverCustomizer;
@@ -37,12 +33,9 @@ import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
import org.rhq.core.domain.configuration.AbstractConfigurationUpdate;
import org.rhq.core.domain.configuration.ConfigurationUpdateStatus;
-import org.rhq.core.domain.configuration.group.GroupResourceConfigurationUpdate;
-import org.rhq.core.domain.criteria.GroupResourceConfigurationUpdateCriteria;
import org.rhq.core.domain.resource.composite.ResourcePermission;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
-import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ErrorMessageWindow;
import org.rhq.enterprise.gui.coregui.client.ImageManager;
@@ -53,7 +46,6 @@ import
org.rhq.enterprise.gui.coregui.client.components.table.TableActionEnablem
import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
import org.rhq.enterprise.gui.coregui.client.gwt.ConfigurationGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
-import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
@@ -61,7 +53,7 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message;
*
* @author John Mazzitelli
*/
-public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupResourceConfigurationTable.DataSource> {
+public class HistoryGroupResourceConfigurationTable extends
Table<GroupResourceConfigurationDataSource> {
private final ResourceGroup group;
private final ResourcePermission groupPerms;
@@ -70,16 +62,21 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
this.group = groupComposite.getResourceGroup();
this.groupPerms = groupComposite.getResourcePermission();
- setDataSource(new DataSource());
+ setDataSource(new GroupResourceConfigurationDataSource(this.group.getId()));
}
@Override
protected void configureTable() {
- ListGridField fieldId = new ListGridField(DataSource.Field.ID,
MSG.common_title_version());
- ListGridField fieldDateCreated = new ListGridField(DataSource.Field.DATECREATED,
MSG.common_title_dateCreated());
- ListGridField fieldLastUpdated = new ListGridField(DataSource.Field.LASTUPDATED,
MSG.common_title_lastUpdated());
- ListGridField fieldStatus = new ListGridField(DataSource.Field.STATUS,
MSG.common_title_status());
- ListGridField fieldUser = new ListGridField(DataSource.Field.USER,
MSG.common_title_user());
+ ListGridField fieldId = new
ListGridField(GroupResourceConfigurationDataSource.Field.ID, MSG
+ .common_title_version());
+ ListGridField fieldDateCreated = new
ListGridField(GroupResourceConfigurationDataSource.Field.DATECREATED, MSG
+ .common_title_dateCreated());
+ ListGridField fieldLastUpdated = new
ListGridField(GroupResourceConfigurationDataSource.Field.LASTUPDATED, MSG
+ .common_title_lastUpdated());
+ ListGridField fieldStatus = new
ListGridField(GroupResourceConfigurationDataSource.Field.STATUS, MSG
+ .common_title_status());
+ ListGridField fieldUser = new
ListGridField(GroupResourceConfigurationDataSource.Field.USER, MSG
+ .common_title_user());
TimestampCellFormatter.prepareDateField(fieldDateCreated);
TimestampCellFormatter.prepareDateField(fieldLastUpdated);
@@ -135,7 +132,7 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
Integer[] updateIds = new Integer[selection.length];
int i = 0;
for (ListGridRecord record : selection) {
- updateIds[i++] = record.getAttributeAsInt(DataSource.Field.ID);
+ updateIds[i++] =
record.getAttributeAsInt(GroupResourceConfigurationDataSource.Field.ID);
}
service.deleteGroupResourceConfigurationUpdate(groupId, updateIds,
new AsyncCallback<Void>() {
@@ -163,7 +160,7 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
public void executeAction(ListGridRecord[] selection, Object actionValue)
{
CoreGUI.goToView(LinkManager.getGroupResourceConfigurationUpdateHistoryLink(
HistoryGroupResourceConfigurationTable.this.group.getId(), null)
- + "/" + selection[0].getAttribute(DataSource.Field.ID)
+ "/Settings");
+ + "/" +
selection[0].getAttribute(GroupResourceConfigurationDataSource.Field.ID) +
"/Settings");
}
});
@@ -173,7 +170,7 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
public void executeAction(ListGridRecord[] selection, Object actionValue)
{
CoreGUI.goToView(LinkManager.getGroupResourceConfigurationUpdateHistoryLink(
HistoryGroupResourceConfigurationTable.this.group.getId(), null)
- + "/" + selection[0].getAttribute(DataSource.Field.ID)
+ "/Members");
+ + "/" +
selection[0].getAttribute(GroupResourceConfigurationDataSource.Field.ID) +
"/Members");
}
});
@@ -182,7 +179,7 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
private String getStatusHtmlString(Record record) {
String html = null;
AbstractConfigurationUpdate obj = (AbstractConfigurationUpdate) record
- .getAttributeAsObject(DataSource.Field.OBJECT);
+ .getAttributeAsObject(GroupResourceConfigurationDataSource.Field.OBJECT);
switch (obj.getStatus()) {
case SUCCESS: {
html = MSG.view_group_resConfig_table_statusSuccess();
@@ -217,69 +214,4 @@ public class HistoryGroupResourceConfigurationTable extends
Table<HistoryGroupRe
}
return html;
}
-
- class DataSource extends RPCDataSource<GroupResourceConfigurationUpdate,
GroupResourceConfigurationUpdateCriteria> {
-
- public class Field {
- public static final String ID = "id";
- public static final String DATECREATED = "dateCreated";
- public static final String LASTUPDATED = "lastUpdated";
- public static final String STATUS = "status";
- public static final String USER = "user";
- public static final String OBJECT = "object";
- }
-
- @Override
- public GroupResourceConfigurationUpdate copyValues(Record from) {
- return (GroupResourceConfigurationUpdate)
from.getAttributeAsObject(DataSource.Field.OBJECT);
- }
-
- @Override
- public ListGridRecord copyValues(GroupResourceConfigurationUpdate from) {
- ListGridRecord record = new ListGridRecord();
-
- record.setAttribute(Field.ID, from.getId());
- record.setAttribute(Field.DATECREATED, new Date(from.getCreatedTime()));
- record.setAttribute(Field.LASTUPDATED, new Date(from.getModifiedTime()));
- record.setAttribute(Field.STATUS, from.getStatus().name());
- record.setAttribute(Field.USER, from.getSubjectName());
-
- record.setAttribute(Field.OBJECT, from);
-
- return record;
- }
-
- @Override
- protected void executeFetch(final DSRequest request, final DSResponse response,
- final GroupResourceConfigurationUpdateCriteria criteria) {
- ConfigurationGWTServiceAsync configurationService =
GWTServiceLookup.getConfigurationService();
-
-
configurationService.findGroupResourceConfigurationUpdatesByCriteria(criteria,
- new
AsyncCallback<PageList<GroupResourceConfigurationUpdate>>() {
-
- @Override
- public void
onSuccess(PageList<GroupResourceConfigurationUpdate> result) {
- response.setData(buildRecords(result));
- response.setTotalRows(result.getTotalSize());
- processResponse(request.getRequestId(), response);
- }
-
- @Override
- public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_group_resConfig_table_failFetch(),
caught);
- response.setStatus(DSResponse.STATUS_FAILURE);
- processResponse(request.getRequestId(), response);
- }
- });
- }
-
- @Override
- protected GroupResourceConfigurationUpdateCriteria getFetchCriteria(final
DSRequest request) {
- GroupResourceConfigurationUpdateCriteria criteria = new
GroupResourceConfigurationUpdateCriteria();
- ArrayList<Integer> groupList = new ArrayList<Integer>(1);
- groupList.add(HistoryGroupResourceConfigurationTable.this.group.getId());
- criteria.addFilterResourceGroupIds(groupList);
- return criteria;
- }
- }
}
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 fd78426..0e5dadc 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
@@ -109,6 +109,7 @@ common_title_configuration = Configuration
common_title_compatibleGroups = Compatible Groups
common_title_compatibleGroups_total = Compatible Group Total
common_title_component_errors = Component Errors
+common_title_config_update_status = Update Status
common_title_count = Count
common_title_custom = Custom
common_title_dashboard_name = Dashboard Name
@@ -146,6 +147,7 @@ common_title_mixedGroups_total = Mixed Group Total
common_title_name = Name
common_title_new_dashboard = New Dashboard
common_title_numeric_type = Numeric Type
+common_title_operation_status = Operation Status
common_title_operations = Operations
common_title_operations_range = Operation Range
common_title_over = Over
@@ -177,6 +179,8 @@ common_title_resource_inventory = Resource Inventory
common_title_resource_id = Resource ID
common_title_resource_name = Resource Name
common_title_resource_type = Resource Type
+common_title_results_count = Results Count
+common_title_results_count_tooltip = Displays this number of results
common_title_role = Role
common_title_roles = Roles
common_title_search = Search
@@ -189,6 +193,8 @@ common_title_service_total = Service Total
common_title_settings = Settings
common_title_show = Show
common_title_show_more = Show more...
+common_title_sort_order = Sort Order
+common_title_sort_order_tooltip = Sets sort order for results.
common_title_start = Start
common_title_status = Status
common_title_stop= Stop
@@ -230,12 +236,14 @@ common_val_na = N/A
common_val_none = None
# Common Statuses
-common_status_success = Success
+common_status_canceled = Canceled
+common_status_deferred = Deferred
common_status_failed = Failed
common_status_inprogress = In Progress
-common_status_canceled = Canceled
+common_status_nochange = No Change
+common_status_success = Success
common_status_unknown = Unknown
-common_status_deferred = Deferred
+
common_status_partial = Partial
# 1st, 2nd, 3rd, 4th, etc.
@@ -1468,6 +1476,7 @@ view_portlet_defaultName_tagCloud = Tag Count
view_portlet_defaultName_group_alerts =Group: Alerts
view_portlet_defaultName_group_bundles = Group: Bundle Deployments
+view_portlet_defaultName_group_config_updates = Group: Configuration Updates
view_portlet_defaultName_group_events = Group: Event Counts
view_portlet_defaultName_group_metrics = Group: Metrics
view_portlet_defaultName_group_oobs = Group: OOB Conditions
@@ -1475,6 +1484,7 @@ view_portlet_defaultName_group_operations = Group: Operations
view_portlet_defaultName_group_pkg_hisory = Group: Package History
view_portlet_defaultName_resource_alerts = Resource: Alerts
view_portlet_defaultName_resource_bundles = Resource: Bundle Deployments
+view_portlet_defaultName_resource_config_updates = Resource: Configuration Updates
view_portlet_defaultName_resource_events = Resource: Event Counts
view_portlet_defaultName_resource_metrics = Resource: Measurements
view_portlet_defaultName_resource_oobs = Resource: OOB Metrics
@@ -1483,6 +1493,7 @@ view_portlet_defaultName_resource_pkg_hisory = Resource: Package
History
view_portlet_help_autodiscovery = This portlet allows import or ignore of newly
discovered resources. Imported resources are added to inventory for monitoring and
management. Ignored resources are not imported and are hidden from view unless explicitly
unignored.
view_portlet_help_bundle_deps = This portlet shows relevant bundle deployments based on
display criteria configured.
+view_portlet_help_config_updates =This portlet displays recent configuration changes
consistent with configuration settings.
view_portlet_help_eventcounts = This portlet displays Event counts consistent with
display criteria configured.
view_portlet_help_favoriteResources = This portlet displays the current user''s
favorite resources.
view_portlet_help_graph = This portlet displays the resource metric graph.
commit 12cdec5fb2943458bc5b4bcfd4ab6f2c9c3718c3
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Mar 31 11:40:18 2011 -0400
remove redundant header for recentAlerts, trim space around operations portlet
widget.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOperationsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOperationsPortlet.java
index 9a9a124..2ef5bd8 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOperationsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOperationsPortlet.java
@@ -198,8 +198,6 @@ public class GroupOperationsPortlet extends LocatableVLayout
implements CustomSe
/**Defines layout for the portlet page.
*/
protected void initializeUi() {
- setPadding(5);
- setMembersMargin(5);
setHeight("*");
setWidth100();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
index 763ed79..93fd686 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
@@ -67,6 +67,7 @@ public abstract class AbstractRecentAlertsPortlet extends
AlertHistoryView imple
setShowFilterForm(false); //disable filter form for portlet
setOverflow(Overflow.VISIBLE);
setShowFooterRefresh(false); //disable footer refresh button as redundant for
portlets
+ setShowHeader(false);//disable header for portlets
}
public Timer getRefreshTimer() {