Search in sources :

Example 1 with OutageQueryParms

use of org.opennms.web.outage.OutageQueryParms 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<Filter>();
    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)

Aggregations

ArrayList (java.util.ArrayList)1 Filter (org.opennms.web.filter.Filter)1 Outage (org.opennms.web.outage.Outage)1 OutageQueryParms (org.opennms.web.outage.OutageQueryParms)1 OutageType (org.opennms.web.outage.OutageType)1 SortStyle (org.opennms.web.outage.SortStyle)1 OutageCriteria (org.opennms.web.outage.filter.OutageCriteria)1 ModelAndView (org.springframework.web.servlet.ModelAndView)1