use of org.opennms.web.rest.v1.support.TimeChunker.TimeChunk in project opennms by OpenNMS.
the class RemotePollerAvailabilityService method getAvailabilityList.
/**
* @param timeChunker
* @param sortedApplications
* @param selectedMonitors
* @param selectedNodes
* @return
*/
private OnmsLocationAvailDefinitionList getAvailabilityList(TimeChunker timeChunker, List<OnmsApplication> sortedApplications, Collection<OnmsLocationMonitor> selectedMonitors, Collection<OnmsNode> selectedNodes) {
OnmsLocationAvailDefinitionList availList = new OnmsLocationAvailDefinitionList();
List<String> names = new ArrayList<String>(sortedApplications.size());
for (OnmsApplication app : sortedApplications) {
names.add(app.getName());
}
Collection<OnmsLocationSpecificStatus> statusesPeriod = m_locationMonitorDao.getStatusChangesBetweenForApplications(timeChunker.getStartDate(), timeChunker.getEndDate(), names);
AvailCalculator availCalc = new AvailCalculator(timeChunker);
removeUnneededMonitors(statusesPeriod, selectedMonitors);
removeUnneededServices(statusesPeriod, selectedNodes);
for (OnmsLocationSpecificStatus statusChange : statusesPeriod) {
availCalc.onStatusChange(statusChange);
}
int counter = 0;
for (int i = 0; i < timeChunker.getSegmentCount(); i++) {
counter++;
TimeChunk timeChunk = timeChunker.getAt(i);
OnmsLocationAvailDataPoint point = new OnmsLocationAvailDataPoint();
point.setTime(timeChunk.getEndDate());
for (OnmsApplication application : sortedApplications) {
double percentage = availCalc.getAvailabilityFor(m_monitoredServiceDao.findByApplication(application), i);
String strPercent = new DecimalFormat("0.0").format(percentage * 100);
point.addAvailDefinition(new OnmsLocationAvailDefinition(application.getName(), strPercent));
}
availList.add(point);
}
System.err.println(new Date() + "After Calculations total loops: " + counter);
return availList;
}
Aggregations