JAL-1807 explicit imports (jalview.io.*)
[jalview.git] / src / jalview / io / vamsas / Dbref.java
index c27bc9a..a82d9d4 100644 (file)
@@ -1,42 +1,48 @@
 /*
- * 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-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.io.vamsas;
 
+import jalview.bin.Cache;
 import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.Mapping;
 import jalview.datamodel.SequenceI;
+import jalview.io.VamsasAppDatastore;
+
 import uk.ac.vamsas.objects.core.DataSet;
 import uk.ac.vamsas.objects.core.DbRef;
 import uk.ac.vamsas.objects.core.Map;
 import uk.ac.vamsas.objects.core.Sequence;
-import jalview.io.VamsasAppDatastore;
+import uk.ac.vamsas.objects.utils.SymbolDictionary;
 
 public class Dbref extends Rangetype
 {
-  jalview.datamodel.SequenceI sq = null;
+  SequenceI sq = null;
 
   uk.ac.vamsas.objects.core.Sequence sequence = null;
 
   DataSet ds;
 
   public Dbref(VamsasAppDatastore datastore, DBRefEntry dbentry,
-          jalview.datamodel.SequenceI sq2,
-          uk.ac.vamsas.objects.core.Sequence sequence2, DataSet dataset)
+          SequenceI sq2, uk.ac.vamsas.objects.core.Sequence sequence2,
+          DataSet dataset)
   {
     super(datastore, dbentry, DbRef.class);
     // initialise object specific attributes
@@ -51,7 +57,7 @@ public class Dbref extends Rangetype
   public Dbref(VamsasAppDatastore datastore, DbRef ref, Sequence vdseq,
           SequenceI dsseq)
   {
-    super(datastore, ref, jalview.datamodel.DBRefEntry.class);
+    super(datastore, ref, DBRefEntry.class);
     sequence = vdseq;
     sq = dsseq;
     ds = (DataSet) vdseq.getV_parent();
@@ -68,7 +74,7 @@ public class Dbref extends Rangetype
     if (jvobj.getMap() != null)
     {
       // Record mapping to external database coordinate system.
-      jalview.datamodel.Mapping mp = jvobj.getMap();
+      Mapping mp = jvobj.getMap();
       if (mp.getMap() != null)
       {
         Map vMap = null;
@@ -87,40 +93,61 @@ public class Dbref extends Rangetype
         updateMapTo(mp);
       }
     }
-      else
-      {
-        jalview.bin.Cache.log.debug("Ignoring mapless DbRef.Map "
-                + jvobj.getSrcAccString());
-      }
-    
+    else
+    {
+      Cache.log.debug("Ignoring mapless DbRef.Map "
+              + jvobj.getSrcAccString());
+    }
+
   }
+
   /**
-   * ugly hack to try to get the embedded sequences within a database reference to be stored in the document's dataset.
+   * ugly hack to try to get the embedded sequences within a database reference
+   * to be stored in the document's dataset.
+   * 
    * @param mp
    */
-  private void updateMapTo(jalview.datamodel.Mapping mp)
+  private void updateMapTo(Mapping mp)
   {
     log.info("Performing updateMapTo remove this message when we know what we're doing.");
-    // TODO determine how sequences associated with database mappings are stored in the document
-    if (mp!=null && mp.getTo() != null)
+    // TODO determine how sequences associated with database mappings are stored
+    // in the document
+    if (mp != null && mp.getTo() != null)
     {
       if (mp.getTo().getDatasetSequence() == null)
       {
-        // sync the dataset sequence, if it hasn't been done already.
-        Datasetsequence dssync = new Datasetsequence(
-                datastore, mp.getTo(),
-                (mp.getMappedWidth() == mp.getWidth()) ? sequence
-                        .getDictionary()
-                        : ((mp.getMappedWidth() == 3) ? uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_AA
-                                : uk.ac.vamsas.objects.utils.SymbolDictionary.STANDARD_NA),
-                ds);
-        // add a mapping between new dataset sequence and sequence associated with the database reference
-        
-      } else {
-        log.debug("Ignoring non-dataset sequence mapping.");
+        // TODO: fix this hinky sh!t
+        DatastoreItem dssync = dsReg.getDatastoreItemFor(mp.getTo());
+        if (dssync == null)
+        {
+          // sync the dataset sequence, if it hasn't been done already.
+          // TODO: ensure real dataset sequence corresponding to getTo is
+          // recovered
+          dssync = new Datasetsequence(
+                  datastore,
+                  mp.getTo(),
+                  (mp.getMappedWidth() == mp.getWidth()) ? sequence
+                          .getDictionary()
+                          : ((mp.getMappedWidth() == 3) ? SymbolDictionary.STANDARD_NA
+                                  : SymbolDictionary.STANDARD_AA),
+                  ds);
+        }
+        //
+        // TODO: NOW add a mapping between new dataset sequence and sequence
+        // associated with the database reference
+
+        // dna mappings only...
+        // new jalview.io.vamsas.Sequencemapping(datastore, mp, sequence, ds);
+
       }
+
+    }
+    else
+    {
+      log.debug("Ignoring non-dataset sequence mapping.");
     }
   }
