Dont use gold colouring for highlight
[jalview.git] / src / jalview / analysis / SequenceIdMatcher.java
index 7c974e2..0744937 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  *\r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
@@ -49,6 +49,7 @@ public class SequenceIdMatcher
       names.put(new SeqIdName(seqs[i].getName()), seqs[i]);\r
     }\r
   }\r
+\r
   /**\r
    * returns the closest SequenceI in matches to SeqIdName and returns all the matches\r
    * to the names hash.\r
@@ -56,22 +57,28 @@ public class SequenceIdMatcher
    * @param matches Vector of SequenceI objects\r
    * @return SequenceI closest SequenceI to SeqIdName\r
    */\r
-  private SequenceI pickbestMatch(SeqIdName candName, Vector matches) {\r
-    SequenceI match=null;\r
-    if (candName==null || matches==null || matches.size()==0)\r
+  private SequenceI pickbestMatch(SeqIdName candName, Vector matches)\r
+  {\r
+    SequenceI match = null;\r
+    if (candName == null || matches == null || matches.size() == 0)\r
+    {\r
       return null;\r
-    match=(SequenceI) matches.elementAt(0);\r
+    }\r
+    match = (SequenceI) matches.elementAt(0);\r
     matches.removeElementAt(0);\r
     names.put(new SeqIdName(match.getName()), match);\r
-    int matchlen=match.getName().length();\r
-    int namlen=candName.id.length();\r
-    while (matches.size()>0) {\r
+    int matchlen = match.getName().length();\r
+    int namlen = candName.id.length();\r
+    while (matches.size() > 0)\r
+    {\r
       // look through for a better one.\r
-      SequenceI cand=(SequenceI) matches.elementAt(0);\r
+      SequenceI cand = (SequenceI) matches.elementAt(0);\r
       names.put(new SeqIdName(cand.getName()), cand);\r
       int candlen = cand.getName().length();\r
       // keep the one with an id 'closer' to the given seqnam string\r
-      if (Math.abs(matchlen-namlen)>Math.abs(candlen-namlen) && candlen>matchlen) {\r
+      if (Math.abs(matchlen - namlen) > Math.abs(candlen - namlen) &&\r
+          candlen > matchlen)\r
+      {\r
         match = cand;\r
         matchlen = candlen;\r
       }\r
@@ -91,10 +98,11 @@ public class SequenceIdMatcher
   }\r
 \r
   SequenceI findIdMatch(String seqnam)\r
-    {\r
-      SeqIdName nam = new SeqIdName(seqnam);\r
-      return findIdMatch(nam);\r
+  {\r
+    SeqIdName nam = new SeqIdName(seqnam);\r
+    return findIdMatch(nam);\r
   }\r
+\r
   /**\r
    * findIdMatch\r
    *\r
@@ -140,7 +148,7 @@ public class SequenceIdMatcher
   private SequenceI findIdMatch(jalview.analysis.SequenceIdMatcher.SeqIdName\r
                                 nam)\r
   {\r
-    Vector matches=new Vector();\r
+    Vector matches = new Vector();\r
     while (names.containsKey(nam))\r
     {\r
       matches.addElement(names.remove(nam));\r
@@ -154,15 +162,19 @@ public class SequenceIdMatcher
 \r
     SeqIdName(String s)\r
     {\r
-      if (s!=null)\r
+      if (s != null)\r
+      {\r
         id = new String(s);\r
+      }\r
       else\r
+      {\r
         id = "";\r
+      }\r
     }\r
 \r
     public int hashCode()\r
     {\r
-      return ((id.length()>=4) ? id.substring(0, 4).hashCode() : id.hashCode());\r
+      return ( (id.length() >= 4) ? id.substring(0, 4).hashCode() : id.hashCode());\r
     }\r
 \r
     public boolean equals(Object s)\r
@@ -188,39 +200,47 @@ public class SequenceIdMatcher
      * JBPNote: This is a heuristic that will fail for arbritrarily extended sequence id's\r
      * (like portions of an aligned set of repeats from one sequence)\r
      */\r
-    private String WORD_SEP="~. |#\\/<>!\"£$%^*)}[@',?_";\r
-\r
-   /**\r
-    * matches if one ID properly contains another at a whitespace boundary.\r
-    * TODO: (JBPNote) These are not efficient. should use char[] for speed\r
-    * todo: (JBPNote) Set separator characters appropriately\r
-    * @param s SeqIdName\r
-    * @return boolean\r
-    */\r
+    private String WORD_SEP = "~. |#\\/<>!\"£$%^*)}[@',?_";\r
+\r
+    /**\r
+     * matches if one ID properly contains another at a whitespace boundary.\r
+     * TODO: (JBPNote) These are not efficient. should use char[] for speed\r
+     * todo: (JBPNote) Set separator characters appropriately\r
+     * @param s SeqIdName\r
+     * @return boolean\r
+     */\r
     public boolean equals(SeqIdName s)\r
     {\r
-      if (id.length()>s.id.length()) {\r
+      if (id.length() > s.id.length())\r
+      {\r
         return id.startsWith(s.id) ?\r
-            (WORD_SEP.indexOf(id.charAt(s.id.length()))>-1)\r
+            (WORD_SEP.indexOf(id.charAt(s.id.length())) > -1)\r
             : false;\r
-      } else\r
+      }\r
+      else\r
+      {\r
         return s.id.startsWith(id) ?\r
             (s.id.equals(id) ? true :\r
-             (WORD_SEP.indexOf(s.id.charAt(id.length()))>-1))\r
+             (WORD_SEP.indexOf(s.id.charAt(id.length())) > -1))\r
             : false;\r
+      }\r
     }\r
 \r
     public boolean equals(String s)\r
     {\r
-      if (id.length()>s.length()) {\r
+      if (id.length() > s.length())\r
+      {\r
         return id.startsWith(s) ?\r
-            (WORD_SEP.indexOf(id.charAt(s.length()))>-1)\r
+            (WORD_SEP.indexOf(id.charAt(s.length())) > -1)\r
             : false;\r
-      } else\r
+      }\r
+      else\r
+      {\r
         return s.startsWith(id) ?\r
             (s.equals(id) ? true :\r
-             (WORD_SEP.indexOf(s.charAt(id.length()))>-1))\r
+             (WORD_SEP.indexOf(s.charAt(id.length())) > -1))\r
             : false;\r
+      }\r
     }\r
   }\r
 }\r