modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTitleBar.java | 14 +++++ modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java | 3 - modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 2 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBean.java | 26 +++++++--- 4 files changed, 35 insertions(+), 10 deletions(-)
New commits: commit d2cadbba7681e2b7a6b623ea2e5a8f3bf9a7be79 Merge: 45e8f87 959f3d0 Author: John Mazzitelli mazz@redhat.com Date: Fri Mar 11 13:35:37 2011 -0500
Merge commit 'origin/master' into group-fixes
commit 45e8f87a3ec5d9ab5e66d21d082c6b7ff88d4ea4 Author: John Mazzitelli mazz@redhat.com Date: Fri Mar 11 13:35:15 2011 -0500
BZ 535272 - resource keys may have characters that need to be escaped. so rather than hardcode them, use sql parameters to pass them in when executing the query
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBean.java index 2a9703c..9ea748e 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBean.java @@ -165,11 +165,15 @@ public class ClusterManagerBean implements ClusterManagerLocal, ClusterManagerRe @SuppressWarnings("unchecked") public List<Resource> getAutoClusterResources(Subject subject, ClusterKey clusterKey) { // Build the query - String queryString = getClusterKeyQuery(clusterKey); + Map<String, Object> params = new HashMap<String, Object>(); + String queryString = getClusterKeyQuery(clusterKey, params); if (log.isDebugEnabled()) { log.debug("getAutoClusterResources() generated query: " + queryString); } Query query = entityManager.createQuery(queryString); + for (Map.Entry<String, Object> param : params.entrySet()) { + query.setParameter(param.getKey(), param.getValue()); + } List<Resource> rs = query.getResultList();
return rs; @@ -300,7 +304,7 @@ public class ClusterManagerBean implements ClusterManagerLocal, ClusterManagerRe } }
- private String getClusterKeyQuery(ClusterKey clusterKey) { + private String getClusterKeyQuery(ClusterKey clusterKey, Map<String, Object> params) { if (null == clusterKey) return null; if (0 == clusterKey.getDepth()) @@ -308,7 +312,7 @@ public class ClusterManagerBean implements ClusterManagerLocal, ClusterManagerRe
StringBuilder query = new StringBuilder();
- buildQuery(query, clusterKey, clusterKey.getHierarchy()); + buildQuery(query, params, clusterKey, clusterKey.getHierarchy());
return query.toString(); } @@ -323,25 +327,33 @@ public class ClusterManagerBean implements ClusterManagerLocal, ClusterManagerRe * SELECT rgir FROM ResourceGroup rg JOIN rg.implicitResources rgir * WHERE rg = :rgId * </pre> - * The parameters are actually filled in with the literal values. + * + * Some of the parameters are actually filled in with the literal values, however, the params + * map will be filled with some parameters that need to be set on the query before the query can + * be executed. This is necessary to avoid having to escape characters (like backslashes) that might + * exist in resource keys. */ - private void buildQuery(StringBuilder query, ClusterKey clusterKey, List<ClusterKey.Node> nodes) { + private void buildQuery(StringBuilder query, Map<String, Object> params, ClusterKey clusterKey, + List<ClusterKey.Node> nodes) { int size = nodes.size(); ClusterKey.Node node = nodes.get(size - 1); String alias = "r" + size; + String keyParam = "key" + size;
// TODO: Change subquery syntax to be like the JOIN below. query.append(" SELECT " + alias + " FROM Resource " + alias + " WHERE "); - query.append(alias + ".resourceKey = '" + node.getResourceKey() + "' AND "); + query.append(alias + ".resourceKey = :" + keyParam + " AND "); query.append(alias + ".resourceType = " + node.getResourceTypeId() + " AND "); query.append(alias + ".parentResource IN ( ");
+ params.put(keyParam, node.getResourceKey()); + // this is an authorization-related query, so use implicitResource (not explicitResources) if (1 == size) { query.append("SELECT rgir FROM ResourceGroup rg JOIN rg.implicitResources rgir WHERE rg = " + clusterKey.getClusterGroupId()); } else { - buildQuery(query, clusterKey, nodes.subList(0, size - 1)); + buildQuery(query, params, clusterKey, nodes.subList(0, size - 1)); }
query.append(")");
commit 19ed330f22690d34a4d3040ce6b8bbc6b8a850e1 Author: John Mazzitelli mazz@redhat.com Date: Fri Mar 11 11:06:39 2011 -0500
trivial - add comments, reword the group node tooltip message
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java index dde5984..d3f4fbd 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java @@ -294,10 +294,11 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka
ResourceGroupEnhancedTreeNode selectedNode; if (this.selectedGroup.getClusterKey() != null) { + // a child cluster node leaf was selected selectedNode = (ResourceGroupEnhancedTreeNode) treeGrid.getTree().find( ResourceGroupEnhancedTreeNode.CLUSTER_KEY, this.selectedGroup.getClusterKey()); } else { - // TODO not sure when this else would happen, why would a group's cluster key be null? + // the top root node, representing the group itself, was selected selectedNode = (ResourceGroupEnhancedTreeNode) treeGrid.getTree().findById( String.valueOf(this.selectedGroup.getId())); } 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 dad5c7b..638ea8c 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 @@ -1410,7 +1410,7 @@ view_tabs_invalidSubTab = Invalid subtab: {0} view_tabs_invalidTab = Invalid tab: {0}~
# Group Tree -group_tree_partialClusterTooltip = {0} out of {1} group members have ''{2}'' resources +group_tree_partialClusterTooltip = {0} out of {1} group members have a ''{2}'' resource
#=================== Dashboard ===================== view_dashboard_favorites_error1 = Failed to load favorite Resources.
commit 93e997d46545c0dfc9ec7746ee7de7fb6e871554 Author: John Mazzitelli mazz@redhat.com Date: Fri Mar 11 11:06:10 2011 -0500
i18n the group category name in the summary subtitle
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTitleBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTitleBar.java index 7136dba..26e826c 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTitleBar.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTitleBar.java @@ -234,8 +234,20 @@ public class ResourceGroupTitleBar extends LocatableVLayout { this.group = groupComposite.getResourceGroup(); update();
+ String catName = null; + switch (group.getGroupCategory()) { + case COMPATIBLE: { + catName = MSG.view_group_summary_compatible(); + break; + } + case MIXED: { + catName = MSG.view_group_summary_mixed(); + break; + } + } + this.title.setContents("<span class="SectionHeader">" + group.getName() - + "</span> <span class="subtitle">" + group.getGroupCategory().name() + "</span>"); + + "</span> <span class="subtitle">" + catName + "</span>");
Set<Integer> favorites = UserSessionManager.getUserPreferences().getFavoriteResourceGroups(); this.favorite = favorites.contains(group.getId());
rhq-commits@lists.fedorahosted.org