JAL-3829 allow PDBEntry with file and ID with mismatching case to override one withou...
authorJim Procter <j.procter@dundee.ac.uk>
Mon, 20 Sep 2021 10:13:12 +0000 (11:13 +0100)
committerJim Procter <j.procter@dundee.ac.uk>
Mon, 20 Sep 2021 10:13:41 +0000 (11:13 +0100)
src/jalview/datamodel/PDBEntry.java
test/jalview/datamodel/PDBEntryTest.java
test/mc_view/PDBChainTest.java

index 672a59e..793fbd7 100755 (executable)
@@ -384,21 +384,37 @@ public class PDBEntry
       return false; // shouldn't happen
     }
 
-    /*
-     * id has to match (ignoring case)
-     */
-    if (!getId().equalsIgnoreCase(newId))
-    {
-      return false;
-    }
+    boolean idMatches = getId().equalsIgnoreCase(newId);
 
     /*
      * Don't update if associated with different structure files
      */
     String newFile = newEntry.getFile();
-    if (newFile != null && getFile() != null && !newFile.equals(getFile()))
+    if (newFile != null && getFile() != null)
     {
-      return false;
+      if (!newFile.equals(getFile()))
+      {
+        return false;
+      }
+      else
+      {
+        // files match.
+        if (!idMatches)
+        {
+          // this shouldn't happen, but could do if the id from the
+          // file is not the same as the id from the authority that provided
+          // the file
+          return false;
+        }
+      }
+    }
+    else
+    {
+      // one has data, one doesn't ..
+      if (!idMatches)
+      {
+        return false;
+      } // otherwise maybe can update
     }
 
     /*
index cf4294e..198cde3 100644 (file)
@@ -208,7 +208,7 @@ public class PDBEntryTest
     assertTrue(pdb1.updateFrom(pdb2));
     assertEquals(pdb1.getFile(), "filePath");
     assertEquals(pdb1.getType(), Type.FILE.toString());
-
+    assertEquals(pdb1.getChainCode(),"B");
     /*
      * change of file is not allowed
      */
index 14ec1e7..0f748ce 100644 (file)
@@ -68,7 +68,7 @@ public class PDBChainTest
   {
     System.out.println("setup");
     StructureImportSettings.setShowSeqFeatures(true);
-    c = new PDBChain("1GAQ", "A", false);
+    c = new PDBChain("1GAQ", "A");
   }
 
   @Test(groups = { "Functional" })