Merge hack/JAL-1617 fake DBRef to develop
[jalview.git] / src / jalview / datamodel / xdb / embl / EmblEntry.java
index d501ef1..fc57b27 100644 (file)
@@ -590,8 +590,10 @@ public class EmblEntry
       }
     }
     Sequence product = null;
+    DBRefEntry protEMBLCDS = null;
     exon = adjustForPrStart(prstart, exon);
-
+    boolean noProteinDbref=true;
+    
     if (prseq != null && prname != null && prid != null)
     {
       // extract proteins.
@@ -669,8 +671,12 @@ public class EmblEntry
           if (product != null)
           {
             product.addDBRef(pcdnaref);
-          }
-
+            protEMBLCDS = new DBRefEntry(pcdnaref);
+            protEMBLCDS.setSource(DBRefSource.EMBLCDSProduct);
+            product.addDBRef(protEMBLCDS);
+            
+          }     
+          
         }
       }
       // add cds feature to dna seq - this may include the stop codon
@@ -724,6 +730,7 @@ public class EmblEntry
                               + ref.getAccessionId());
             }
           }
+          noProteinDbref = false;
         }
         if (product != null)
         {
@@ -746,6 +753,33 @@ public class EmblEntry
         }
         dna.addDBRef(ref);
       }
+      if (noProteinDbref && product != null)
+      {
+        // add protein coding reference to dna sequence so xref matches
+        if (protEMBLCDS == null)
+        {
+          protEMBLCDS = new DBRefEntry();
+          protEMBLCDS.setAccessionId(prid);
+          protEMBLCDS.setSource(DBRefSource.EMBLCDSProduct);
+          protEMBLCDS.setVersion(getVersion());
+          protEMBLCDS
+                  .setMap(new Mapping(product, map.getMap().getInverse()));
+        }
+        product.addDBRef(protEMBLCDS);
+          
+        // Add converse mapping reference
+        if (map != null)
+        {
+          Mapping pmap = new Mapping(product, protEMBLCDS.getMap().getMap()
+                  .getInverse());
+          DBRefEntry ncMap = new DBRefEntry(protEMBLCDS);
+          ncMap.setMap(pmap);
+          if (map.getTo() != null)
+          {
+            dna.addDBRef(ncMap);
+          }
+        }
+      }
     }
   }