git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JAL-966 JAL-1738 JAL-345 interfaces for SearchResults and SearchResults.Match
[jalview.git]
/
src
/
jalview
/
datamodel
/
SearchResults.java
diff --git
a/src/jalview/datamodel/SearchResults.java
b/src/jalview/datamodel/SearchResults.java
index
ad0e472
..
2f62991
100755
(executable)
--- a/
src/jalview/datamodel/SearchResults.java
+++ b/
src/jalview/datamodel/SearchResults.java
@@
-28,10
+28,10
@@
import java.util.List;
* Holds a list of search result matches, where each match is a contiguous
* stretch of a single sequence.
*
* Holds a list of search result matches, where each match is a contiguous
* stretch of a single sequence.
*
- * @author gmcarstairs
+ * @author gmcarstairs amwaterhouse
*
*/
*
*/
-public class SearchResults
+public class SearchResults implements SearchResultsI
{
private List<Match> matches = new ArrayList<Match>();
{
private List<Match> matches = new ArrayList<Match>();
@@
-40,7
+40,7
@@
public class SearchResults
* One match consists of a sequence reference, start and end positions.
* Discontiguous ranges in a sequence require two or more Match objects.
*/
* One match consists of a sequence reference, start and end positions.
* Discontiguous ranges in a sequence require two or more Match objects.
*/
- public class Match
+ public class Match implements SearchResultMatchI
{
SequenceI sequence;
{
SequenceI sequence;
@@
-67,20
+67,46
@@
public class SearchResults
public Match(SequenceI seq, int start, int end)
{
sequence = seq;
public Match(SequenceI seq, int start, int end)
{
sequence = seq;
- this.start = start;
- this.end = end;
+
+ /*
+ * always hold in forwards order, even if given in reverse order
+ * (such as from a mapping to a reverse strand); this avoids
+ * trouble for routines that highlight search results etc
+ */
+ if (start <= end)
+ {
+ this.start = start;
+ this.end = end;
+ }
+ else
+ {
+ this.start = end;
+ this.end = start;
+ }
}
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getSequence()
+ */
+ @Override
public SequenceI getSequence()
{
return sequence;
}
public SequenceI getSequence()
{
return sequence;
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getStart()
+ */
+ @Override
public int getStart()
{
return start;
}
public int getStart()
{
return start;
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getEnd()
+ */
+ @Override
public int getEnd()
{
return end;
public int getEnd()
{
return end;
@@
-98,9
+124,10
@@
public class SearchResults
return startPosition + getCharacters();
}
return startPosition + getCharacters();
}
- /**
- * Returns the string of characters in the matched region.
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultMatchI#getCharacters()
*/
*/
+ @Override
public String getCharacters()
{
char[] chars = sequence.getSequence();
public String getCharacters()
{
char[] chars = sequence.getSequence();
@@
-145,30
+172,19
@@
public class SearchResults
}
}
}
}
- /**
- * This method replaces the old search results which merely held an alignment
- * index of search matches. This broke when sequences were moved around the
- * alignment
- *
- * @param seq
- * Sequence
- * @param start
- * int
- * @param end
- * int
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#addResult(jalview.datamodel.SequenceI, int, int)
*/
*/
+ @Override
public void addResult(SequenceI seq, int start, int end)
{
matches.add(new Match(seq, start, end));
}
public void addResult(SequenceI seq, int start, int end)
{
matches.add(new Match(seq, start, end));
}
- /**
- * Quickly check if the given sequence is referred to in the search results
- *
- * @param sequence
- * (specific alignment sequence or a dataset sequence)
- * @return true if the results involve sequence
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#involvesSequence(jalview.datamodel.SequenceI)
*/
*/
+ @Override
public boolean involvesSequence(SequenceI sequence)
{
SequenceI ds = sequence.getDatasetSequence();
public boolean involvesSequence(SequenceI sequence)
{
SequenceI ds = sequence.getDatasetSequence();
@@
-183,11
+199,10
@@
public class SearchResults
return false;
}
return false;
}
- /**
- * This Method returns the search matches which lie between the start and end
- * points of the sequence in question. It is optimised for returning objects
- * for drawing on SequenceCanvas
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResults(jalview.datamodel.SequenceI, int, int)
*/
*/
+ @Override
public int[] getResults(SequenceI sequence, int start, int end)
{
if (matches.isEmpty())
public int[] getResults(SequenceI sequence, int start, int end)
{
if (matches.isEmpty())
@@
-255,53
+270,55
@@
public class SearchResults
return result;
}
return result;
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getSize()
+ */
+ @Override
public int getSize()
{
return matches.size();
}
public int getSize()
{
return matches.size();
}
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResultSequence(int)
+ */
+ @Override
public SequenceI getResultSequence(int index)
{
return matches.get(index).sequence;
}
public SequenceI getResultSequence(int index)
{
return matches.get(index).sequence;
}
- /**
- * Returns the start position of the i'th match in the search results.
- *
- * @param i
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResultStart(int)
*/
*/
+ @Override
public int getResultStart(int i)
{
return matches.get(i).start;
}
public int getResultStart(int i)
{
return matches.get(i).start;
}
- /**
- * Returns the end position of the i'th match in the search results.
- *
- * @param i
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResultEnd(int)
*/
*/
+ @Override
public int getResultEnd(int i)
{
return matches.get(i).end;
}
public int getResultEnd(int i)
{
return matches.get(i).end;
}
- /**
- * Returns true if no search result matches are held.
- *
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#isEmpty()
*/
*/
+ @Override
public boolean isEmpty()
{
return matches.isEmpty();
}
public boolean isEmpty()
{
return matches.isEmpty();
}
- /**
- * Returns the list of matches.
- *
- * @return
+ /* (non-Javadoc)
+ * @see jalview.datamodel.SearchResultsI#getResults()
*/
*/
+ @Override
public List<Match> getResults()
{
return matches;
public List<Match> getResults()
{
return matches;
@@
-318,7
+335,7
@@
public class SearchResults
public String toString()
{
StringBuilder result = new StringBuilder(256);
public String toString()
{
StringBuilder result = new StringBuilder(256);
- for (Match m : matches)
+ for (SearchResultMatchI m : matches)
{
result.append(m.toString());
}
{
result.append(m.toString());
}
@@
-335,7
+352,7
@@
public class SearchResults
public String getCharacters()
{
StringBuilder result = new StringBuilder(256);
public String getCharacters()
{
StringBuilder result = new StringBuilder(256);
- for (Match m : matches)
+ for (SearchResultMatchI m : matches)
{
result.append(m.getCharacters());
}
{
result.append(m.getCharacters());
}