JAL-2001 use fast column selection test
[jalview.git] / src / jalview / datamodel / Sequence.java
index fd710bd..6c8cbc0 100755 (executable)
@@ -219,7 +219,8 @@ public class Sequence extends ASequence implements SequenceI
     initSeqAndName(seq.getName(), seq.getSequence(), seq.getStart(),
             seq.getEnd());
     description = seq.getDescription();
-    sourceDBRef = seq.getSourceDBRef();
+    sourceDBRef = seq.getSourceDBRef() == null ? null : new DBRefEntry(
+            seq.getSourceDBRef());
     if (seq.getSequenceFeatures() != null)
     {
       SequenceFeature[] sf = seq.getSequenceFeatures();
@@ -265,11 +266,10 @@ public class Sequence extends ASequence implements SequenceI
     }
     if (seq.getAllPDBEntries() != null)
     {
-      Vector ids = seq.getAllPDBEntries();
-      Enumeration e = ids.elements();
-      while (e.hasMoreElements())
+      Vector<PDBEntry> ids = seq.getAllPDBEntries();
+      for (PDBEntry pdb : ids)
       {
-        this.addPDBId(new PDBEntry((PDBEntry) e.nextElement()));
+        this.addPDBId(new PDBEntry(pdb));
       }
     }
   }
@@ -289,6 +289,7 @@ public class Sequence extends ASequence implements SequenceI
   @Override
   public synchronized void addSequenceFeature(SequenceFeature sf)
   {
+    // TODO add to dataset sequence instead if there is one?
     if (sequenceFeatures == null)
     {
       sequenceFeatures = new SequenceFeature[0];
@@ -420,7 +421,7 @@ public class Sequence extends ASequence implements SequenceI
   @Override
   public Vector<PDBEntry> getAllPDBEntries()
   {
-    return pdbIds;
+    return pdbIds == null ? new Vector<PDBEntry>() : pdbIds;
   }
 
   /**
@@ -611,17 +612,15 @@ public class Sequence extends ASequence implements SequenceI
   }
 
   /**
-   * DOCUMENT ME!
-   * 
-   * @param i
-   *          DOCUMENT ME!
+   * Returns the character of the aligned sequence at the given position (base
+   * zero), or space if the position is not within the sequence's bounds
    * 
-   * @return DOCUMENT ME!
+   * @return
    */
   @Override
   public char getCharAt(int i)
   {
-    if (i < sequence.length)
+    if (i >= 0 && i < sequence.length)
     {
       return sequence[i];
     }
@@ -912,7 +911,7 @@ public class Sequence extends ASequence implements SequenceI
   }
 
   @Override
-  public void setDBRef(DBRefEntry[] dbref)
+  public void setDBRefs(DBRefEntry[] dbref)
   {
     dbrefs = dbref;
   }
@@ -931,6 +930,7 @@ public class Sequence extends ASequence implements SequenceI
   @Override
   public void addDBRef(DBRefEntry entry)
   {
+    // TODO add to dataset sequence instead if there is one?
     if (dbrefs == null)
     {
       dbrefs = new DBRefEntry[0];
@@ -964,6 +964,7 @@ public class Sequence extends ASequence implements SequenceI
   @Override
   public void setDatasetSequence(SequenceI seq)
   {
+    // TODO check for circular reference before setting?
     datasetSequence = seq;
   }
 
@@ -1080,8 +1081,8 @@ public class Sequence extends ASequence implements SequenceI
       datasetSequence.setDescription(getDescription());
       setSequenceFeatures(null);
       // move database references onto dataset sequence
-      datasetSequence.setDBRef(getDBRefs());
-      setDBRef(null);
+      datasetSequence.setDBRefs(getDBRefs());
+      setDBRefs(null);
       datasetSequence.setPDBId(getAllPDBEntries());
       setPDBId(null);
       datasetSequence.updatePDBIds();