/* * Copyright (C) 2015 - EfficiOS Inc., Alexandre Montplaisir * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License, version 2.1 only, * as published by the Free Software Foundation. * * This library 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 Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.lttng.ust.agent.session; /** * Event filtering rule present in a tracing session. * * It typically comes from a "lttng enable-event" command, and contains a * domain, event name, log level and filter string. * * @author Alexandre Montplaisir */ public class EventRule { private final String eventName; private final LogLevelSelector logLevelSelector; private final String filterString; /** * Constructor. * * @param eventName * The name of the tracepoint * @param logLevelSelector * The log level of the event rule * @param filterString * The filtering string. May be null if there is no extra filter. */ public EventRule(String eventName, LogLevelSelector logLevelSelector, String filterString) { this.eventName = eventName; this.logLevelSelector = logLevelSelector; this.filterString = filterString; } /** * Get the event name of this rule. * * @return The event name */ public String getEventName() { return eventName; } /** * Get the log level filter configuration of the rule. * * @return The log level selector */ public LogLevelSelector getLogLevelSelector() { return logLevelSelector; } /** * Get the filter string associated with this rule. * * @return The filter string, may be null for no filter string. */ public String getFilterString() { return filterString; } // ------------------------------------------------------------------------ // Methods from Object // ------------------------------------------------------------------------ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((eventName == null) ? 0 : eventName.hashCode()); result = prime * result + ((filterString == null) ? 0 : filterString.hashCode()); result = prime * result + ((logLevelSelector == null) ? 0 : logLevelSelector.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } EventRule other = (EventRule) obj; if (eventName == null) { if (other.eventName != null) { return false; } } else if (!eventName.equals(other.eventName)) { return false; } /* else, continue */ if (filterString == null) { if (other.filterString != null) { return false; } } else if (!filterString.equals(other.filterString)) { return false; } /* else, continue */ if (logLevelSelector == null) { if (other.logLevelSelector != null) { return false; } } else if (!logLevelSelector.equals(other.logLevelSelector)) { return false; } /* else, continue */ return true; } @Override public String toString() { return "Event name = " + getEventName() + ", Log level selector = (" + getLogLevelSelector().toString() + ")" + ", Filter string = " + getFilterString(); } }