in src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java [193:225]
public int locate(Rule rule, int startLocation, boolean searchForward) {
List filteredListCopy;
synchronized (mutex) {
filteredListCopy = new ArrayList(filteredList);
}
if (searchForward) {
for (int i = startLocation; i < filteredListCopy.size(); i++) {
if (rule.evaluate(((LoggingEventWrapper) filteredListCopy.get(i)).getLoggingEvent(), null)) {
return i;
}
}
//if there was no match, start at row zero and go to startLocation
for (int i = 0; i < startLocation; i++) {
if (rule.evaluate(((LoggingEventWrapper) filteredListCopy.get(i)).getLoggingEvent(), null)) {
return i;
}
}
} else {
for (int i = startLocation; i > -1; i--) {
if (rule.evaluate(((LoggingEventWrapper) filteredListCopy.get(i)).getLoggingEvent(), null)) {
return i;
}
}
//if there was no match, start at row list.size() - 1 and go to startLocation
for (int i = filteredListCopy.size() - 1; i > startLocation; i--) {
if (rule.evaluate(((LoggingEventWrapper) filteredListCopy.get(i)).getLoggingEvent(), null)) {
return i;
}
}
}
return -1;
}