/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2006-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) 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 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) 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 OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.web.vulnerability;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.opennms.core.utils.WebSecurityUtils;
import org.opennms.netmgt.model.OnmsSeverity;
import org.opennms.web.api.Util;
import org.opennms.web.vulnerability.filter.CreationDateAfterFilter;
import org.opennms.web.vulnerability.filter.CreationDateBeforeFilter;
import org.opennms.web.vulnerability.filter.Filter;
import org.opennms.web.vulnerability.filter.IPLikeFilter;
import org.opennms.web.vulnerability.filter.InterfaceFilter;
import org.opennms.web.vulnerability.filter.NegativeInterfaceFilter;
import org.opennms.web.vulnerability.filter.NegativeNodeFilter;
import org.opennms.web.vulnerability.filter.NegativePortFilter;
import org.opennms.web.vulnerability.filter.NegativeProtocolFilter;
import org.opennms.web.vulnerability.filter.NegativeSeverityFilter;
import org.opennms.web.vulnerability.filter.NodeFilter;
import org.opennms.web.vulnerability.filter.NodeNameLikeFilter;
import org.opennms.web.vulnerability.filter.PortFilter;
import org.opennms.web.vulnerability.filter.ProtocolFilter;
import org.opennms.web.vulnerability.filter.ResolvedDateAfterFilter;
import org.opennms.web.vulnerability.filter.ResolvedDateBeforeFilter;
import org.opennms.web.vulnerability.filter.SeverityFilter;
/**
* Convenient Java methods and constants for use in the vulnerability user
* interface.
*
* <p>
* <code>VulnerabilityUtil</code> is a place to put user interface-specific
* code that is common among many JSPs or servlets.
* </p>
*
* @author ranger
* @version $Id: $
* @since 1.8.1
*/
public abstract class VulnerabilityUtil extends Object {
/** Constant <code>labels</code> */
protected static final Map<OnmsSeverity, String> labels;
/** Constant <code>icons</code> */
protected static final Map<OnmsSeverity, String> icons;
/** Constant <code>sortStyles</code> */
protected static final Map<String, VulnerabilityFactory.SortStyle> sortStyles;
/** Constant <code>sortStylesString</code> */
protected static final Map<VulnerabilityFactory.SortStyle, String> sortStylesString;
/** Constant <code>resTypes</code> */
protected static final Map<String, VulnerabilityFactory.ResolutionType> resTypes;
/** Constant <code>resTypesString</code> */
protected static final Map<VulnerabilityFactory.ResolutionType, String> resTypesString;
/** Constant <code>severities</code> */
protected static final List<OnmsSeverity> severities;
/** Constant <code>FILTER_SERVLET_URL_BASE="vulnerability/list"</code> */
public static final String FILTER_SERVLET_URL_BASE = "vulnerability/list";
static {
// this lowest to highest order is mandatory, lots of code depends on it
severities = new ArrayList<OnmsSeverity>();
severities.add(OnmsSeverity.INDETERMINATE);
severities.add(OnmsSeverity.CLEARED);
severities.add(OnmsSeverity.NORMAL);
severities.add(OnmsSeverity.WARNING);
severities.add(OnmsSeverity.MINOR);
severities.add(OnmsSeverity.MAJOR);
severities.add(OnmsSeverity.CRITICAL);
labels = new HashMap<OnmsSeverity, String>();
labels.put(OnmsSeverity.INDETERMINATE, "Indeterminate");
labels.put(OnmsSeverity.CLEARED, "Cleared");
labels.put(OnmsSeverity.NORMAL, "Normal");
labels.put(OnmsSeverity.WARNING, "Warning");
labels.put(OnmsSeverity.MINOR, "Minor");
labels.put(OnmsSeverity.MAJOR, "Major");
labels.put(OnmsSeverity.CRITICAL, "Critical");
// note several of these are null, for those use no icon
icons = new HashMap<OnmsSeverity, String>();
icons.put(OnmsSeverity.INDETERMINATE, "images/alert_indeterminate_s.gif");
icons.put(OnmsSeverity.CLEARED, "images/alert_cleared_s.gif");
icons.put(OnmsSeverity.NORMAL, "images/alert_normal_s.gif");
icons.put(OnmsSeverity.WARNING, "images/alert_warning_s.gif");
icons.put(OnmsSeverity.MINOR, "images/alert_minor_s.gif");
icons.put(OnmsSeverity.MAJOR, "images/alert_major_s.gif");
icons.put(OnmsSeverity.CRITICAL, "images/alert_critical_s.gif");
sortStyles = new HashMap<String, VulnerabilityFactory.SortStyle>();
sortStyles.put("severity", VulnerabilityFactory.SortStyle.SEVERITY);
sortStyles.put("node", VulnerabilityFactory.SortStyle.NODE);
sortStyles.put("interface", VulnerabilityFactory.SortStyle.INTERFACE);
sortStyles.put("service", VulnerabilityFactory.SortStyle.SERVICE);
sortStyles.put("id", VulnerabilityFactory.SortStyle.ID);
sortStyles.put("ctime", VulnerabilityFactory.SortStyle.CREATE_TIME);
sortStyles.put("rtime", VulnerabilityFactory.SortStyle.RESOLVED_TIME);
sortStyles.put("port", VulnerabilityFactory.SortStyle.PORT);
sortStyles.put("protocol", VulnerabilityFactory.SortStyle.PROTOCOL);
sortStyles.put("rev_severity", VulnerabilityFactory.SortStyle.REVERSE_SEVERITY);
sortStyles.put("rev_node", VulnerabilityFactory.SortStyle.REVERSE_NODE);
sortStyles.put("rev_interface", VulnerabilityFactory.SortStyle.REVERSE_INTERFACE);
sortStyles.put("rev_service", VulnerabilityFactory.SortStyle.REVERSE_SERVICE);
sortStyles.put("rev_id", VulnerabilityFactory.SortStyle.REVERSE_ID);
sortStyles.put("rev_ctime", VulnerabilityFactory.SortStyle.REVERSE_CREATE_TIME);
sortStyles.put("rev_rtime", VulnerabilityFactory.SortStyle.REVERSE_RESOLVED_TIME);
sortStyles.put("rev_port", VulnerabilityFactory.SortStyle.REVERSE_PORT);
sortStyles.put("rev_protocol", VulnerabilityFactory.SortStyle.REVERSE_PROTOCOL);
sortStylesString = new HashMap<VulnerabilityFactory.SortStyle, String>();
sortStylesString.put(VulnerabilityFactory.SortStyle.SEVERITY, "severity");
sortStylesString.put(VulnerabilityFactory.SortStyle.NODE, "node");
sortStylesString.put(VulnerabilityFactory.SortStyle.INTERFACE, "interface");
sortStylesString.put(VulnerabilityFactory.SortStyle.SERVICE, "service");
sortStylesString.put(VulnerabilityFactory.SortStyle.ID, "id");
sortStylesString.put(VulnerabilityFactory.SortStyle.CREATE_TIME, "ctime");
sortStylesString.put(VulnerabilityFactory.SortStyle.RESOLVED_TIME, "rtime");
sortStylesString.put(VulnerabilityFactory.SortStyle.PORT, "port");
sortStylesString.put(VulnerabilityFactory.SortStyle.PROTOCOL, "protocol");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_SEVERITY, "rev_severity");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_NODE, "rev_node");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_INTERFACE, "rev_interface");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_SERVICE, "rev_service");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_ID, "rev_id");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_CREATE_TIME, "rev_ctime");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_RESOLVED_TIME, "rev_rtime");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_PORT, "rev_port");
sortStylesString.put(VulnerabilityFactory.SortStyle.REVERSE_PROTOCOL, "rev_protocol");
resTypes = new HashMap<String, VulnerabilityFactory.ResolutionType>();
resTypes.put("res", VulnerabilityFactory.ResolutionType.RESOLVED);
resTypes.put("open", VulnerabilityFactory.ResolutionType.OPEN);
resTypes.put("both", VulnerabilityFactory.ResolutionType.BOTH);
resTypesString = new HashMap<VulnerabilityFactory.ResolutionType, String>();
resTypesString.put(VulnerabilityFactory.ResolutionType.RESOLVED, "res");
resTypesString.put(VulnerabilityFactory.ResolutionType.OPEN, "open");
resTypesString.put(VulnerabilityFactory.ResolutionType.BOTH, "both");
}
/**
* Can return null, in that case, use no icon.
*
* @param severity a int.
* @return a {@link java.lang.String} object.
*/
public static String getSeverityIcon(int severity) {
return getSeverityIcon(new Integer(severity));
}
/**
* Can return null, in that case, use no icon.
*
* @param severity a {@link java.lang.Integer} object.
* @return a {@link java.lang.String} object.
*/
public static String getSeverityIcon(Integer severity) {
if (severity == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return icons.get(severity);
}
/**
* <p>getSortStyle</p>
*
* @param sortStyleString a {@link java.lang.String} object.
* @return a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
*/
public static VulnerabilityFactory.SortStyle getSortStyle(String sortStyleString) {
if (sortStyleString == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return sortStyles.get(sortStyleString.toLowerCase());
}
/**
* <p>getSortStyleString</p>
*
* @param sortStyle a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
* @return a {@link java.lang.String} object.
*/
public static String getSortStyleString(VulnerabilityFactory.SortStyle sortStyle) {
if (sortStyle == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return sortStylesString.get(sortStyle);
}
/**
* <p>getResolutionType</p>
*
* @param resTypeString a {@link java.lang.String} object.
* @return a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
*/
public static VulnerabilityFactory.ResolutionType getResolutionType(String resTypeString) {
if (resTypeString == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return resTypes.get(resTypeString.toLowerCase());
}
/**
* <p>getResolutionTypeString</p>
*
* @param resType a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
* @return a {@link java.lang.String} object.
*/
public static String getResolutionTypeString(VulnerabilityFactory.ResolutionType resType) {
if (resType == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return resTypesString.get(resType);
}
/**
* <p>getFilter</p>
*
* @param filterString a {@link java.lang.String} object.
* @return a {@link org.opennms.web.vulnerability.filter.Filter} object.
*/
public static Filter getFilter(String filterString, ServletContext servletContext) {
if (filterString == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
Filter filter = null;
StringTokenizer tokens = new StringTokenizer(filterString, "=");
String type;
String value;
try {
type = tokens.nextToken();
value = tokens.nextToken();
} catch (NoSuchElementException e) {
throw new IllegalArgumentException("Could not tokenize filter string: " + filterString);
}
if (type.equals(SeverityFilter.TYPE)) {
filter = new SeverityFilter(WebSecurityUtils.safeParseInt(value));
} else if (type.equals(NodeFilter.TYPE)) {
filter = new NodeFilter(WebSecurityUtils.safeParseInt(value), servletContext);
} else if (type.equals(NodeNameLikeFilter.TYPE)) {
filter = new NodeNameLikeFilter(value);
} else if (type.equals(InterfaceFilter.TYPE)) {
filter = new InterfaceFilter(value);
} else if (type.equals(NegativeSeverityFilter.TYPE)) {
filter = new NegativeSeverityFilter(WebSecurityUtils.safeParseInt(value));
} else if (type.equals(NegativeNodeFilter.TYPE)) {
filter = new NegativeNodeFilter(WebSecurityUtils.safeParseInt(value), servletContext);
} else if (type.equals(NegativeInterfaceFilter.TYPE)) {
filter = new NegativeInterfaceFilter(value);
} else if (type.equals(IPLikeFilter.TYPE)) {
filter = new IPLikeFilter(value);
} else if (type.equals(ProtocolFilter.TYPE)) {
filter = new ProtocolFilter(value);
} else if (type.equals(NegativeProtocolFilter.TYPE)) {
filter = new NegativeProtocolFilter(value);
} else if (type.equals(PortFilter.TYPE)) {
filter = new PortFilter(WebSecurityUtils.safeParseInt(value));
} else if (type.equals(NegativePortFilter.TYPE)) {
filter = new NegativePortFilter(WebSecurityUtils.safeParseInt(value));
} else if (type.equals(CreationDateBeforeFilter.TYPE)) {
filter = new CreationDateBeforeFilter(WebSecurityUtils.safeParseLong(value));
} else if (type.equals(CreationDateAfterFilter.TYPE)) {
filter = new CreationDateAfterFilter(WebSecurityUtils.safeParseLong(value));
} else if (type.equals(ResolvedDateBeforeFilter.TYPE)) {
filter = new ResolvedDateBeforeFilter(WebSecurityUtils.safeParseLong(value));
} else if (type.equals(ResolvedDateAfterFilter.TYPE)) {
filter = new ResolvedDateAfterFilter(WebSecurityUtils.safeParseLong(value));
}
/*
* else if( type.equals( ServiceFilter.TYPE )) { filter = new
* ServiceFilter( WebSecurityUtils.safeParseInt( value )); } else if( type.equals(
* NegativeServiceFilter.TYPE )) { filter = new NegativeServiceFilter(
* WebSecurityUtils.safeParseInt( value )); } else if( type.equals(
* LogMessageSubstringFilter.TYPE )) { filter = new
* LogMessageSubstringFilter( value ); } else if( type.equals(
* LogMessageMatchesAnyFilter.TYPE )) { filter = new
* LogMessageMatchesAnyFilter(value); }
*/
return filter;
}
/**
* <p>getFilterString</p>
*
* @param filter a {@link org.opennms.web.vulnerability.filter.Filter} object.
* @return a {@link java.lang.String} object.
*/
public static String getFilterString(Filter filter) {
if (filter == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return filter.getDescription();
}
/** Constant <code>LINK_IGNORES="new String[] { sortby, restype, limit, "{trunked}</code> */
protected static final String[] LINK_IGNORES = new String[] { "sortby", "restype", "limit", "multiple", "filter" };
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param sortStyle a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
* @param resType a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
* @param filters a {@link java.util.List} object.
* @param limit a int.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityFactory.SortStyle sortStyle, VulnerabilityFactory.ResolutionType resType, List<Filter> filters, int limit) {
if (request == null || sortStyle == null || resType == null || filters == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
if (limit < 1) {
throw new IllegalArgumentException("Cannot take a zero or negative limit value.");
}
Map<String, Object> additions = new HashMap<String, Object>();
additions.put("sortby", VulnerabilityUtil.getSortStyleString(sortStyle));
additions.put("restype", VulnerabilityUtil.getResolutionTypeString(resType));
additions.put("limit", Integer.toString(limit));
if (filters != null) {
String[] filterStrings = new String[filters.size()];
for (int i = 0; i < filters.size(); i++) {
filterStrings[i] = VulnerabilityUtil.getFilterString(filters.get(i));
}
additions.put("filter", filterStrings);
}
return FILTER_SERVLET_URL_BASE + "?" + Util.makeQueryString(request, additions, LINK_IGNORES, Util.IgnoreType.REQUEST_ONLY);
}
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityQueryParms parms) {
if (request == null || parms == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeLink(request, parms.sortStyle, parms.resType, parms.filters, parms.limit);
}
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param sortStyle a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityQueryParms parms, VulnerabilityFactory.SortStyle sortStyle) {
if (request == null || parms == null || sortStyle == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeLink(request, sortStyle, parms.resType, parms.filters, parms.limit);
}
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param resType a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityQueryParms parms, VulnerabilityFactory.ResolutionType resType) {
if (request == null || parms == null || resType == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeLink(request, parms.sortStyle, resType, parms.filters, parms.limit);
}
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param filters a {@link java.util.List} object.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityQueryParms parms, List<Filter> filters) {
if (request == null || parms == null || filters == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeLink(request, parms.sortStyle, parms.resType, filters, parms.limit);
}
/**
* <p>makeLink</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param filter a {@link org.opennms.web.vulnerability.filter.Filter} object.
* @param add a boolean.
* @return a {@link java.lang.String} object.
*/
public static String makeLink(HttpServletRequest request, VulnerabilityQueryParms parms, Filter filter, boolean add) {
if (request == null || parms == null || filter == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
List<Filter> newList = new ArrayList<Filter>(parms.filters);
if (add) {
newList.add(filter);
} else {
newList.remove(filter);
}
return makeLink(request, parms.sortStyle, parms.resType, newList, parms.limit);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param sortStyle a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
* @param resType a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
* @param filters a {@link java.util.List} object.
* @param limit a int.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityFactory.SortStyle sortStyle, VulnerabilityFactory.ResolutionType resType, List<Filter> filters, int limit) {
if (request == null || sortStyle == null || resType == null || filters == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
if (limit < 1) {
throw new IllegalArgumentException("Cannot take a zero or negative limit value.");
}
Map<String, Object> additions = new HashMap<String, Object>();
additions.put("sortby", VulnerabilityUtil.getSortStyleString(sortStyle));
additions.put("restype", VulnerabilityUtil.getResolutionTypeString(resType));
additions.put("limit", Integer.toString(limit));
if (filters != null) {
String[] filterStrings = new String[filters.size()];
for (int i = 0; i < filters.size(); i++) {
filterStrings[i] = VulnerabilityUtil.getFilterString(filters.get(i));
}
additions.put("filter", filterStrings);
}
return Util.makeHiddenTags(request, additions, LINK_IGNORES, Util.IgnoreType.REQUEST_ONLY);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityQueryParms parms) {
if (request == null || parms == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeHiddenTags(request, parms.sortStyle, parms.resType, parms.filters, parms.limit);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param sortStyle a {@link org.opennms.web.vulnerability.VulnerabilityFactory.SortStyle} object.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityQueryParms parms, VulnerabilityFactory.SortStyle sortStyle) {
if (request == null || parms == null || sortStyle == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeHiddenTags(request, sortStyle, parms.resType, parms.filters, parms.limit);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param resType a {@link org.opennms.web.vulnerability.VulnerabilityFactory.ResolutionType} object.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityQueryParms parms, VulnerabilityFactory.ResolutionType resType) {
if (request == null || parms == null || resType == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeHiddenTags(request, parms.sortStyle, resType, parms.filters, parms.limit);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param filters a {@link java.util.List} object.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityQueryParms parms, List<Filter> filters) {
if (request == null || parms == null || filters == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
return makeHiddenTags(request, parms.sortStyle, parms.resType, filters, parms.limit);
}
/**
* <p>makeHiddenTags</p>
*
* @param request a {@link javax.servlet.http.HttpServletRequest} object.
* @param parms a {@link org.opennms.web.vulnerability.VulnerabilityQueryParms} object.
* @param filter a {@link org.opennms.web.vulnerability.filter.Filter} object.
* @param add a boolean.
* @return a {@link java.lang.String} object.
*/
public static String makeHiddenTags(HttpServletRequest request, VulnerabilityQueryParms parms, Filter filter, boolean add) {
if (request == null || parms == null || filter == null) {
throw new IllegalArgumentException("Cannot take null parameters.");
}
List<Filter> newList = new ArrayList<Filter>(parms.filters);
if (add) {
newList.add(filter);
} else {
newList.remove(filter);
}
return makeHiddenTags(request, parms.sortStyle, parms.resType, newList, parms.limit);
}
}