Search in sources :

Example 6 with Outage

use of org.opennms.web.outage.Outage in project opennms by OpenNMS.

the class OutageFilterController method handleRequestInternal.

/**
 * {@inheritDoc}
 *
 * Parses the query string to determine what types of filters to use
 * (for example, what to filter on or sort by), then does the database query
 * (through the OutageFactory) and then forwards the results to a JSP for
 * display.
 *
 * <p>
 * Sets request attributes for the forwardee JSP (or whatever gets called).
 * </p>
 */
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String display = request.getParameter("display");
    // handle the style sort parameter
    String sortStyleString = request.getParameter("sortby");
    SortStyle sortStyle = m_defaultSortStyle;
    if (sortStyleString != null) {
        SortStyle temp = SortStyle.getSortStyle(sortStyleString);
        if (temp != null) {
            sortStyle = temp;
        }
    }
    // handle the outage type parameter
    String outageTypeString = request.getParameter("outtype");
    OutageType outageType = m_defaultOutageType;
    if (outageTypeString != null) {
        OutageType temp = OutageType.getOutageType(outageTypeString);
        if (temp != null) {
            outageType = temp;
        } else {
            try {
                // handle old URLs which used numeric constants
                int outageTypeInt = Integer.parseInt(outageTypeString);
                outageType = OutageType.values()[outageTypeInt - 1];
            } catch (Throwable e) {
            // nothing else to try, leave it at the default
            }
        }
    }
    // handle the filter parameters
    String[] filterStrings = request.getParameterValues("filter");
    List<Filter> filterList = new ArrayList<>();
    if (filterStrings != null) {
        for (String filterString : filterStrings) {
            Filter filter = OutageUtil.getFilter(filterString, getServletContext());
            if (filter != null) {
                filterList.add(filter);
            }
        }
    }
    // handle the optional limit parameter
    String limitString = request.getParameter("limit");
    int limit = "long".equals(display) ? getDefaultLongLimit() : getDefaultShortLimit();
    if (limitString != null) {
        try {
            int newlimit = WebSecurityUtils.safeParseInt(limitString);
            if (newlimit > 0) {
                limit = newlimit;
            }
        } catch (NumberFormatException e) {
        // do nothing, the default is aready set
        }
    }
    // handle the optional multiple parameter
    String multipleString = request.getParameter("multiple");
    int multiple = DEFAULT_MULTIPLE;
    if (multipleString != null) {
        try {
            multiple = Math.max(0, WebSecurityUtils.safeParseInt(multipleString));
        } catch (NumberFormatException e) {
        }
    }
    // put the parameters in a convenient struct
    Filter[] filters = filterList.toArray(new Filter[0]);
    OutageQueryParms parms = new OutageQueryParms();
    parms.outageType = outageType;
    parms.filters = filterList;
    parms.limit = limit;
    parms.multiple = multiple;
    parms.sortStyle = sortStyle;
    OutageCriteria queryCriteria = new OutageCriteria(filters, sortStyle, outageType, limit, limit * multiple);
    OutageCriteria countCriteria = new OutageCriteria(outageType, filters);
    Outage[] outages = m_webOutageRepository.getMatchingOutages(queryCriteria);
    // get the total outage count
    int outageCount = m_webOutageRepository.countMatchingOutages(countCriteria);
    ModelAndView modelAndView = new ModelAndView(getSuccessView());
    modelAndView.addObject("outages", outages);
    modelAndView.addObject("outageCount", outageCount);
    modelAndView.addObject("parms", parms);
    return modelAndView;
}
Also used : SortStyle(org.opennms.web.outage.SortStyle) OutageType(org.opennms.web.outage.OutageType) OutageQueryParms(org.opennms.web.outage.OutageQueryParms) Outage(org.opennms.web.outage.Outage) ArrayList(java.util.ArrayList) ModelAndView(org.springframework.web.servlet.ModelAndView) OutageCriteria(org.opennms.web.outage.filter.OutageCriteria) Filter(org.opennms.web.filter.Filter)

Example 7 with Outage

use of org.opennms.web.outage.Outage in project opennms by OpenNMS.

the class ServiceOutagesController method handleRequestInternal.

