JAL-4102 update 2.12 from 2.11.2.6 patch release - JAL-3416 JAL-2353 JAL-4104 JAL...
[jalview.git] / src / jalview / ws / dbsources / Uniprot.java
index 3a6fed2..7c8e4ef 100644 (file)
  */
 package jalview.ws.dbsources;
 
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
+import java.util.Vector;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import com.stevesoft.pat.Regex;
+
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -41,23 +58,6 @@ import jalview.xml.binding.uniprot.LocationType;
 import jalview.xml.binding.uniprot.PositionType;
 import jalview.xml.binding.uniprot.PropertyType;
 
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-import com.stevesoft.pat.Regex;
-
 /**
  * This class queries the Uniprot database for sequence data, unmarshals the
  * returned XML, and converts it to Jalview Sequence records (including attached
@@ -201,7 +201,7 @@ public class Uniprot extends DbSourceProxyImpl
 
     SequenceI sequence = new Sequence(id, seqString);
     sequence.setDescription(getUniprotEntryDescription(entry));
-
+    final String uniprotRecordVersion = "" + entry.getVersion();
     /*
      * add a 'self' DBRefEntry for each accession
      */
@@ -210,8 +210,8 @@ public class Uniprot extends DbSourceProxyImpl
     boolean canonical = true;
     for (String accessionId : entry.getAccession())
     {
-      DBRefEntry dbRef = new DBRefEntry(DBRefSource.UNIPROT, dbVersion,
-              accessionId, null, canonical);
+      DBRefEntry dbRef = new DBRefEntry(DBRefSource.UNIPROT,
+              uniprotRecordVersion, accessionId, null, canonical);
       canonical = false;
       dbRefs.add(dbRef);
     }
@@ -249,8 +249,11 @@ public class Uniprot extends DbSourceProxyImpl
           // remove version
           String[] vrs = cdsId.split("\\.");
           String version = vrs.length > 1 ? vrs[1]
-                  : DBRefSource.UNIPROT + ":" + dbVersion;
+                  : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
           dbr = new DBRefEntry(DBRefSource.EMBLCDS, version, vrs[0]);
+          // TODO: process VARIANT features to allow EMBLCDS record's product to
+          // match Uniprot
+          dbr.setCanonical(true);
           dbRefs.add(dbr);
         }
       }
@@ -261,7 +264,7 @@ public class Uniprot extends DbSourceProxyImpl
         // remove version
         String[] vrs = dbref.getId().split("\\.");
         String version = vrs.length > 1 ? vrs[1]
-                : DBRefSource.UNIPROT + ":" + dbVersion;
+                : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
         dbr.setAccessionId(vrs[0]);
         dbr.setVersion(version);
         /*
@@ -279,7 +282,7 @@ public class Uniprot extends DbSourceProxyImpl
           // remove version
           String[] cdsVrs = cdsId.split("\\.");
           String cdsVersion = cdsVrs.length > 1 ? cdsVrs[1]
-                  : DBRefSource.UNIPROT + ":" + dbVersion;
+                  : DBRefSource.UNIPROT + ":" + uniprotRecordVersion;
           dbr = new DBRefEntry(DBRefSource.ENSEMBL,
                   DBRefSource.UNIPROT + ":" + cdsVersion, cdsVrs[0]);
           dbRefs.add(dbr);