From 2009.igem.org
/*
Copyright: synbiowave
License: GPL
Authors: Jörg Wassolesk
Version: 0.1
DESCRIPTION:
This class provides the functions for handling DAS DNA requests.
*/
package org.synbiowave.biobrick;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
// TODO: Auto-generated Javadoc
/**
* a class to parse the XML response of a DAS-DNA request.
*
* @author Jörg
*/
public class BioBrick_DAS_DNA_Handler extends DefaultHandler {
/** The sequence. */
String sequence ;
/** The length. */
int length ;
/** The dna_flag. */
boolean dna_flag;
/**
* Instantiates a new bio brick_ da s_ dn a_ handler.
*/
public BioBrick_DAS_DNA_Handler() {
super();
// TODO Auto-generated constructor stub
sequence = "" ;
length = 0;
dna_flag = false ;
}
/* (non-Javadoc)
* @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String,
* java.lang.String, org.xml.sax.Attributes)
*/
public void startElement (String uri, String name, String qName, Attributes atts){
if ( qName.equals("DNA")){
//System.out.println("new element >" + name + "< >" + qName+"<");
// was : length
String lenstr = atts.getValue("length");
length = Integer.parseInt(lenstr);
dna_flag = true ;
}
}
/* (non-Javadoc)
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
*/
public void characters (char ch[], int start, int length){
//System.out.print("Characters: \"");
if (dna_flag)
for (int i = start; i < start + length; i++) {
switch (ch[i]) {
case '\\':
//System.out.print("\\\\");
break;
case '"':
//System.out.print("\\\"");
break;
case '\n':
//System.out.print("\\n");
break;
case '\r':
//System.out.print("\\r");
break;
case '\t':
//System.out.print("\\t");
break;
case ' ':
break;
default:
sequence = sequence + ch[i];
//System.out.print(ch[i]);
break;
}
}
//System.out.print("\"\n");
}
/**
* Gets the _sequence.
*
* @return the _sequence
*/
public String get_sequence() {
if ( length != sequence.length()) {
System.err.println("Sequence does not match specified length!");
}
return sequence;
}
}