JAL-2210 use addDBRef to ensure normalisation (just in case the uniprot record is...
[jalview.git] / src / jalview / ws / dbsources / Uniprot.java
index 7ecd324..0c2af3b 100644 (file)
@@ -30,7 +30,6 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.UniprotEntry;
 import jalview.datamodel.UniprotFile;
-import jalview.util.DBRefUtils;
 import jalview.ws.ebi.EBIFetchClient;
 import jalview.ws.seqfetcher.DbSourceProxyImpl;
 
@@ -230,13 +229,14 @@ public class Uniprot extends DbSourceProxyImpl
                 .get("protein sequence ID");
         if (cdsId != null && cdsId.trim().length() > 0)
         {
-          dbr = new DBRefEntry(DBRefSource.EMBLCDS, DBRefSource.UNIPROT
-                  + ":"
-                  + dbVersion, cdsId.trim());
+          // remove version
+          String[] vrs = cdsId.split("\\.");
+          dbr = new DBRefEntry(DBRefSource.EMBLCDS, vrs.length > 1 ? vrs[1]
+                  : DBRefSource.UNIPROT + ":" + dbVersion, vrs[0]);
           dbRefs.add(dbr);
         }
       }
-      if (false) // "Ensembl".equals(pdb.getType()))
+      if ("Ensembl".equals(pdb.getType()))
       {
         /*UniprotXML
          * <dbReference type="Ensembl" id="ENST00000321556">
@@ -249,8 +249,6 @@ public class Uniprot extends DbSourceProxyImpl
                 .get("protein sequence ID");
         if (cdsId != null && cdsId.trim().length() > 0)
         {
-          // Only add the product ID
-          dbRefs.remove(dbr);
           dbr = new DBRefEntry(DBRefSource.ENSEMBL, DBRefSource.UNIPROT
                   + ":" + dbVersion, cdsId.trim());
           dbRefs.add(dbr);
@@ -269,12 +267,10 @@ public class Uniprot extends DbSourceProxyImpl
         sequence.addSequenceFeature(sf);
       }
     }
-    // we use setDBRefs to assign refs quickly.
-    sequence.setDBRefs(dbRefs.toArray(new DBRefEntry[0]));
-    // need to use ensurePrimaries to reify any refs that should become primary
-    // refs
-    DBRefUtils.ensurePrimaries(sequence); // promote any direct refs to primary
-                                          // source dbs
+    for (DBRefEntry dbr : dbRefs)
+    {
+      sequence.addDBRef(dbr);
+    }
     return sequence;
   }