JAL-1432 updated copyright notices
[jalview.git] / src / jalview / ws / dbsources / Uniprot.java
index 814c534..2abb605 100644 (file)
@@ -1,28 +1,26 @@
 /*
- * 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.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
- * 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.
+ *  
+ * 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 this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ws.dbsources;
 
 import java.io.File;
 import java.io.FileReader;
-import java.io.IOException;
 import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.Vector;
 
 import org.exolab.castor.xml.Unmarshaller;
@@ -38,9 +36,6 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.UniprotEntry;
 import jalview.datamodel.UniprotFile;
-import jalview.io.FormatAdapter;
-import jalview.io.IdentifyFile;
-import jalview.ws.DBRefFetcher;
 import jalview.ws.ebi.EBIFetchClient;
 import jalview.ws.seqfetcher.DbSourceProxy;
 import jalview.ws.seqfetcher.DbSourceProxyImpl;
@@ -76,7 +71,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]+)");
   }
 
   /*
@@ -101,22 +96,27 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
 
   private EBIFetchClient ebi = null;
 
+  private static org.exolab.castor.mapping.Mapping map;
+
   public Vector getUniprotEntries(File file)
   {
     UniprotFile uni = new UniprotFile();
     try
     {
-      // 1. Load the mapping information from the file
-      org.exolab.castor.mapping.Mapping map = new org.exolab.castor.mapping.Mapping(
-              uni.getClass().getClassLoader());
-      java.net.URL url = getClass().getResource("/uniprot_mapping.xml");
-      map.loadMapping(url);
+      if (map == null)
+      {
+        // 1. Load the mapping information from the file
+        map = new org.exolab.castor.mapping.Mapping(uni.getClass()
+                .getClassLoader());
+        java.net.URL url = getClass().getResource("/uniprot_mapping.xml");
+        map.loadMapping(url);
+      }
 
       // 2. Unmarshal the data
       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,7 +138,8 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
     startQuery();
     try
     {
-      queries = queries.toUpperCase().replaceAll("(UNIPROT\\|?|UNIPROT_|UNIREF\\d+_|UNIREF\\d+\\|?)","");
+      queries = queries.toUpperCase().replaceAll(
+              "(UNIPROT\\|?|UNIPROT_|UNIREF\\d+_|UNIREF\\d+\\|?)", "");
       Alignment al = null;
       ebi = new EBIFetchClient();
       StringBuffer result = new StringBuffer();
@@ -208,10 +209,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)
   {
@@ -277,7 +278,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);
   }
 
   /**
@@ -292,4 +295,10 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
   {
     return "Uniprot"; // getDbSource();
   }
+
+  @Override
+  public int getTier()
+  {
+    return 0;
+  }
 }