Author: dcrutchf Date: 2010-05-20 14:22:43 -0700 (Thu, 20 May 2010) New Revision: 14604 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=14604 Modified: branches/HQ_4_4/installer/data/db-upgrade.xml branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/AuthzSession.java branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceEdgeDAO.java branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceManagerEJBImpl.java branches/HQ_4_4/src/org/hyperic/hq/authz/shared/AuthzConstants.java branches/HQ_4_4/src/org/hyperic/hq/hqu/rendit/helpers/ResourceHelper.groovy Log: Added a resource relation for the virtual hierarchy Added methods for getting parent/child edges and querying edges by name Modified: branches/HQ_4_4/installer/data/db-upgrade.xml =================================================================== --- branches/HQ_4_4/installer/data/db-upgrade.xml 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/installer/data/db-upgrade.xml 2010-05-20 21:22:43 UTC (rev 14604) @@ -11241,105 +11241,105 @@ AND (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm WHERE rm.role_id = r.id AND rm.operation_id = 415) = 0 </statement> - <statement desc="Adding create server permission, if platform permissions have create or delete (i.e. full permission) and create server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 303 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 303) = 0 - </statement> + <statement desc="Adding create server permission, if platform permissions have create or delete (i.e. full permission) and create server permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 303 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 303) = 0 + </statement> <statement desc="Adding delete server permission, if platform permissions have create or delete (i.e. full permission) and delete server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 308 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 308) = 0 - </statement> - <statement desc="Adding modify server permission, if platform permissions have create or delete (i.e. full permission) and modify server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 307 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 307) = 0 - </statement> - <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and view server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 311 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 311) = 0 - </statement> - <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and manage alert server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 401 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 401) = 0 - </statement> - <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and control server permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 326 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 326) = 0 - </statement> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 308 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 308) = 0 + </statement> + <statement desc="Adding modify server permission, if platform permissions have create or delete (i.e. full permission) and modify server permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 307 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 307) = 0 + </statement> + <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and view server permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 311 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 311) = 0 + </statement> + <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and manage alert server permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 401 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 401) = 0 + </statement> + <statement desc="Adding view server permission, if platform permissions have create or delete (i.e. full permission) and control server permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 326 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 320 or rm.operation_id = 302)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 326) = 0 + </statement> <statement desc="Adding create service permission, if server permissions have create or delete (i.e. full permission) and create service permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 309 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 309) = 0 - </statement> - <statement desc="Adding delete service permission, if server permissions have create or delete (i.e. full permission) and delete service permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 314 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 314) = 0 - </statement> - <statement desc="Adding modify service permission, if server permissions have create or delete (i.e. full permission) and modify service permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 313 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 313) = 0 - </statement> - <statement desc="Adding view service permission, if server permissions have create or delete (i.e. full permission) and view service permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 315 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 315) = 0 - </statement> - <statement desc="Adding view service permission, if server permissions have create or delete (i.e. full permission) and manage alerts service permission does not exist..."> - INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) - SELECT distinct m.role_id, 402 FROM EAM_ROLE r - INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id - WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and - (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm - WHERE rm.role_id = r.id AND rm.operation_id = 402) = 0 - </statement> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 309 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 309) = 0 + </statement> + <statement desc="Adding delete service permission, if server permissions have create or delete (i.e. full permission) and delete service permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 314 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 314) = 0 + </statement> + <statement desc="Adding modify service permission, if server permissions have create or delete (i.e. full permission) and modify service permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 313 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 313) = 0 + </statement> + <statement desc="Adding view service permission, if server permissions have create or delete (i.e. full permission) and view service permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 315 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 315) = 0 + </statement> + <statement desc="Adding view service permission, if server permissions have create or delete (i.e. full permission) and manage alerts service permission does not exist..."> + INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) + SELECT distinct m.role_id, 402 FROM EAM_ROLE r + INNER JOIN EAM_ROLE_OPERATION_MAP m on r.id = m.role_id + WHERE (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND (rm.operation_id = 303 or rm.operation_id = 308)) = 2 and + (SELECT count(*) FROM EAM_ROLE_OPERATION_MAP rm + WHERE rm.role_id = r.id AND rm.operation_id = 402) = 0 + </statement> <statement desc="Adding view service permission, if server permissions have create or delete (i.e. full permission) and control service permission does not exist..."> INSERT INTO EAM_ROLE_OPERATION_MAP(ROLE_ID, OPERATION_ID) SELECT distinct m.role_id, 327 FROM EAM_ROLE r @@ -11467,6 +11467,13 @@ ]]> </groovy> </schemaSpec> + <schemaSpec version="3.196"> + <schema-directSQL> + <statement desc="Adding virtual resource relation..."> + INSERT INTO EAM_RESOURCE_RELATION(ID, NAME, IS_HIER) VALUES (3, 'virtual', 1) + </statement> + </schema-directSQL> + </schemaSpec> </dbupgrade> </target> </project> Modified: branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/AuthzSession.java =================================================================== --- branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/AuthzSession.java 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/AuthzSession.java 2010-05-20 21:22:43 UTC (rev 14604) @@ -189,6 +189,14 @@ return getResourceRelation(AuthzConstants.RELATION_NETWORK_ID); } + /** + * + * @ejb:interface-method + */ + public ResourceRelation getVirtualRelation() { + return getResourceRelation(AuthzConstants.RELATION_VIRTUAL_ID); + } + private ResourceRelation getResourceRelation(Integer relationId) { return getResourceRelationDAO().findById(relationId); } Modified: branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceEdgeDAO.java =================================================================== --- branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceEdgeDAO.java 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceEdgeDAO.java 2010-05-20 21:22:43 UTC (rev 14604) @@ -201,6 +201,68 @@ .executeUpdate(); } + // Retrieve the parent of a given resource, if one exists, otherwise return null + ResourceEdge getParentEdge(Resource resource, ResourceRelation relation) { + String hql = "from ResourceEdge re " + + "where re.from=:from and distance=-1 and relation=:relation"; + Iterator iterator = getSession().createQuery(hql) + .setParameter("from", resource) + .setParameter("relation", relation) + .iterate(); + + if (iterator.hasNext()) { + return (ResourceEdge) iterator.next(); + } + + return null; + } + + // Retrieve the children of a given resource, base on the relation + List findChildEdges(Resource resource, ResourceRelation relation) { + String hql = "from ResourceEdge re " + + "where re.from=:from and distance=1 and relation=:relation"; + + return getSession().createQuery(hql) + .setParameter("from", resource) + .setParameter("relation", relation) + .list(); + } + + List findByName(String name, ResourceRelation relation) { + String hql = "from ResourceEdge re " + + "where re.from.name like :name and distance=0 and relation=:relation"; + + return getSession().createQuery(hql) + .setParameter("name", "%" + name + "%") + .setParameter("relation", relation) + .list(); + } + + // Checks whether or not a given resource has any direct children + boolean hasChildren(Resource resource, ResourceRelation relation) { + String hql = "select count(re) from ResourceEdge re " + + "where re.from=:from and distance=:distance and relation=:relation"; + + int result = ((Integer) getSession().createQuery(hql) + .setParameter("from", resource) + .setParameter("relation", relation) + .setInteger("distance", 1) + .iterate().next()).intValue(); + + return result > 0; + } + + // Returns the number of descendants of a given resource + int getDescendantCount(Resource resource, ResourceRelation relation) { + String hql = "select count(re) from ResourceEdge re " + + "where re.from=:from and distance > 0 and relation=:relation"; + + return ((Integer) getSession().createQuery(hql) + .setParameter("from", resource) + .setParameter("relation", relation) + .iterate().next()).intValue(); + } + boolean isResourceChildOf(Resource parent, Resource child) { String sql = "from ResourceEdge re " + "where re.from=:from and re.to=:to and distance=:distance and rel_id=:rel_id"; Modified: branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceManagerEJBImpl.java =================================================================== --- branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceManagerEJBImpl.java 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/src/org/hyperic/hq/authz/server/session/ResourceManagerEJBImpl.java 2010-05-20 21:22:43 UTC (rev 14604) @@ -690,11 +690,67 @@ public boolean isResourceChildOf(Resource parent, Resource child) { return getResourceEdgeDAO().isResourceChildOf(parent, child); } + + /** + * + * @ejb:interface-method + */ + public boolean hasChildResourceEdges(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().hasChildren(resource, relation); + } + + /** + * + * @ejb:interface-method + */ + public int getDescendantResourceEdgeCount(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().getDescendantCount(resource, relation); + } + + /** + * + * @ejb:interface-method + */ + public Collection findChildResourceEdges(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().findChildEdges(resource, relation); + } + + /** + * + * @ejb:interface-method + */ + public Collection findDescendantResourceEdges(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().findDescendantEdges(resource, relation); + } + + /** + * + * @ejb:interface-method + */ + public Collection findAncestorResourceEdges(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().findAncestorEdges(resource, relation); + } /** * * @ejb:interface-method */ + public Collection findResourceEdgesByName(String name, ResourceRelation relation) { + return getResourceEdgeDAO().findByName(name, relation); + } + + /** + * + * @ejb:interface-method + */ + public ResourceEdge getParentResourceEdge(Resource resource, ResourceRelation relation) { + return getResourceEdgeDAO().getParentEdge(resource, relation); + } + + /** + * + * @ejb:interface-method + */ public List findResourceEdges(ResourceRelation relation, Integer resourceId, List platformTypeIds, @@ -947,7 +1003,7 @@ } ZeventManager.getInstance().enqueueEventsAfterCommit(events); } - + public static ResourceManagerLocal getOne() { try { return ResourceManagerUtil.getLocalHome().create(); Modified: branches/HQ_4_4/src/org/hyperic/hq/authz/shared/AuthzConstants.java =================================================================== --- branches/HQ_4_4/src/org/hyperic/hq/authz/shared/AuthzConstants.java 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/src/org/hyperic/hq/authz/shared/AuthzConstants.java 2010-05-20 21:22:43 UTC (rev 14604) @@ -190,8 +190,10 @@ // Resource Relation constants public static final Integer RELATION_CONTAINMENT_ID = new Integer(1); public static final Integer RELATION_NETWORK_ID = new Integer(2); + public static final Integer RELATION_VIRTUAL_ID = new Integer(3); public static final String ResourceEdgeContainmentRelation = "containment"; public static final String ResourceEdgeNetworkRelation = "network"; + public static final String ResourceEdgeVirtualRelation = "virtual"; // List of alert operations public static final String[] VIEW_ALERTS_OPS = Modified: branches/HQ_4_4/src/org/hyperic/hq/hqu/rendit/helpers/ResourceHelper.groovy =================================================================== --- branches/HQ_4_4/src/org/hyperic/hq/hqu/rendit/helpers/ResourceHelper.groovy 2010-05-18 23:37:47 UTC (rev 14603) +++ branches/HQ_4_4/src/org/hyperic/hq/hqu/rendit/helpers/ResourceHelper.groovy 2010-05-20 21:22:43 UTC (rev 14604) @@ -267,11 +267,13 @@ */ Collection findResourceEdges(String resourceRelation, Resource parent) { def edges = [] + if (resourceRelation.equals(AuthzConstants.ResourceEdgeNetworkRelation)) { edges = rman.findResourceEdges(rman.getNetworkRelation(), parent) } else if (resourceRelation.equals(AuthzConstants.ResourceEdgeContainmentRelation)) { edges = rman.findResourceEdges(rman.getContainmentRelation(), parent) } + return edges } @@ -314,7 +316,78 @@ } return edges } - + + /** + * Find the child resources of a resource using the virtual relation + * + * @return a List of {@link Resource}s + */ + Collection findChildResourcesByVirtualRelation(Resource resource) { + def resourceEdges = rman.findChildResourceEdges(resource, rman.getVirtualRelation()) + + return resourceEdges.collect { edge -> edge.to } + } + + /** + * Find all descendant resources of a resource using the virtual relation + * + * @return a List of {@link Resource}s + */ + Collection findDescendantResourcesByVirtualRelation(Resource resource) { + def resourceEdges = rman.findDescendantResourceEdges(resource, rman.getVirtualRelation()) + + return resourceEdges.collect { edge -> edge.to } + } + + /** + * Find all ancestors of a resource using the virtual relation + * + * @return a List of {@link Resource}s + */ + Collection findAncestorsByVirtualRelation(Resource resource) { + def resourceEdges = rman.findAncestorResourceEdges(resource, rman.getVirtualRelation()) + + return resourceEdges.collect { edge -> edge.to } + } + + /** + * Find all resources in a virtual relation that contain the supplied name string + * + * @return a List of {@link Resource}s + */ + Collection findResourcesByNameAndVirtualRelation(String name) { + def resourceEdges = rman.findResourceEdgesByName(name, rman.getVirtualRelation()) + + return resourceEdges.collect { edge -> edge.from } + } + + /** + * + */ + Resource getParentResourceByVirtualRelation(Resource resource) { + def resourceEdges = rman.getParentResourceEdge(resource, rman.getVirtualRelation()) + + return resourceEdges?.to + } + + /** + * Check whether or not a resource has children using the virtual relation + * + * @return boolean + */ + boolean hasChildResourcesByVirtualRelation(Resource resource) { + return rman.hasChildResourceEdges(resource, rman.getVirtualRelation()) + } + + /** + * Returns the number of descendant resources using the virtual relation + * + * @return boolean + */ + int getDescendantResourceCountByVirtualRelation(Resource resource) { + return rman.getDescendantResourceEdgeCount(resource, rman.getVirtualRelation()) + } + List findParentPlatformsByNetworkRelation(String prototype, String name, Boolean hasChildren) { def platformType = null def platformTypeIds = null |