public int locate()

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;
    }