Search in sources :

Example 1 with TimeChunk

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;
}
Also used : OnmsLocationSpecificStatus(org.opennms.netmgt.model.OnmsLocationSpecificStatus) DecimalFormat(java.text.DecimalFormat) ArrayList(java.util.ArrayList) OnmsLocationAvailDefinition(org.opennms.netmgt.model.OnmsLocationAvailDefinition) OnmsApplication(org.opennms.netmgt.model.OnmsApplication) OnmsLocationAvailDataPoint(org.opennms.netmgt.model.OnmsLocationAvailDataPoint) OnmsLocationAvailDataPoint(org.opennms.netmgt.model.OnmsLocationAvailDataPoint) Date(java.util.Date) TimeChunk(org.opennms.web.rest.v1.support.TimeChunker.TimeChunk) OnmsLocationAvailDefinitionList(org.opennms.netmgt.model.OnmsLocationAvailDefinitionList)

Aggregations

DecimalFormat (java.text.DecimalFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 OnmsApplication (org.opennms.netmgt.model.OnmsApplication)1 OnmsLocationAvailDataPoint (org.opennms.netmgt.model.OnmsLocationAvailDataPoint)1 OnmsLocationAvailDefinition (org.opennms.netmgt.model.OnmsLocationAvailDefinition)1 OnmsLocationAvailDefinitionList (org.opennms.netmgt.model.OnmsLocationAvailDefinitionList)1 OnmsLocationSpecificStatus (org.opennms.netmgt.model.OnmsLocationSpecificStatus)1 TimeChunk (org.opennms.web.rest.v1.support.TimeChunker.TimeChunk)1