update author list in license for (JAL-826)
[jalview.git] / src / jalview / datamodel / SearchResults.java
index e62c150..3efb713 100755 (executable)
@@ -1,20 +1,19 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  * 
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  */
 package jalview.datamodel;
 
@@ -29,11 +28,11 @@ public class SearchResults
    * alignment
    * 
    * @param seq
-   *                Sequence
+   *          Sequence
    * @param start
-   *                int
+   *          int
    * @param end
-   *                int
+   *          int
    */
   public void addResult(SequenceI seq, int start, int end)
   {
@@ -59,6 +58,31 @@ public class SearchResults
   }
 
   /**
+   * 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
+   */
+  public boolean involvesSequence(SequenceI sequence)
+  {
+    if (matches == null || matches.length == 0)
+    {
+      return false;
+    }
+    SequenceI ds = sequence.getDatasetSequence();
+    for (int m = 0; m < matches.length; m++)
+    {
+      if (matches[m].sequence != null
+              && (matches[m].sequence == sequence || matches[m].sequence == ds))
+      {
+        return true;
+      }
+    }
+    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
@@ -119,6 +143,9 @@ public class SearchResults
             result[resultLength] = matchStart;
             result[resultLength + 1] = matchEnd;
           }
+        } else {\r
+          // debug\r
+          // System.err.println("Outwith bounds!" + matchStart+">"+end +"  or " + matchEnd+"<"+start);\r
         }
       }
     }