Merge branch 'patch/JAL-3700_JAL-3748_JAL-3763_for_2_11_1_3' into releases/Release_2_...
[jalview.git] / src / MCview / Atom.java
index b600bc9..a2ce2ae 100755 (executable)
@@ -20,7 +20,9 @@
  */
 package MCview;
 
-import java.awt.*;
+import jalview.schemes.ResidueProperties;
+
+import java.awt.Color;
 
 public class Atom
 {
@@ -73,20 +75,22 @@ public class Atom
     name = str.substring(12, 15).trim();
 
     resName = str.substring(17, 20);
+    // JAL-1828 treat MSE Selenomethionine as MET (etc)
+    resName = ResidueProperties.getCanonicalAminoAcid(resName);
 
     chain = str.substring(21, 22);
 
     resNumber = Integer.parseInt(str.substring(22, 26).trim());
-    resNumIns = str.substring(22, 27);
+    resNumIns = str.substring(22, 27).trim();
     insCode = str.substring(26, 27).charAt(0);
-    this.x = (float) (new Float(str.substring(30, 38).trim()).floatValue());
-    this.y = (float) (new Float(str.substring(38, 46).trim()).floatValue());
-    this.z = (float) (new Float(str.substring(47, 55).trim()).floatValue());
+    this.x = (Float.valueOf(str.substring(30, 38).trim()).floatValue());
+    this.y = (Float.valueOf(str.substring(38, 46).trim()).floatValue());
+    this.z = (Float.valueOf(str.substring(47, 55).trim()).floatValue());
     // optional entries - see JAL-730
     String tm = str.substring(54, 60).trim();
     if (tm.length() > 0)
     {
-      occupancy = (float) (new Float(tm)).floatValue();
+      occupancy = (Float.valueOf(tm)).floatValue();
     }
     else
     {
@@ -96,7 +100,7 @@ public class Atom
     tm = str.substring(60, 66).trim();
     if (tm.length() > 0)
     {
-      tfactor = (float) (new Float(tm).floatValue());
+      tfactor = (Float.valueOf(tm).floatValue());
     }
     else
     {
@@ -105,13 +109,28 @@ public class Atom
     }
   }
 
+  @Override
+  public boolean equals(Object that)
+  {
+    if (this == that || that == null)
+    {
+      return true;
+    }
+    if (that instanceof Atom)
+    {
+      Atom other = (Atom) that;
+      return other.resName.equals(this.resName)
+              && other.resNumber == this.resNumber
+              && other.resNumIns.equals(this.resNumIns)
+              && other.chain.equals(this.chain);
+    }
+    return false;
+  }
+
   public Atom(float x, float y, float z)
   {
     this.x = x;
     this.y = y;
     this.z = z;
   }
-  // public void setColor(Color col) {
-  // this.color = col;
-  // }
 }