All pastes #254236 Raw Edit

Unnamed

public text v1 · immutable
#254236 ·published 2006-11-21 17:26 UTC
rendered paste body
package org.opennms.web.svclayer.outage;

import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.extremecomponents.table.context.Context;
import org.extremecomponents.table.context.HttpServletRequestContext;
import org.extremecomponents.table.limit.Limit;
import org.extremecomponents.table.limit.LimitFactory;
import org.extremecomponents.table.limit.TableLimit;
import org.extremecomponents.table.limit.TableLimitFactory;
import org.opennms.netmgt.model.OnmsIpInterface;
import org.opennms.netmgt.model.OnmsMonitoredService;
import org.opennms.netmgt.model.OnmsOutage;
import org.opennms.netmgt.model.OnmsServiceType;

public class CurrentOutagesBuilder {

    Collection<OnmsOutage> foundOutages;

    Collection<OnmsOutage> viewOutages;

    SuppressOutages m_suppress = new SuppressOutages();

    private OutageListService m_cview = new OutageListBuilder();

    private static final int ROW_LIMIT = 25;

    OutageService m_outageService;

    public void setOutageService(OutageService service) {
        m_outageService = service;
    }

    public Map<String, Object> getOutages(HttpServletRequest request) {

        Context context = new HttpServletRequestContext(request);
        LimitFactory limitFactory = new TableLimitFactory(context,
                                                          "tabledata");
        Limit limit = new TableLimit(limitFactory);

        CurrentOutageParseResponse.findSelectedOutagesIDs(request,
                                                          m_outageService);

        Map<String, Object> myModel = new HashMap<String, Object>();
        Integer totalRows = m_outageService.getCurrentOutageCount();

        myModel.put("request", limit.toString());

        myModel.put("all_params", request.getParameterNames().toString());
        if (limit.getPage() == 1) {
            // no offset set
            myModel.put("rowStart", 0);
            context.setRequestAttribute("rowStart", 0);
            context.setRequestAttribute("rowEnd", ROW_LIMIT);
            myModel.put("rowEnd", ROW_LIMIT);

            if (limit.getSort().getProperty() == null) {
                foundOutages = m_outageService.getCurrentOutagesByRange(
                                                                        1,
                                                                        ROW_LIMIT,
                                                                        "id",
                                                                        "asc");

            } else {
                foundOutages = m_outageService.getCurrentOutagesByRange(
                                                                        0,
                                                                        ROW_LIMIT,
                                                                        "id",
                                                                        "asc");
                // "outages.nodeid,outages."
                // + limit.getSort().getProperty(),
                // limit.getSort().getSortOrder());

            }
            myModel.put("begin", 0);
            myModel.put("end", ROW_LIMIT);

        } else {

            Integer rowstart = null;
            Integer rowend = null;

            // quirky situation... - as we started on 0 (zero)
            rowstart = ((limit.getPage() * ROW_LIMIT + 1) - ROW_LIMIT);
            rowend = (ROW_LIMIT);
            myModel.put("begin", rowstart);
            myModel.put("end", rowend);

            if (limit.getSort().getProperty() == null) {
                foundOutages = m_outageService.getCurrentOutagesByRange(
                                                                        rowstart,
                                                                        rowend,
                                                                        "id",
                                                                        "asc");

            } else {

                foundOutages = m_outageService.getCurrentOutagesByRange(
                                                                        rowstart,
                                                                        rowend,
                                                                        "id",
                                                                        "asc");
                // "outages.nodeid,outages."
                // "id"
                // + limit.getSort().getProperty()
                // + " ",
                // limit.getSort().getSortOrder());

            }
        }

        // Pretty smart to build the collection after any suppressions.....
        // Collection theTable = m_cview.theTable(foundOutages);

        List theTable = new LinkedList();
        Locale locale = Locale.getDefault();
        SimpleDateFormat formatter = new SimpleDateFormat(
                                                          "dd/MM/yyyy HH:mm:ss",
                                                          locale);

        for (Iterator iter = foundOutages.iterator(); iter.hasNext();) {
            OnmsOutage outage = (OnmsOutage) iter.next();
            OnmsMonitoredService monitoredService = outage.getMonitoredService();
            OnmsServiceType serviceType = monitoredService.getServiceType();
            OnmsIpInterface ipInterface = monitoredService.getIpInterface();

            // ips.put(outage.getId(), ipInterface.getIpAddress());
            // nodes.put(outage.getId(), ipInterface.getNode().getLabel());
            // nodeids.put(outage.getId(), monitoredService.getNodeId());
            // services.put(outage.getId(), serviceType.getName());

            Map outagerow = new HashMap();
            outagerow.put("outageid", (String) outage.getId().toString());
            outagerow.put("node", ipInterface.getNode().getLabel());
            outagerow.put("nodeid",
                          (String) monitoredService.getNodeId().toString());
            outagerow.put("ipaddr", ipInterface.getIpAddress());
            outagerow.put("interfaceid", ipInterface.getId());
            outagerow.put("service", serviceType.getName());
            outagerow.put("serviceid", serviceType.getId());
            outagerow.put("eventid", outage.getServiceLostEvent().getId());

            // if (outage.getIfLostService() != null) {
            // outagerow.put("down",
            // formatter.format(outage.getIfLostService()));
            // }

            if (outage.getIfLostService() != null) {
                outagerow.put("iflostservice",
                              formatter.format(outage.getIfLostService()));

                // Long format for searches

                outagerow.put("iflostservicelong",
                              (Long) outage.getIfLostService().getTime());

                // Format the date-output.

            }

            if (outage.getIfRegainedService() != null) {
                outagerow.put("ifregainedservice",
                              formatter.format(outage.getIfRegainedService()));

                outagerow.put("ifregainedservicelong",
                              (Long) outage.getIfRegainedService().getTime());
            }

            if (outage.getSuppressTime() != null) {
                outagerow.put("suppresstime", outage.getSuppressTime());
            }

            outagerow.put("suppressedby", outage.getSuppressedBy());

            // Build a droplist for this outage

            theTable.add(outagerow);
        }

        myModel.put("tabledata", theTable);
        myModel.put("totalRows", totalRows);

        myModel.put(
                    "selected_outages",
                    CurrentOutageParseResponse.findSelectedOutagesIDs(
                                                                      request,
                                                                      m_outageService));

        return myModel;

    }
}