From: <cl...@hy...> - 2008-07-26 04:59:26
|
Author: clee Date: 2008-07-25 21:59:22 -0700 (Fri, 25 Jul 2008) New Revision: 10377 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=10377 Modified: trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionDAO.java trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java Log: Look up all related alert definitions based on a root resource Modified: trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionDAO.java =================================================================== --- trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionDAO.java 2008-07-26 01:19:41 UTC (rev 10376) +++ trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionDAO.java 2008-07-26 04:59:22 UTC (rev 10377) @@ -24,6 +24,7 @@ */ package org.hyperic.hq.events.server.session; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -35,8 +36,10 @@ import org.hyperic.hibernate.PageInfo; import org.hyperic.hq.appdef.shared.AppdefEntityID; import org.hyperic.hq.authz.server.session.AuthzSubject; +import org.hyperic.hq.authz.server.session.Resource; import org.hyperic.hq.authz.server.session.ResourceDAO; import org.hyperic.hq.authz.shared.AuthzConstants; +import org.hyperic.hq.authz.shared.EdgePermCheck; import org.hyperic.hq.authz.shared.PermissionManagerFactory; import org.hyperic.hq.dao.HibernateDAO; import org.hyperic.hq.dao.HibernateDAOFactory; @@ -191,7 +194,26 @@ public List findByAppdefEntityType(AppdefEntityID id, boolean asc) { return findByAppdefEntityType(id, "name", asc); } + + /** + * Return all alert definitions for the given resource and its descendants + * @param res the root resource + * @return + */ + public List findByRootResource(AuthzSubject subject, Resource r) { + EdgePermCheck wherePermCheck = + getPermissionManager().makePermCheckHql("rez"); + String hql = "select ad from AlertDefinition ad " + + "join ad.resource rez " + + wherePermCheck; + Query q = createQuery(hql); + + return wherePermCheck + .addQueryParameters(q, subject, r, 0, + Arrays.asList(MANAGE_ALERTS_OPS)).list(); + } + private List findByAppdefEntityType(AppdefEntityID id, String sort, boolean asc) { String sql = "from AlertDefinition a where a.appdefType = :aType " + Modified: trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java 2008-07-26 01:19:41 UTC (rev 10376) +++ trunk/src/org/hyperic/hq/events/server/session/AlertDefinitionManagerEJBImpl.java 2008-07-26 04:59:22 UTC (rev 10377) @@ -952,6 +952,18 @@ return getAlertDefDAO().findByAppdefEntity(id.getType(), id.getID()); } + /** + * Get a list of all alert definitions for the resource and its descendents + * @param subj the caller + * @param res the root resource + * @return a list of alert definitions + * @ejb:interface-method + */ + public List findRelatedAlertDefinitions(AuthzSubject subj, Resource res) { + List defs = getAlertDefDAO().findByRootResource(subj, res); + return defs; + } + /** * Get list of children alert definition for a parent alert definition * @ejb:interface-method |