safer copy constructor
[jalview.git] / src / jalview / datamodel / DBRefEntry.java
index 03445cd..b6c3192 100755 (executable)
@@ -32,15 +32,25 @@ public class DBRefEntry
   {
     this(source, version, accessionId, null);
   }
+  /**
+   * 
+   * @param source canonical source (uppercase only)
+   * @param version (source dependent version string)
+   * @param accessionId (source dependent accession number string)
+   * @param map (mapping from local sequence numbering to source accession numbering)
+   */
   public DBRefEntry(String source, String version, String accessionId, Mapping map) {
-    this.source = source;
+    this.source = source.toUpperCase();
     this.version = version;
     this.accessionId = accessionId;
     this.map = map;
   }
   public DBRefEntry(DBRefEntry entry)
   {
-    this(new String(entry.source), new String(entry.version), new String(entry.accessionId), new Mapping(entry.map));
+    this((entry.source==null ? "" : new String(entry.source)), 
+            (entry.version==null ? "" : new String(entry.version)),
+            (entry.accessionId==null ? "" : new String(entry.accessionId)),
+            (entry.map==null ? null : new Mapping(entry.map)));
   }
   public boolean equals(DBRefEntry entry) {
       if (entry==this)
@@ -67,7 +77,7 @@ public class DBRefEntry
     }
     if (entry==this)
       return true;
-    if ((source!=null && entry.source!=null && source.equals(entry.source))
+    if ((source!=null && entry.source!=null && source.equalsIgnoreCase(entry.source))
             &&
             (accessionId!=null && entry.accessionId!=null && accessionId.equalsIgnoreCase(entry.accessionId))
             &&