eventqueryservlet.java
来自「opennms得相关源码 请大家看看」· Java 代码 · 共 272 行
JAVA
272 行
//// This file is part of the OpenNMS(R) Application.//// OpenNMS(R) is Copyright (C) 2002-2003 The OpenNMS Group, Inc. All rights reserved.// OpenNMS(R) is a derivative work, containing both original code, included code and modified// code that was published under the GNU General Public License. Copyrights for modified // and included code are below.//// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.//// Copyright (C) 1999-2001 Oculan Corp. All rights reserved.//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.//// For more information contact:// OpenNMS Licensing <license@opennms.org>// http://www.opennms.org/// http://www.opennms.com///package org.opennms.web.event;import java.io.IOException;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.opennms.web.MissingParameterException;import org.opennms.web.Util;import org.opennms.web.event.filter.AfterDateFilter;import org.opennms.web.event.filter.BeforeDateFilter;import org.opennms.web.event.filter.Filter;import org.opennms.web.event.filter.IPLikeFilter;import org.opennms.web.event.filter.LogMessageMatchesAnyFilter;import org.opennms.web.event.filter.LogMessageSubstringFilter;import org.opennms.web.event.filter.NodeNameLikeFilter;import org.opennms.web.event.filter.ServiceFilter;import org.opennms.web.event.filter.SeverityFilter;/** * This servlet takes a large and specific request parameter set and maps it to * the more robust "filter" parameter set of the * {@link EventFilterServlet EventFilterServlet}via a redirect. * * @author <A HREF="mailto:larry@opennms.org">Lawrence Karnowski </A> * @author <A HREF="http://www.opennms.org/">OpenNMS </A> */public class EventQueryServlet extends HttpServlet { /** * The list of parameters that are extracted by this servlet and not passed * on to the {@link EventFilterServlet EventFilterServlet}. */ protected static String[] IGNORE_LIST = new String[] { "msgsub", "msgmatchany", "nodenamelike", "service", "iplike", "severity", "relativetime", "usebeforetime", "beforehour", "beforeminute", "beforeampm", "beforedate", "beforemonth", "beforeyear", "useaftertime", "afterhour", "afterminute", "afterampm", "afterdate", "aftermonth", "afteryear" }; /** * The URL for the {@link EventFilterServlet EventFilterServlet}. The * default is "list." This URL is a sibling URL, so it is relative to the * URL directory that was used to call this servlet (usually "event/"). */ protected String redirectUrl = "filter"; public void init() throws ServletException { ServletConfig config = this.getServletConfig(); if (config.getInitParameter("redirect.url") != null) { this.redirectUrl = config.getInitParameter("redirect.url"); } } /** * Extracts the key parameters from the parameter set, translates them into * filter-based parameters, and then passes the modified parameter set to * the {@link EventFilterServlet EventFilterServlet}. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ArrayList filterArray = new ArrayList(); // convenient syntax for LogMessageSubstringFilter String msgSubstring = request.getParameter("msgsub"); if (msgSubstring != null && msgSubstring.length() > 0) { filterArray.add(new LogMessageSubstringFilter(msgSubstring)); } // convenient syntax for LogMessageMatchesAnyFilter String msgMatchAny = request.getParameter("msgmatchany"); if (msgMatchAny != null && msgMatchAny.length() > 0) { filterArray.add(new LogMessageMatchesAnyFilter(msgMatchAny)); } // convenient syntax for NodeNameContainingFilter String nodeNameLike = request.getParameter("nodenamelike"); if (nodeNameLike != null && nodeNameLike.length() > 0) { filterArray.add(new NodeNameLikeFilter(nodeNameLike)); } // convenient syntax for ServiceFilter String service = request.getParameter("service"); if (service != null && !service.equals(EventUtil.ANY_SERVICES_OPTION)) { filterArray.add(new ServiceFilter(Integer.parseInt(service))); } // convenient syntax for IPLikeFilter String ipLikePattern = request.getParameter("iplike"); if (ipLikePattern != null && !ipLikePattern.equals("")) { filterArray.add(new IPLikeFilter(ipLikePattern)); } // convenient syntax for SeverityFilter String severity = request.getParameter("severity"); if (severity != null && !severity.equals(EventUtil.ANY_SEVERITIES_OPTION)) { filterArray.add(new SeverityFilter(Integer.parseInt(severity))); } // convenient syntax for AfterDateFilter as relative to current time String relativeTime = request.getParameter("relativetime"); if (relativeTime != null && !relativeTime.equals(EventUtil.ANY_RELATIVE_TIMES_OPTION)) { try { filterArray.add(EventUtil.getRelativeTimeFilter(Integer.parseInt(relativeTime))); } catch (IllegalArgumentException e) { // ignore the relative time if it is an illegal value this.log("Illegal relativetime value", e); } } String useBeforeTime = request.getParameter("usebeforetime"); if (useBeforeTime != null && useBeforeTime.equals("1")) { try { filterArray.add(this.getBeforeDateFilter(request)); } catch (IllegalArgumentException e) { // ignore the before time if it is an illegal value this.log("Illegal before time value", e); } catch (MissingParameterException e) { throw new ServletException(e); } } String useAfterTime = request.getParameter("useaftertime"); if (useAfterTime != null && useAfterTime.equals("1")) { try { filterArray.add(this.getAfterDateFilter(request)); } catch (IllegalArgumentException e) { // ignore the after time if it is an illegal value this.log("Illegal after time value", e); } catch (MissingParameterException e) { throw new ServletException(e); } } String queryString = ""; if (filterArray.size() > 0) { String[] filterStrings = new String[filterArray.size()]; for (int i = 0; i < filterStrings.length; i++) { Filter filter = (Filter) filterArray.get(i); filterStrings[i] = EventUtil.getFilterString(filter); } HashMap paramAdditions = new HashMap(); paramAdditions.put("filter", filterStrings); queryString = Util.makeQueryString(request, paramAdditions, IGNORE_LIST); } else { queryString = Util.makeQueryString(request, IGNORE_LIST); } response.sendRedirect(this.redirectUrl + "?" + queryString); } protected BeforeDateFilter getBeforeDateFilter(HttpServletRequest request) { Date beforeDate = this.getDateFromRequest(request, "before"); return (new BeforeDateFilter(beforeDate)); } protected AfterDateFilter getAfterDateFilter(HttpServletRequest request) { Date afterDate = this.getDateFromRequest(request, "after"); return (new AfterDateFilter(afterDate)); } protected Date getDateFromRequest(HttpServletRequest request, String prefix) throws MissingParameterException { if (request == null || prefix == null) { throw new IllegalArgumentException("Cannot take null parameters."); } Calendar cal = Calendar.getInstance(); // be lenient to handle the inputs easier // read the java.util.Calendar javadoc for more info cal.setLenient(true); // hour, from 1-12 String hourString = request.getParameter(prefix + "hour"); if (hourString == null) { throw new MissingParameterException(prefix + "hour", this.getRequiredDateFields(prefix)); } cal.set(Calendar.HOUR, Integer.parseInt(hourString)); // minute, from 0-59 String minuteString = request.getParameter(prefix + "minute"); if (minuteString == null) { throw new MissingParameterException(prefix + "minute", this.getRequiredDateFields(prefix)); } cal.set(Calendar.MINUTE, Integer.parseInt(minuteString)); // AM/PM, either AM or PM String amPmString = request.getParameter(prefix + "ampm"); if (amPmString == null) { throw new MissingParameterException(prefix + "ampm", this.getRequiredDateFields(prefix)); } if (amPmString.equalsIgnoreCase("am")) { cal.set(Calendar.AM_PM, Calendar.AM); } else if (amPmString.equalsIgnoreCase("pm")) { cal.set(Calendar.AM_PM, Calendar.PM); } else { throw new IllegalArgumentException("Illegal AM/PM value: " + amPmString); } // month, 0-11 (Jan-Dec) String monthString = request.getParameter(prefix + "month"); if (monthString == null) { throw new MissingParameterException(prefix + "month", this.getRequiredDateFields(prefix)); } cal.set(Calendar.MONTH, Integer.parseInt(monthString)); // date, 1-31 String dateString = request.getParameter(prefix + "date"); if (dateString == null) { throw new MissingParameterException(prefix + "date", this.getRequiredDateFields(prefix)); } cal.set(Calendar.DATE, Integer.parseInt(dateString)); // year String yearString = request.getParameter(prefix + "year"); if (yearString == null) { throw new MissingParameterException(prefix + "year", this.getRequiredDateFields(prefix)); } cal.set(Calendar.YEAR, Integer.parseInt(yearString)); return cal.getTime(); } protected String[] getRequiredDateFields(String prefix) { return new String[] { prefix + "hour", prefix + "minute", prefix + "ampm", prefix + "date", prefix + "month", prefix + "year" }; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?