--- /dev/null
+package jalview.io;
+
+import jalview.io.xdb.genbank.GenBankFeature;
+import jalview.io.xdb.genbank.GenBankSequence;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+public class DnaUtils {
+
+ /**
+ * @param gbf CDS feature data
+ * @param sequences ORIGIN data
+ * @return Nucleotid String (sequence) of CDS
+ */
+ public static String getSequence(GenBankFeature gbf, Vector<GenBankSequence> sequences){
+ if (!gbf.getType().equals(GenBankFeature.CDS)){
+ //If the feature is not a CDS, no sequence is returned
+ return null;
+ }else{
+ String range = gbf.getQualifier("range");
+ if (range.startsWith("join")){
+ //TODO
+ //It's a composed sequence
+ }else{
+ //It's a simple range
+ String[] positions = range.split("..");
+ int initRange = Integer.parseInt(positions[0]);
+ int endRange = Integer.parseInt(positions[1]);
+ String sourceSequence = getNucleotidesFromSequenceVector(sequences);
+ return sourceSequence.substring(initRange, endRange);
+ }
+ }
+ return null;
+
+ }
+ private static boolean isSequenceInRange(int initRange, int endRange, GenBankSequence gbs){
+ return ((initRange>=gbs.getId()) && (endRange>=gbs.getId()));
+ }
+ private static String getNucleotidesInRangeFromSequence(int initRange, int endRange, GenBankSequence gbs){
+ return "";
+ }
+ public static String getNucleotidesFromSequenceVector(Vector<GenBankSequence> v){
+ StringBuffer sb = new StringBuffer();
+ for (GenBankSequence gbs:v){
+ Vector<String> seqs = gbs.getSequences();
+ for (String s:seqs)
+ sb.append(s);
+ }
+ return sb.toString();
+ }
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+}