JAL-674 map on StructureSelectionManager to record PDB IDs extracted/assigned to...
authorJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:30:50 +0000 (15:30 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:30:50 +0000 (15:30 +0000)
src/jalview/structure/StructureSelectionManager.java

index 58bba48..b38fa7c 100644 (file)
@@ -25,13 +25,15 @@ import jalview.api.StructureSelectionManagerProvider;
 import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SearchResults;
 import jalview.datamodel.SequenceI;
+import jalview.io.FormatAdapter;
 import jalview.util.MessageManager;
 
 import java.io.PrintStream;
 import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.IdentityHashMap;
 import java.util.Vector;
 
@@ -64,7 +66,36 @@ public class StructureSelectionManager
     }
   }
 
-  Hashtable mappingData = new Hashtable();
+  /**
+   * map between the PDB IDs (or structure identifiers) used by Jalview and the
+   * absolute filenames for PDB data that corresponds to it
+   */
+  HashMap<String, String> pdbIdFileName = new HashMap<String, String>(),
+          pdbFileNameId = new HashMap<String, String>();
+
+  public void registerPDBFile(String idForFile, String absoluteFile)
+  {
+    pdbIdFileName.put(idForFile, absoluteFile);
+    pdbFileNameId.put(absoluteFile, idForFile);
+  }
+
+  public String findIdForPDBFile(String idOrFile)
+  {
+    String id = pdbFileNameId.get(idOrFile);
+    return id;
+  }
+
+  public String findFileForPDBId(String idOrFile)
+  {
+    String id = pdbIdFileName.get(idOrFile);
+    return id;
+  }
+
+  public boolean isPDBFileRegistered(String idOrFile)
+  {
+    return pdbFileNameId.containsKey(idOrFile)
+            || pdbIdFileName.containsKey(idOrFile);
+  }
 
   private static StructureSelectionManager nullProvider = null;
 
@@ -855,10 +886,10 @@ public class StructureSelectionManager
       listeners.clear();
       listeners = null;
     }
-    if (mappingData != null)
+    if (pdbIdFileName != null)
     {
-      mappingData.clear();
-      mappingData = null;
+      pdbIdFileName.clear();
+      pdbIdFileName = null;
     }
     if (sel_listeners != null)
     {
@@ -902,4 +933,13 @@ public class StructureSelectionManager
     }
   }
 
+  public void registerPDBEntry(PDBEntry pdbentry)
+  {
+    if (pdbentry.getFile() != null
+            && pdbentry.getFile().trim().length() > 0)
+    {
+      registerPDBFile(pdbentry.getId(), pdbentry.getFile());
+    }
+  }
+
 }