Searchable
ListSearchable
, TableSearchable
, TreeSearchable
public abstract class AbstractSearchable extends java.lang.Object implements Searchable
Modifier and Type | Class | Description |
---|---|---|
static class |
AbstractSearchable.SearchResult |
A convenience class to hold search state.
|
Modifier and Type | Field | Description |
---|---|---|
protected AbstractSearchable.SearchResult |
lastSearchResult |
stores the result of the previous search.
|
static java.lang.String |
MATCH_HIGHLIGHTER |
key for client property to use SearchHighlighter as match marker.
|
static AbstractSearchable.SearchResult |
NO_MATCH |
a constant representing not-found state.
|
Constructor | Description |
---|---|
AbstractSearchable() |
Modifier and Type | Method | Description |
---|---|---|
protected int |
adjustStartPosition(int startIndex,
boolean backwards) |
Called if
startIndex is different from last search
and make sure a backwards/forwards search starts at last/first row,
respectively. |
protected AbstractSearchable.SearchResult |
createSearchResult(java.util.regex.Matcher matcher,
int row,
int column) |
Factory method to create a SearchResult from the given parameters.
|
protected int |
doSearch(java.util.regex.Pattern pattern,
int startIndex,
boolean backwards) |
Performs a search starting at the given startIndex
using the pattern;
Pattern . |
protected abstract AbstractSearchable.SearchResult |
findExtendedMatch(java.util.regex.Pattern pattern,
int row) |
called if sameRowIndex && !hasEqualRegEx.
|
protected abstract void |
findMatchAndUpdateState(java.util.regex.Pattern pattern,
int startRow,
boolean backwards) |
Loops through the searchable until a match is found or the
end is reached.
|
protected abstract int |
getSize() |
returns the size of this searchable.
|
protected boolean |
isEmpty(java.lang.String searchString) |
checks if the searchString should be interpreted as empty.
|
protected boolean |
isEqualPattern(java.util.regex.Pattern pattern) |
Checks if the given Pattern should be considered as the same as
in a previous search.
|
protected boolean |
isEqualStartIndex(int startIndex) |
Checks if the startIndex should be considered as the same as in
the previous search.
|
protected boolean |
isTrivialNoMatch(java.util.regex.Pattern pattern,
int startIndex) |
Checks and returns if it can be trivially decided to not match.
|
protected boolean |
isValidIndex(int index) |
checks if index is in range: 0 <= index < getSize().
|
protected abstract void |
moveMatchMarker() |
Moves the match marker according to current found state.
|
protected int |
moveStartPosition(int startIndex,
boolean backwards) |
Moves the internal start position for matching as appropriate and returns
the new startIndex to use.
|
int |
search(java.lang.String searchString) |
Performs a forward search starting at the beginning
across the Searchable using String that represents a
regex pattern;
Pattern . |
int |
search(java.lang.String searchString,
int startIndex) |
Performs a forward search starting at the given startIndex
using String that represents a regex
pattern;
Pattern . |
int |
search(java.lang.String searchString,
int startIndex,
boolean backward) |
Performs a search starting at the given startIndex
using String that represents a regex
pattern;
Pattern . |
int |
search(java.util.regex.Pattern pattern) |
Performs a forward search starting at the beginning
across the Searchable using the pattern;
Pattern . |
int |
search(java.util.regex.Pattern pattern,
int startIndex) |
Performs a forward search starting at the given startIndex
using the Pattern;
Pattern . |
int |
search(java.util.regex.Pattern pattern,
int startIndex,
boolean backwards) |
Performs a search starting at the given startIndex
using the pattern;
Pattern . |
protected void |
updateState(AbstractSearchable.SearchResult searchResult) |
Update inner searchable state based on provided search result
|
public static final AbstractSearchable.SearchResult NO_MATCH
protected AbstractSearchable.SearchResult lastSearchResult
public static final java.lang.String MATCH_HIGHLIGHTER
public int search(java.lang.String searchString)
Pattern
.search
in interface Searchable
searchString
- String
that we will try to locatepublic int search(java.lang.String searchString, int startIndex)
Pattern
.search
in interface Searchable
searchString
- String
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningpublic int search(java.lang.String searchString, int startIndex, boolean backward)
Pattern
. The search direction
depends on the boolean parameter: forward/backward if false/true, respectively.search
in interface Searchable
searchString
- String
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackward
- true
if we should perform search towards the beginningpublic int search(java.util.regex.Pattern pattern)
Pattern
.search
in interface Searchable
pattern
- Pattern
that we will try to locatepublic int search(java.util.regex.Pattern pattern, int startIndex)
Pattern
.search
in interface Searchable
pattern
- Pattern
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningpublic int search(java.util.regex.Pattern pattern, int startIndex, boolean backwards)
Pattern
.
The search direction depends on the boolean parameter:
forward/backward if false/true, respectively.
Updates visible and internal search state.search
in interface Searchable
pattern
- Pattern
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackwards
- true
if we should perform search towards the beginningprotected int doSearch(java.util.regex.Pattern pattern, int startIndex, boolean backwards)
Pattern
.
The search direction depends on the boolean parameter:
forward/backward if false/true, respectively.
Updates internal search state.pattern
- Pattern
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackwards
- true
if we should perform search towards the beginningprotected abstract void findMatchAndUpdateState(java.util.regex.Pattern pattern, int startRow, boolean backwards)
pattern
- Pattern
that we will try to locatestartRow
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackwards
- true
if we should perform search towards the beginningprotected boolean isTrivialNoMatch(java.util.regex.Pattern pattern, int startIndex)
pattern
- Pattern
that we will try to locatestartIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningprotected int adjustStartPosition(int startIndex, boolean backwards)
startIndex
is different from last search
and make sure a backwards/forwards search starts at last/first row,
respectively.startIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackwards
- true
if we should perform search from towards the beginningstartIndex
protected int moveStartPosition(int startIndex, boolean backwards)
startIndex
- position in the document in the appropriate coordinates
from which we will start search or -1 to start from the beginningbackwards
- true
if we should perform search towards the beginningstartIndex
protected boolean isEqualPattern(java.util.regex.Pattern pattern)
pattern
- Pattern
that we will compare with last requestPattern
is the same as the stored from
the previous search attemptprotected boolean isEqualStartIndex(int startIndex)
startIndex
- startIndex
that we will compare with the index
stored by the previous search requestprotected boolean isEmpty(java.lang.String searchString)
searchString
- String
that we should evaluateString
should be interpreted as emptyprotected abstract AbstractSearchable.SearchResult findExtendedMatch(java.util.regex.Pattern pattern, int row)
pattern
- Pattern
that we will try to matchrow
- position at which we will get the value to match with the provided Pattern
AbstractSearchable.SearchResult
protected AbstractSearchable.SearchResult createSearchResult(java.util.regex.Matcher matcher, int row, int column)
matcher
- the matcher after a successful find. Must not be null.row
- the found indexcolumn
- the found columnSearchResult
protected boolean isValidIndex(int index)
index
- possible start position that we will check for validitytrue
if given parameter is valid indexprotected abstract int getSize()
protected void updateState(AbstractSearchable.SearchResult searchResult)
searchResult
- SearchResult
that represents the new state
of this AbstractSearchable
protected abstract void moveMatchMarker()