From: jprocter <Jim Procter>
Date: Mon, 23 May 2005 17:49:04 +0000 (+0000)
Subject: added some assertions and rangechecks for insert/deleteChar methods.
X-Git-Tag: Release_2_0~227
X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=921d79b2f0a5866643397950b95bf8b0901c4b56;p=jalview.git

added some assertions and rangechecks for insert/deleteChar methods.
---

diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java
index 8928425..ab35c38 100755
--- a/src/jalview/datamodel/Sequence.java
+++ b/src/jalview/datamodel/Sequence.java
@@ -91,8 +91,13 @@ public class Sequence implements SequenceI
     return this.sequence;
   }
   public String getSequence(int start,int end) {
-    if(end>sequence.length())
+    // JBPNote - left to user to pad the result here (TODO:Decide on this policy)
+    if(start>=sequence.length())
+      return "";
+
+    if(end>=sequence.length())
       end = sequence.length();
+
     return this.sequence.substring(start,end);
   }
 
@@ -164,12 +169,19 @@ public class Sequence implements SequenceI
 
   public void deleteCharAt(int i)
   {
+    if (i>=sequence.length())
+      return;
     sequence = sequence.substring(0,i) + sequence.substring(i+1);
   }
 
   public void deleteChars(int i, int j)
   {
-    sequence = sequence.substring(0,i) + sequence.substring(j);
+    if (i>=sequence.length())
+      return;
+    if (j>=sequence.length())
+      sequence = sequence.substring(0,i);
+    else
+      sequence = sequence.substring(0,i) + sequence.substring(j);
   }
 
   public void insertCharAt(int i, char c)
@@ -184,7 +196,11 @@ public class Sequence implements SequenceI
     if (i < sequence.length()) {
       sequence = tmp.substring(0,i) + String.valueOf(c) + tmp.substring(i);
     } else {
-      sequence = tmp + String.valueOf(c);
+      // JBPNote : padding char at end of sequence. We'll not get away with this when we insert residues, I bet!
+      char[] ch = new char[1+i-sequence.length()];
+      for (int j=0, k=ch.length; j<k; j++)
+        ch[j] = c;
+      sequence = tmp + String.valueOf(ch);
     }
 
   }