/**
 * {@inheritDoc}
 */
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
    Service service = ElementUtil.getServiceByParams(request, getServletContext());
    Outage[] outages = new Outage[0];
    if (service.getNodeId() > 0 && service.getIpAddress() != null && service.getServiceId() > 0) {
        List<Filter> filters = new ArrayList<>();
        filters.add(new InterfaceFilter(service.getIpAddress()));
        filters.add(new NodeFilter(service.getNodeId(), getServletContext()));
        filters.add(new ServiceFilter(service.getServiceId(), getServletContext()));
        filters.add(new RecentOutagesFilter());
        OutageCriteria criteria = new OutageCriteria(filters.toArray(new Filter[0]), SortStyle.ID, null, -1, -1);
        outages = m_webOutageRepository.getMatchingOutages(criteria);
    }
    ModelAndView modelAndView = new ModelAndView(getSuccessView());
    modelAndView.addObject("serviceId", service.getServiceId());
    modelAndView.addObject("outages", outages);
    return modelAndView;
}
Also used : ServiceFilter(org.opennms.web.outage.filter.ServiceFilter) InterfaceFilter(org.opennms.web.outage.filter.InterfaceFilter) Outage(org.opennms.web.outage.Outage) Filter(org.opennms.web.filter.Filter) RecentOutagesFilter(org.opennms.web.outage.filter.RecentOutagesFilter) ServiceFilter(org.opennms.web.outage.filter.ServiceFilter) NodeFilter(org.opennms.web.outage.filter.NodeFilter) InterfaceFilter(org.opennms.web.outage.filter.InterfaceFilter) ArrayList(java.util.ArrayList) ModelAndView(org.springframework.web.servlet.ModelAndView) Service(org.opennms.web.element.Service) OutageCriteria(org.opennms.web.outage.filter.OutageCriteria) RecentOutagesFilter(org.opennms.web.outage.filter.RecentOutagesFilter) NodeFilter(org.opennms.web.outage.filter.NodeFilter)

Example 8 with Outage

use of org.opennms.web.outage.Outage in project opennms by OpenNMS.

the class WebOutageRepositoryFilterIT method testRegainedServiceDateAfterFilter.

@Test
// Relies on records created in @Before so we need a fresh database
@JUnitTemporaryDatabase
public void testRegainedServiceDateAfterFilter() {
    OnmsMonitoredService svc2 = m_dbPopulator.getMonitoredServiceDao().get(m_dbPopulator.getNode2().getId(), InetAddressUtils.addr("192.168.2.1"), "ICMP");
    // This requires every test method to have a new database instance :/
    OnmsEvent event = m_dbPopulator.getEventDao().get(1);
    // Put a resolved outage into the database so that one will match the
    // filter below
    OnmsOutage resolvedToday = new OnmsOutage(new Date(), new Date(), event, event, svc2, null, null);
    m_dbPopulator.getOutageDao().save(resolvedToday);
    m_dbPopulator.getOutageDao().flush();
    RegainedServiceDateAfterFilter filter = new RegainedServiceDateAfterFilter(yesterday());
    OutageCriteria criteria = new OutageCriteria(filter);
    Outage[] outages = m_daoOutageRepo.getMatchingOutages(criteria);
    assertEquals(1, outages.length);
}
Also used : OnmsEvent(org.opennms.netmgt.model.OnmsEvent) OnmsOutage(org.opennms.netmgt.model.OnmsOutage) Outage(org.opennms.web.outage.Outage) OnmsOutage(org.opennms.netmgt.model.OnmsOutage) Date(java.util.Date) OnmsMonitoredService(org.opennms.netmgt.model.OnmsMonitoredService) Test(org.junit.Test) JUnitTemporaryDatabase(org.opennms.core.test.db.annotations.JUnitTemporaryDatabase)

Aggregations

Outage (org.opennms.web.outage.Outage)8 ModelAndView (org.springframework.web.servlet.ModelAndView)5 ArrayList (java.util.ArrayList)4 Filter (org.opennms.web.filter.Filter)4 OutageCriteria (org.opennms.web.outage.filter.OutageCriteria)4 Date (java.util.Date)3 Test (org.junit.Test)3 JUnitTemporaryDatabase (org.opennms.core.test.db.annotations.JUnitTemporaryDatabase)3 OnmsOutage (org.opennms.netmgt.model.OnmsOutage)3 NodeFilter (org.opennms.web.outage.filter.NodeFilter)3 RecentOutagesFilter (org.opennms.web.outage.filter.RecentOutagesFilter)3 InterfaceFilter (org.opennms.web.outage.filter.InterfaceFilter)2 OnmsEvent (org.opennms.netmgt.model.OnmsEvent)1 OnmsMonitoredService (org.opennms.netmgt.model.OnmsMonitoredService)1 Service (org.opennms.web.element.Service)1 OutageIdNotFoundException (org.opennms.web.outage.OutageIdNotFoundException)1 OutageQueryParms (org.opennms.web.outage.OutageQueryParms)1 OutageType (org.opennms.web.outage.OutageType)1 SortStyle (org.opennms.web.outage.SortStyle)1 ServiceFilter (org.opennms.web.outage.filter.ServiceFilter)1