added some assertions and rangechecks for insert/deleteChar methods.
authorjprocter <Jim Procter>
Mon, 23 May 2005 17:49:04 +0000 (17:49 +0000)
committerjprocter <Jim Procter>
Mon, 23 May 2005 17:49:04 +0000 (17:49 +0000)
src/jalview/datamodel/Sequence.java

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