modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
| 21 ++++--
modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/ResourceGroup.java
| 24 ++++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/platform/PlatformSummaryPortlet.java
| 8 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceBossGWTService.java
| 5 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
| 6 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceBossGWTServiceImpl.java
| 11 ---
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceBossBean.java
| 19 ++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
| 34 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
| 10 ++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
| 30 +++++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
| 8 ++
14 files changed, 130 insertions(+), 54 deletions(-)
New commits:
commit 330fc2f698e7001fd3347c1284bc2ad33d92557e
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jan 21 16:38:28 2011 -0500
Don't generate errors when trying to switch to an invalid subtab, this can
happen due to our attempt at sticky tabbing. If it's not there just go
to the default subtab silently.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
index 0ad75df..2242211 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/detail/AbstractTwoLevelTabSetView.java
@@ -216,7 +216,8 @@ public abstract class AbstractTwoLevelTabSetView<T, U extends
Layout> extends Lo
// Do *not* select the tab and trigger the tab selected event until the
subtab has been selected first.
subtab = (subtabName != null) ? tab.getSubTabByName(subtabName) :
tab.getDefaultSubTab();
if (subtab == null || tab.getLayout().isSubTabDisabled(subtab)) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_tabs_invalidSubTab(subtabName));
+ // due to our attempt to perform sticky tabbing we may request an
invalid subtab when
+ // switching resources. Just silently go to the default tab/subtab.
subtab = tab.getLayout().getDefaultSubTab();
}
tab.getLayout().selectSubTab(subtab);
commit 6807fb472cdb8d7f611423327ad505e79089b779
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jan 21 16:21:50 2011 -0500
Fix uninventory messages that say "delete". this confuses users.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
index ff8d83c..51f5a28 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
@@ -166,19 +166,19 @@ public class ResourceSearchView extends Table {
availabilityField);
addTableAction(extendLocatorId("Uninventory"),
MSG.common_button_uninventory(), MSG
- .view_inventory_resources_deleteConfirm(), new
AbstractTableAction(TableActionEnablement.ANY) {
+ .view_inventory_resources_uninventoryConfirm(), new
AbstractTableAction(TableActionEnablement.ANY) {
public void executeAction(ListGridRecord[] selection, Object actionValue) {
int[] resourceIds = TableUtility.getIds(selection);
ResourceGWTServiceAsync resourceManager =
GWTServiceLookup.getResourceService();
resourceManager.uninventoryResources(resourceIds, new
AsyncCallback<List<Integer>>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_deleteFailed(),
caught);
+
CoreGUI.getErrorHandler().handleError(MSG.view_inventory_resources_uninventoryFailed(),
caught);
}
public void onSuccess(List<Integer> result) {
CoreGUI.getMessageCenter().notify(
- new Message(MSG.view_inventory_resources_deleteSuccessful(),
Severity.Info));
+ new
Message(MSG.view_inventory_resources_uninventorySuccessful(), Severity.Info));
ResourceSearchView.this.refresh();
}
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 424cf7b..b8b4d13 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
@@ -1305,6 +1305,9 @@ view_inventory_resource_loadFailed = Resource with id [{0}] does not
exist or is
view_inventory_resources_deleteConfirm = Are you sure you want to delete the selected
resources?
view_inventory_resources_deleteSuccessful = You have successfully deleted the selected
resources
view_inventory_resources_deleteFailed = Failed to delete the selected resources
+view_inventory_resources_uninventoryConfirm = Are you sure you want to uninventory the
selected resources?
+view_inventory_resources_uninventorySuccessful = You have successfully uninventoried the
selected resources
+view_inventory_resources_uninventoryFailed = Failed to uninventory the selected
resources
view_inventory_resources_loadFailed = Failed to load resource composite data
view_inventory_resources_title = Member Resources
view_inventory_resources_title_children = Child Resources
commit a3afdeaa8bc543f6c7b81945b36377f96b02df2e
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jan 21 16:12:42 2011 -0500
Speed up InventorySummary by reducing the number of resource/group
queries/dbRoundTrips from 5 to 2.
- remove some now unused queries and methods
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
index dff6d58..dd14c13 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Resource.java
@@ -307,6 +307,17 @@ import org.rhq.core.domain.util.Summary;
+ " FROM Resource res " //
+ " WHERE res.resourceType.category = :category " //
+ " AND (:inventoryStatus = res.inventoryStatus OR :inventoryStatus is
null) "),
+ @NamedQuery(name = Resource.QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS, query =
"" //
+ + "SELECT res.resourceType.category, count(*) " //
+ + " FROM Resource res " //
+ + " WHERE res.id IN (SELECT rr.id FROM Resource rr JOIN rr.implicitGroups
g JOIN g.roles r JOIN r.subjects s WHERE s = :subject)"
+ + " AND (:inventoryStatus = res.inventoryStatus OR :inventoryStatus is
null) " //
+ + " GROUP BY res.resourceType.category "),
+ @NamedQuery(name = Resource.QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS_ADMIN,
query = "" //
+ + "SELECT res.resourceType.category, count(*) " //
+ + " FROM Resource res " //
+ + " WHERE (:inventoryStatus = res.inventoryStatus OR :inventoryStatus is
null) " //
+ + " GROUP BY res.resourceType.category "),
// Returns all platforms that is either of a given inventory status itself or
// one of its top level servers have one of the inventory statuses (for
auto-discovery queue).
@@ -347,12 +358,9 @@ import org.rhq.core.domain.util.Summary;
+ " WHERE res.resourceType = :type " //
+ " AND res.id IN (SELECT rr.id FROM Resource rr JOIN rr.implicitGroups g
JOIN g.roles r JOIN r.subjects s WHERE s = :subject)"
+ " AND res.id IN ( :ids ) "),
- @NamedQuery(name = Resource.QUERY_FIND_IDS_BY_TYPE_IDS, query =
- "SELECT r.id "
- + "FROM Resource r "
+ @NamedQuery(name = Resource.QUERY_FIND_IDS_BY_TYPE_IDS, query = "SELECT r.id
" + "FROM Resource r "
+ "WHERE r.resourceType.id IN (:resourceTypeIds)"),
- @NamedQuery(name = Resource.QUERY_FIND_COUNT_BY_TYPES, query =
- "SELECT COUNT(r) FROM Resource r WHERE r.resourceType.id IN
(:resourceTypeIds)"),
+ @NamedQuery(name = Resource.QUERY_FIND_COUNT_BY_TYPES, query = "SELECT COUNT(r)
FROM Resource r WHERE r.resourceType.id IN (:resourceTypeIds)"),
@NamedQuery(name = Resource.QUERY_FIND_BY_TYPE_AND_IDS_ADMIN, query = ""
//
+ "SELECT res " //
+ " FROM Resource res " //
@@ -788,6 +796,9 @@ public class Resource implements Comparable<Resource>,
Serializable {
public static final String QUERY_FIND_BY_CATEGORY_AND_INVENTORY_STATUS =
"Resource.findByCategoryAndInventoryStatus";
public static final String QUERY_FIND_BY_CATEGORY_AND_INVENTORY_STATUS_ADMIN =
"Resource.findByCategoryAndInventoryStatus_admin";
+ public static final String QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS =
"Resource.findResourceSummaryByInventoryStatus";
+ public static final String QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS_ADMIN =
"Resource.findResourceSummaryByInventoryStatus_admin";
+
public static final String QUERY_FIND_QUEUED_PLATFORMS_BY_INVENTORY_STATUS =
"Resource.findQueuedPlatformsByInventoryStatus";
public static final String QUERY_FIND_BY_TYPE = "Resource.findByType";
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/ResourceGroup.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/ResourceGroup.java
index 810c8df..0a34e0c 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/ResourceGroup.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/ResourceGroup.java
@@ -103,12 +103,18 @@ import org.rhq.core.domain.tagging.Tag;
+ " AND (type.plugin = :pluginName OR :pluginName is null) "
+ " AND (type.category = :category OR :category is null) ) )
"),
- @NamedQuery(name = ResourceGroup.QUERY_FIND_ALL_BY_CATEGORY_COUNT, query =
"SELECT COUNT(DISTINCT rg) "
- + " FROM ResourceGroup AS rg JOIN rg.roles r JOIN r.subjects s " +
" WHERE s = :subject "
- + " AND rg.visible = true " + " AND rg.groupCategory = :category
"),
-
- @NamedQuery(name = ResourceGroup.QUERY_FIND_ALL_BY_CATEGORY_COUNT_admin, query =
"SELECT COUNT(rg) "
- + " FROM ResourceGroup AS rg " + " WHERE rg.groupCategory =
:category " + " AND rg.visible = true "),
+ @NamedQuery(name = ResourceGroup.QUERY_FIND_RESOURCE_GROUP_SUMMARY, query =
"" //
+ + "SELECT rg.groupCategory, COUNT(DISTINCT rg) " //
+ + " FROM ResourceGroup AS rg JOIN rg.roles r JOIN r.subjects s "
//
+ + " WHERE s = :subject " //
+ + " AND rg.visible = true " //
+ + " GROUP BY rg.groupCategory "),
+
+ @NamedQuery(name = ResourceGroup.QUERY_FIND_RESOURCE_GROUP_SUMMARY_admin, query =
"" //
+ + "SELECT rg.groupCategory, COUNT(rg) " //
+ + " FROM ResourceGroup AS rg " //
+ + " WHERE rg.visible = true " //
+ + " GROUP BY rg.groupCategory "),
@NamedQuery(name = ResourceGroup.QUERY_FIND_BY_NAME, query = "SELECT rg FROM
ResourceGroup AS rg WHERE LOWER(rg.name) = LOWER(:name)"),
@NamedQuery(name = ResourceGroup.QUERY_FIND_BY_CLUSTER_KEY, query = "SELECT rg
FROM ResourceGroup AS rg WHERE rg.clusterKey = :clusterKey"),
@@ -192,8 +198,8 @@ public class ResourceGroup extends Group {
private static final long serialVersionUID = 1L;
//------- Names of Named Queries -------
- public static final String QUERY_FIND_ALL_BY_CATEGORY_COUNT =
"ResourceGroup.findAllByCategory_Count";
- public static final String QUERY_FIND_ALL_BY_CATEGORY_COUNT_admin =
"ResourceGroup.findAllByCategory_Count_admin";
+ public static final String QUERY_FIND_RESOURCE_GROUP_SUMMARY =
"ResourceGroup.findResourceGroupSummary";
+ public static final String QUERY_FIND_RESOURCE_GROUP_SUMMARY_admin =
"ResourceGroup.findResourceGroupSummary_admin";
public static final String QUERY_FIND_BY_NAME =
"ResourceGroup.findByName";
public static final String QUERY_FIND_BY_CLUSTER_KEY =
"ResourceGroup.findByClusterKey";
@@ -552,7 +558,7 @@ public class ResourceGroup extends Group {
this.roles.add(role);
}
- public void removeRole(Role role) {
+ public void removeRole(Role role) {
this.roles.remove(role);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
index f308609..70fbc3e 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/summary/InventorySummaryPortlet.java
@@ -76,7 +76,7 @@ public class InventorySummaryPortlet extends LocatableVLayout implements
AutoRef
form.destroy();
}
- resourceBossService.getInventorySummaryForLoggedInUser(new
AsyncCallback<InventorySummary>() {
+ resourceBossService.getInventorySummary(new
AsyncCallback<InventorySummary>() {
public void onFailure(Throwable throwable) {
CoreGUI.getErrorHandler().handleError(MSG.view_portlet_inventory_error1(), throwable);
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceBossGWTService.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceBossGWTService.java
index 30531ad..afa44cb 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceBossGWTService.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/gwt/ResourceBossGWTService.java
@@ -25,7 +25,6 @@ package org.rhq.enterprise.gui.coregui.client.gwt;
import com.google.gwt.user.client.rpc.RemoteService;
-import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.InventorySummary;
/**
@@ -33,8 +32,6 @@ import org.rhq.core.domain.resource.InventorySummary;
*/
public interface ResourceBossGWTService extends RemoteService {
- InventorySummary getInventorySummaryForLoggedInUser() throws RuntimeException;
-
- InventorySummary getInventorySummary(Subject user) throws RuntimeException;
+ InventorySummary getInventorySummary() throws RuntimeException;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceBossGWTServiceImpl.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceBossGWTServiceImpl.java
index 046443d..34019fe 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceBossGWTServiceImpl.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/server/gwt/ResourceBossGWTServiceImpl.java
@@ -23,7 +23,6 @@
package org.rhq.enterprise.gui.coregui.server.gwt;
-import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.InventorySummary;
import org.rhq.core.util.exception.ThrowableUtil;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceBossGWTService;
@@ -39,14 +38,10 @@ public class ResourceBossGWTServiceImpl extends AbstractGWTServiceImpl
implement
private ResourceBossLocal resourceBoss = LookupUtil.getResourceBoss();
- public InventorySummary getInventorySummaryForLoggedInUser() {
- Subject subject = getSessionSubject();
- return getInventorySummary(subject);
- }
-
- public InventorySummary getInventorySummary(Subject user) throws RuntimeException {
+ public InventorySummary getInventorySummary() {
try {
- return resourceBoss.getInventorySummary(user);
+ // note: this does not need to be sent through SerialUtility.prepare as it
has no entities
+ return resourceBoss.getInventorySummary(getSessionSubject());
} catch (Throwable t) {
throw new RuntimeException(ThrowableUtil.getAllMessages(t));
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceBossBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceBossBean.java
index ce7449f..a8480b6 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceBossBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceBossBean.java
@@ -24,8 +24,6 @@ import javax.ejb.Stateless;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.InventorySummary;
-import org.rhq.core.domain.resource.ResourceCategory;
-import org.rhq.core.domain.resource.group.GroupCategory;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal;
import org.rhq.enterprise.server.resource.group.ResourceGroupManagerLocal;
import org.rhq.enterprise.server.resource.group.definition.GroupDefinitionManagerLocal;
@@ -52,14 +50,15 @@ public class ResourceBossBean implements ResourceBossLocal {
public InventorySummary getInventorySummary(Subject user) {
InventorySummary summary = new InventorySummary();
- summary.setPlatformCount(resourceManager.getResourceCountByCategory(user,
ResourceCategory.PLATFORM,
- InventoryStatus.COMMITTED));
- summary.setServerCount(resourceManager.getResourceCountByCategory(user,
ResourceCategory.SERVER,
- InventoryStatus.COMMITTED));
- summary.setServiceCount(resourceManager.getResourceCountByCategory(user,
ResourceCategory.SERVICE,
- InventoryStatus.COMMITTED));
-
summary.setCompatibleGroupCount(groupManager.getResourceGroupCountByCategory(user,
GroupCategory.COMPATIBLE));
- summary.setMixedGroupCount(groupManager.getResourceGroupCountByCategory(user,
GroupCategory.MIXED));
+
+ int[] categoryCounts = resourceManager.getResourceCountSummary(user,
InventoryStatus.COMMITTED);
+ summary.setPlatformCount(categoryCounts[0]);
+ summary.setServerCount(categoryCounts[1]);
+ summary.setServiceCount(categoryCounts[2]);
+
+ categoryCounts = groupManager.getResourceGroupCountSummary(user);
+ summary.setMixedGroupCount(categoryCounts[0]);
+ summary.setCompatibleGroupCount(categoryCounts[1]);
summary.setGroupDefinitionCount(groupDefinitionManager.getGroupDefinitionCount(user));
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 5f62fa9..e9d3b30 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -1091,6 +1091,38 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
return new PageList<Resource>(results, (int) count, pageControl);
}
+ @SuppressWarnings("unchecked")
+ public int[] getResourceCountSummary(Subject user, InventoryStatus status) {
+ Query query;
+ if (authorizationManager.isInventoryManager(user)) {
+ query =
entityManager.createNamedQuery(Resource.QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS_ADMIN);
+ } else {
+ query =
entityManager.createNamedQuery(Resource.QUERY_FIND_RESOURCE_SUMMARY_BY_INVENTORY_STATUS);
+ query.setParameter("subject", user);
+ }
+
+ query.setParameter("inventoryStatus", status);
+
+ int[] counts = new int[3];
+ List<Object[]> resultList = query.getResultList();
+
+ for (Object[] row : resultList) {
+ switch ((ResourceCategory) row[0]) {
+ case PLATFORM:
+ counts[0] = ((Long) row[1]).intValue();
+ break;
+ case SERVER:
+ counts[1] = ((Long) row[1]).intValue();
+ break;
+ case SERVICE:
+ counts[2] = ((Long) row[1]).intValue();
+ break;
+ }
+ }
+
+ return counts;
+ }
+
public int getResourceCountByCategory(Subject user, ResourceCategory category,
InventoryStatus status) {
Query queryCount;
if (authorizationManager.isInventoryManager(user)) {
@@ -1211,6 +1243,7 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
return result;
}
+ @SuppressWarnings("unchecked")
public List<AutoGroupComposite> findResourcesAutoGroups(Subject subject, int[]
resourceIds) {
List<AutoGroupComposite> results = new
ArrayList<AutoGroupComposite>();
List<Integer> ids = ArrayUtils.wrapInList(resourceIds);
@@ -2009,6 +2042,7 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
String resourceKey = (String) prefetched[i++];
Integer parentId = (Integer) prefetched[i++];
+ @SuppressWarnings("unused")
String parentName = (String) prefetched[i++];
AvailabilityType availType = (AvailabilityType) prefetched[i++];
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
index 38d68b6..88a82e0 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerLocal.java
@@ -218,7 +218,15 @@ public interface ResourceManagerLocal {
String pluginName, Resource parentResource, String searchString, boolean
attachParentResource,
PageControl pageControl);
- // TODO GH: This would be more useful if it used a groupby to return a map of
categories to their size
+ /**
+ * Get a summary of counts, by category, of the user's viewable resources having
the provided inventory status.
+ *
+ * @param user
+ * @param status
+ * @return A 3 element int array with counts for platform, service, service as a[0],
a[1], a[2], respectively.
+ */
+ int[] getResourceCountSummary(Subject user, InventoryStatus status);
+
int getResourceCountByCategory(Subject user, ResourceCategory category,
InventoryStatus status);
int getResourceCountByTypeAndIds(Subject user, ResourceType type, int[]
resourceIds);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
index a6c26e2..f4eb0b5 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerBean.java
@@ -386,21 +386,31 @@ public class ResourceGroupManagerBean implements
ResourceGroupManagerLocal, Reso
group.getAlertDefinitions().size();
}
- public int getResourceGroupCountByCategory(Subject subject, GroupCategory category)
{
- Query queryCount;
-
- if (authorizationManager.isInventoryManager(subject)) {
- queryCount =
entityManager.createNamedQuery(ResourceGroup.QUERY_FIND_ALL_BY_CATEGORY_COUNT_admin);
+ @SuppressWarnings("unchecked")
+ public int[] getResourceGroupCountSummary(Subject user) {
+ Query query;
+ if (authorizationManager.isInventoryManager(user)) {
+ query =
entityManager.createNamedQuery(ResourceGroup.QUERY_FIND_RESOURCE_GROUP_SUMMARY_admin);
} else {
- queryCount =
entityManager.createNamedQuery(ResourceGroup.QUERY_FIND_ALL_BY_CATEGORY_COUNT);
- queryCount.setParameter("subject", subject);
+ query =
entityManager.createNamedQuery(ResourceGroup.QUERY_FIND_RESOURCE_GROUP_SUMMARY);
+ query.setParameter("subject", user);
}
- queryCount.setParameter("category", category);
+ int[] counts = new int[2];
+ List<Object[]> resultList = query.getResultList();
- long count = (Long) queryCount.getSingleResult();
+ for (Object[] row : resultList) {
+ switch ((GroupCategory) row[0]) {
+ case MIXED:
+ counts[0] = ((Long) row[1]).intValue();
+ break;
+ case COMPATIBLE:
+ counts[1] = ((Long) row[1]).intValue();
+ break;
+ }
+ }
- return (int) count;
+ return counts;
}
@RequiredPermission(Permission.MANAGE_INVENTORY)
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
index a0481b1..19cf42b 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/group/ResourceGroupManagerLocal.java
@@ -67,7 +67,13 @@ public interface ResourceGroupManagerLocal {
ResourceGroup getResourceGroupById(Subject user, int id, GroupCategory category)
throws ResourceGroupNotFoundException;
- int getResourceGroupCountByCategory(Subject subject, GroupCategory category);
+ /**
+ * Get a summary of counts, by category, of the user's assigned, visible groups.
+ *
+ * @param user
+ * @return A 2 element int array with counts for mixed, compatible as a[0], a[1]
respectively.
+ */
+ int[] getResourceGroupCountSummary(Subject user);
void enableRecursivityForGroup(Subject subject, int groupId) throws
ResourceGroupNotFoundException,
ResourceGroupUpdateException;
commit bbadd202d97f72963f89684d08be5b8c4dbe5bd7
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jan 21 14:23:57 2011 -0500
Prevent a down agent from ruining the entire load of
PlatformSummaryPortlet. (when a Live data fetch fails).
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/platform/PlatformSummaryPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/platform/PlatformSummaryPortlet.java
index 2a3f023..95dd1df 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/platform/PlatformSummaryPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/platform/PlatformSummaryPortlet.java
@@ -138,7 +138,13 @@ public class PlatformSummaryPortlet extends LocatableListGrid
implements Portlet
measurementService.findLiveData(resource.getId(), pmd.getDefinitionIds(),
new AsyncCallback<Set<MeasurementData>>() {
public void onFailure(Throwable caught) {
-
CoreGUI.getErrorHandler().handleError(MSG.view_portlet_platform_type_error_1(), caught);
+ // this can happen if the agent is down, don't crash out of the
entire portlet
+ record.setAttribute("cpu", MSG.common_val_na());
+ record.setAttribute("memory", MSG.common_val_na());
+
+ setSortField(1);
+ refreshFields();
+ markForRedraw();
}
public void onSuccess(Set<MeasurementData> result) {