From 921d79b2f0a5866643397950b95bf8b0901c4b56 Mon Sep 17 00:00:00 2001 From: jprocter Date: Mon, 23 May 2005 17:49:04 +0000 Subject: [PATCH] added some assertions and rangechecks for insert/deleteChar methods. --- src/jalview/datamodel/Sequence.java | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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