JAL-1717 updated the PDBEntry model and updated the method use for its equality test...
[jalview.git] / src / jalview / datamodel / PDBEntry.java
index 69f0d68..0050666 100755 (executable)
 /*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
- * 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
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * 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.
- *
- * 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 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.datamodel;
 
-import java.util.*;
+import java.util.Hashtable;
 
 public class PDBEntry
 {
-  String file;
-  String type;
-  String id;
+  private String file;
+
+  private String type;
+
+  private String id;
+
+  private String chainCode;
+
+  public enum Type
+  {
+    PDB, FILE
+  }
   Hashtable properties;
 
-  /* (non-Javadoc)
+  /*
+   * (non-Javadoc)
+   * 
    * @see java.lang.Object#equals(java.lang.Object)
    */
+  @Override
   public boolean equals(Object obj)
   {
-    if (obj==null || !(obj instanceof PDBEntry))
+    if (obj == null || !(obj instanceof PDBEntry))
     {
-        return false;
+      return false;
     }
-    if (obj==this)
+    if (obj == this)
+    {
       return true;
+    }
     PDBEntry o = (PDBEntry) obj;
-    return (file==o.file || (file!=null && o.file!=null && o.file.equals(file)))
-    && (type==o.type || (type!=null && o.type!=null && o.type.equals(type)))
-    && (id==o.id || (id!=null && o.id!=null && o.id.equalsIgnoreCase(id)))
-    && (properties==o.properties || (properties!=null && o.properties!=null && properties.equals(o.properties)));
+    return /*
+            * (file == o.file || (file != null && o.file != null && o.file
+            * .equals(file))) &&
+            */
+    (type == o.type || (type != null && o.type != null && o.type
+                    .equals(type)))
+            && (id == o.id || (id != null && o.id != null && o.id
+                    .equalsIgnoreCase(id)))
+            && (chainCode == o.chainCode || (chainCode != null
+                    && o.chainCode != null && o.chainCode
+                      .equalsIgnoreCase(chainCode)))
+            && (properties == o.properties || (properties != null
+                    && o.properties != null && properties
+                      .equals(o.properties)));
   }
+
+  /**
+   * Default constructor
+   */
   public PDBEntry()
-  {}
-  public PDBEntry(PDBEntry entry) {
+  {
+  }
+
+  /**
+   * Constructor given file path and PDB id.
+   * 
+   * @param filePath
+   */
+  // public PDBEntry(String filePath, String pdbId)
+  // {
+  // this.file = filePath;
+  // this.id = pdbId;
+  // }
+  
+  public PDBEntry(String pdbId, String chain, PDBEntry.Type type,
+          String filePath)
+  {
+    this.id = pdbId;
+    this.chainCode = chain;
+    this.type = type.toString();
+    this.file = filePath;
+  }
+
+  /**
+   * Copy constructor.
+   * 
+   * @param entry
+   */
+  public PDBEntry(PDBEntry entry)
+  {
     file = entry.file;
     type = entry.type;
     id = entry.id;
-    if (entry.properties!=null)
+    chainCode = entry.chainCode;
+    if (entry.properties != null)
     {
       properties = (Hashtable) entry.properties.clone();
     }
   }
+
   public void setFile(String file)
   {
     this.file = file;
@@ -65,9 +125,9 @@ public class PDBEntry
     return file;
   }
 
-  public void setType(String type)
+  public void setType(PDBEntry.Type type)
   {
-    this.type = type;
+    this.type = type.toString();
   }
 
   public String getType()
@@ -95,4 +155,14 @@ public class PDBEntry
     return properties;
   }
 
+  public String getChainCode()
+  {
+    return chainCode;
+  }
+
+  public void setChainCode(String chainCode)
+  {
+    this.chainCode = chainCode;
+  }
+
 }