update author list in license for (JAL-826)
[jalview.git] / src / jalview / ws / dbsources / Uniprot.java
index f7773d8..167758f 100644 (file)
@@ -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.ws.dbsources;
 
@@ -76,7 +75,7 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
    */
   public Regex getAccessionValidator()
   {
-    return null;
+    return new Regex("([A-Z]+[0-9]+[A-Z0-9]+|[A-Z0-9]+_[A-Z0-9]+)");
   }
 
   /*
@@ -116,7 +115,7 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
       Unmarshaller unmar = new Unmarshaller(uni);
       unmar.setIgnoreExtraElements(true);
       unmar.setMapping(map);
-      if (file!=null)
+      if (file != null)
       {
         uni = (UniprotFile) unmar.unmarshal(new FileReader(file));
       }
@@ -138,11 +137,14 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
     startQuery();
     try
     {
+      queries = queries.toUpperCase().replaceAll(
+              "(UNIPROT\\|?|UNIPROT_|UNIREF\\d+_|UNIREF\\d+\\|?)", "");
       Alignment al = null;
       ebi = new EBIFetchClient();
       StringBuffer result = new StringBuffer();
       // uniprotxml parameter required since december 2007
-      File file = ebi.fetchDataAsFile("uniprot:" + queries, "uniprotxml",
+      // uniprotkb dbname changed introduced december 2008
+      File file = ebi.fetchDataAsFile("uniprotkb:" + queries, "uniprotxml",
               null);
       Vector entries = getUniprotEntries(file);
 
@@ -206,10 +208,10 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
   /**
    * add an ordered set of UniprotEntry objects to an ordered set of seuqences.
    * 
-   * @param al -
-   *                a sequence of n sequences
+   * @param al
+   *          - a sequence of n sequences
    * @param entries
-   *                a seuqence of n uniprot entries to be analysed.
+   *          a seuqence of n uniprot entries to be analysed.
    */
   public void addUniprotXrefs(Alignment al, Vector entries)
   {
@@ -275,7 +277,9 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
    */
   public boolean isValidReference(String accession)
   {
-    return true;
+    // TODO: make the following a standard validator
+    return (accession == null || accession.length() < 2) ? false
+            : getAccessionValidator().search(accession);
   }
 
   /**