From: <cl...@hy...> - 2008-09-16 17:33:11
|
Author: clee Date: 2008-09-16 17:33:07 -0700 (Tue, 16 Sep 2008) New Revision: 11174 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=11174 Modified: trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java trunk/src/org/hyperic/hq/measurement/server/session/MeasurementDAO.java Log: [HQ-1266] Need to get AvailabilityManager to return aggregate data keyed by measurement IDs not template IDs (reviewed by scottmf) Modified: trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java 2008-09-17 00:21:14 UTC (rev 11173) +++ trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java 2008-09-17 00:33:07 UTC (rev 11174) @@ -33,6 +33,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -1995,7 +1996,17 @@ boolean useAggressiveRollup) { Map rtn = getAggDataByMetric(tids, iids, begin, end, useAggressiveRollup); - rtn.putAll(getAvailMan().getAggregateData(tids, iids, begin, end)); + Collection metrics = + getMeasurementDAO().findAvailMeasurements(tids, iids); + if (metrics.size() > 0) { + Integer[] mids = new Integer[metrics.size()]; + Iterator it = metrics.iterator(); + for (int i = 0; i < mids.length; i++) { + Measurement m = (Measurement) it.next(); + mids[i] = m.getId(); + } + rtn.putAll(getAvailMan().getAggregateData(mids, begin, end)); + } return rtn; } Modified: trunk/src/org/hyperic/hq/measurement/server/session/MeasurementDAO.java =================================================================== --- trunk/src/org/hyperic/hq/measurement/server/session/MeasurementDAO.java 2008-09-17 00:21:14 UTC (rev 11173) +++ trunk/src/org/hyperic/hq/measurement/server/session/MeasurementDAO.java 2008-09-17 00:33:07 UTC (rev 11174) @@ -448,6 +448,17 @@ return query.list(); } + List findAvailMeasurements(Integer[] tids, Integer[] iids) { + String sql = new StringBuilder() + .append("select m from Measurement m ") + .append("join m.template t ") + .append("where m.instanceId in (:iids) AND t.id in (:tids) AND ") + .append(ALIAS_CLAUSE).toString(); + return getSession().createQuery(sql) + .setParameterList("iids", iids) + .setParameterList("tids", tids).list(); + } + /** * @param List<Integer> of resourceIds return List of Availability * Measurements which are children of the resourceIds |