+
   public void updateFromDoc()
   {
     DbRef vobj = (DbRef) this.vobj;
@@ -134,24 +161,23 @@ public class Dbref extends Rangetype
       // TODO: Jalview ignores all the other maps
       if (vobj.getMapCount() > 1)
       {
-        jalview.bin.Cache.log
+        Cache.log
                 .debug("Ignoring additional mappings on DbRef: "
                         + jvobj.getSource() + ":" + jvobj.getAccessionId());
       }
-      jalview.datamodel.Mapping mp = new jalview.datamodel.Mapping(
-              parsemapType(vobj.getMap(0)));
-      if (jvobj.getMap()==null || !mp.equals(jvobj.getMap()))
+      Mapping mp = new Mapping(parsemapType(vobj.getMap(0)));
+      if (jvobj.getMap() == null || !mp.equals(jvobj.getMap()))
       {
         jvobj.setMap(mp);
       }
     }
   }
-  
+
   public void conflict()
   {
     DbRef vobj = (DbRef) this.vobj;
     DBRefEntry jvobj = (DBRefEntry) this.jvobj;
-    jalview.bin.Cache.log.debug("Conflict in dbentry update for "
+    Cache.log.debug("Conflict in dbentry update for "
             + vobj.getAccessionId() + vobj.getSource() + " "
             + vobj.getVorbaId());
     // TODO Auto-generated method stub
@@ -163,7 +189,7 @@ public class Dbref extends Rangetype
     DbRef vobj = (DbRef) this.vobj;
     DBRefEntry jvobj = (DBRefEntry) this.jvobj;
     // add new dbref
-    sq.addDBRef(jvobj = new jalview.datamodel.DBRefEntry(vobj.getSource()
+    sq.addDBRef(jvobj = new DBRefEntry(vobj.getSource()
             .toString(), vobj.getVersion().toString(), vobj
             .getAccessionId().toString()));
     if (vobj.getMapCount() > 0)
@@ -171,11 +197,11 @@ public class Dbref extends Rangetype
       // TODO: Jalview ignores all the other maps
       if (vobj.getMapCount() > 1)
       {
-        jalview.bin.Cache.log
+        Cache.log
                 .debug("Ignoring additional mappings on DbRef: "
                         + jvobj.getSource() + ":" + jvobj.getAccessionId());
       }
-      jalview.datamodel.Mapping mp = new jalview.datamodel.Mapping(
+      Mapping mp = new Mapping(
               parsemapType(vobj.getMap(0)));
       jvobj.setMap(mp);
     }
@@ -193,22 +219,23 @@ public class Dbref extends Rangetype
     dbref.setAccessionId(jvobj.getAccessionId());
     dbref.setSource(jvobj.getSource());
     dbref.setVersion(jvobj.getVersion());
+    sequence.addDbRef(dbref);
     if (jvobj.getMap() != null)
     {
-      jalview.datamodel.Mapping mp = jvobj.getMap();
+      Mapping mp = jvobj.getMap();
       if (mp.getMap() != null)
       {
         Map vMap = new Map();
         initMapType(vMap, mp.getMap(), true);
         dbref.addMap(vMap);
+        updateMapTo(mp);
       }
       else
       {
-        jalview.bin.Cache.log.debug("Ignoring mapless DbRef.Map "
+        Cache.log.debug("Ignoring mapless DbRef.Map "
                 + jvobj.getSrcAccString());
       }
     }
-    sequence.addDbRef(dbref);
   }
 
 }