JAL-674 methods and test for PDB derived annotation stored and recovered in project
[jalview.git] / src / MCview / PDBfile.java
index 7e37277..019aba9 100755 (executable)
@@ -272,11 +272,30 @@ public class PDBfile extends jalview.io.AlignFile
     markCalcIds();
   }
 
+  private static String calcIdPrefix = "JalviewPDB:";
+
+  public static boolean isCalcIdHandled(String calcId)
+  {
+    return calcId != null
+            && (calcId.startsWith(calcIdPrefix) && calcId.indexOf(
+                    calcIdPrefix,
+            calcIdPrefix.length() + 1) > -1);
+  }
   public static boolean isCalcIdForFile(String calcId, String pdbFile)
   {
-    return (calcId != null && calcId.startsWith("JalviewPDB:" + pdbFile
-            + ":JalviewPDB:"));
+    return (calcId != null && calcId.startsWith(calcIdPrefix + pdbFile
+            + ":" + calcIdPrefix));
   }
+
+  public static String relocateCalcId(String calcId,
+          Hashtable<String, String> alreadyLoadedPDB) throws Exception
+  {
+    int s = calcIdPrefix.length(), end = calcId.indexOf(calcIdPrefix, s);
+    String between = calcId.substring(s, end - 1);
+    return calcIdPrefix + alreadyLoadedPDB.get(between) + ":"
+            + calcId.substring(end);
+  }
+
   private void markCalcIds()
   {
     for (SequenceI sq : seqs)