public boolean doFilters(String line) { if (filters == null) return true; boolean filterOK = true; // if false: skip this row for (int f = 0; f < filters.length && filterOK; f++) { TextFileFilter filter = filters[f]; if (filter.getFilterString() != null && filter.getFilterString().length() > 0) { int from = filter.getFilterPosition(); if (from >= 0) { int to = from + filter.getFilterString().length(); if (line.length() >= from && line.length() >= to) { String sub = line.substring(filter.getFilterPosition(), to); if (sub.equalsIgnoreCase(filter.getFilterString())) { filterOK = false; // skip this one! } } } else // anywhere on the line { int idx = line.indexOf(filter.getFilterString()); if (idx >= 0) { filterOK = false; } } if (!filterOK) { boolean isFilterLastLine = filter.isFilterLastLine(); if (isFilterLastLine) { stopProcessing = true; } } } } return filterOK; }