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); } }