X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fbiojava%2Fdasobert%2Fdas%2FSequenceThread.java;h=76008b636d3126a24b4daffc2710243b8ef00533;hb=506d60f0e188723ddc91c26824b41ac7034df3fe;hp=8f54a9f05c40e3e37dec304f3cf8b63a7cc103bc;hpb=ac8acb905e84708b759ae1e87eaf6691d9376d57;p=jalview.git diff --git a/src/org/biojava/dasobert/das/SequenceThread.java b/src/org/biojava/dasobert/das/SequenceThread.java index 8f54a9f..76008b6 100755 --- a/src/org/biojava/dasobert/das/SequenceThread.java +++ b/src/org/biojava/dasobert/das/SequenceThread.java @@ -16,7 +16,7 @@ * at: * * http://www.biojava.org/ - * + * * Created on Nov 20, 2005 * */ @@ -41,221 +41,253 @@ import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.XMLReader; import java.util.*; -/** a thread that gets the sequence from a DAS server - * +/** + * a thread that gets the sequence from a DAS server + * * @author Andreas Prlic - * + * */ -public class SequenceThread -extends Thread { - - Das1Source[] sequenceServers; - String sp_accession; - List seqListeners; - static Logger logger = Logger.getLogger("org.biojava.spice"); - - public SequenceThread(String sp_accession,Das1Source ds ) { - super(); - Das1Source[] dss =new Das1Source[1]; - dss[0] = ds; - this.sp_accession = sp_accession; - this.sequenceServers =dss ; - clearSequenceListeners(); - } - public SequenceThread(String sp_accession,Das1Source[] ds ) { - super(); +public class SequenceThread extends Thread +{ - this.sp_accession = sp_accession; - this.sequenceServers =ds ; - clearSequenceListeners(); - } + Das1Source[] sequenceServers; - public void clearSequenceListeners(){ - seqListeners = new ArrayList(); - } + String sp_accession; - public void addSequenceListener(SequenceListener lis){ - seqListeners.add(lis); - } + List seqListeners; - public void run() { - getSequence(); - } + String version; - public void getSequence( ){ + static Logger logger = Logger.getLogger("org.biojava.spice"); - boolean gotSequence = false ; + public SequenceThread(String sp_accession, Das1Source ds) + { + super(); + Das1Source[] dss = new Das1Source[1]; + dss[0] = ds; + this.sp_accession = sp_accession; + this.sequenceServers = dss; + clearSequenceListeners(); + version = ""; + } - for ( int i = 0 ; i< sequenceServers.length; i++){ + public SequenceThread(String sp_accession, Das1Source[] ds) + { + super(); - if ( gotSequence ) break ; + this.sp_accession = sp_accession; + this.sequenceServers = ds; + clearSequenceListeners(); + } - Das1Source ds = sequenceServers[i]; - String url = ds.getUrl() ; - char lastChar = url.charAt(url.length()-1); - if ( ! (lastChar == '/') ) - url +="/" ; - String dascmd = url + "sequence?segment="; - String connstr = dascmd + sp_accession ; + public void clearSequenceListeners() + { + seqListeners = new ArrayList(); + } - try { + public void addSequenceListener(SequenceListener lis) + { + seqListeners.add(lis); + } - String sequence = retrieveSequence(connstr); - // bug in aristotle das source? - sequence.replaceAll(" ",""); - gotSequence = true ; - // set the sequence ... + public void run() + { + getSequence(); + } - triggerNewSequence(sp_accession,sequence); + public void getSequence() + { + boolean gotSequence = false; - return; - } - catch (Exception ex) { - ex.printStackTrace(); - logger.warning(ex.getMessage()); + for (int i = 0; i < sequenceServers.length; i++) + { - //triggerException(ex); + if (gotSequence) + break; - } - } + Das1Source ds = sequenceServers[i]; + String url = ds.getUrl(); + char lastChar = url.charAt(url.length() - 1); + if (!(lastChar == '/')) + url += "/"; + String dascmd = url + "sequence?segment="; + String connstr = dascmd + sp_accession; - logger.log(Level.WARNING,"could not retreive UniProt sequence from any available DAS sequence server"); + try + { + version = ""; - triggerNoSequence(sp_accession); + String sequence = retrieveSequence(connstr); + // bug in aristotle das source? + sequence.replaceAll(" ", ""); + gotSequence = true; + // set the sequence ... - } + triggerNewSequence(sp_accession, sequence, ds, version); + return; + } catch (Exception ex) + { + ex.printStackTrace(); + logger.warning(ex.getMessage()); + // triggerException(ex); -// private void triggerException(Exception e){ -// Iterator iter = seqListeners.iterator(); -// while (iter.hasNext()){ -// SequenceListener li = (SequenceListener)iter.next(); -// li.exceptionOccured(e); -// } -// } + } + } - private void triggerNewSequence(String sp_accession,String sequence){ + logger + .log( + Level.WARNING, + "could not retreive UniProt sequence from any available DAS sequence server"); - Iterator iter = seqListeners.iterator(); - while (iter.hasNext()){ - SequenceListener li = (SequenceListener)iter.next(); - //SequenceEvent event = new SequenceEvent(sequence); - SequenceEvent event = new SequenceEvent(sp_accession,sequence); - li.newSequence(event); - } - } + triggerNoSequence(sp_accession); + + } - private void triggerNoSequence(String ac){ + // private void triggerException(Exception e){ + // Iterator iter = seqListeners.iterator(); + // while (iter.hasNext()){ + // SequenceListener li = (SequenceListener)iter.next(); + // li.exceptionOccured(e); + // } + // } - Iterator iter = seqListeners.iterator(); - while (iter.hasNext()){ - SequenceListener li = (SequenceListener)iter.next(); - li.noObjectFound(ac); - } + private void triggerNewSequence(String sp_accession, String sequence, + Das1Source source, String version) + { + Iterator iter = seqListeners.iterator(); + while (iter.hasNext()) + { + SequenceListener li = (SequenceListener) iter.next(); + // SequenceEvent event = new SequenceEvent(sequence); + SequenceEvent event = new SequenceEvent(sp_accession, sequence, + version); + event.setSource(source); + li.newSequence(event); } + } + + private void triggerNoSequence(String ac) + { - /** retrieve the Sequence from a DAS server. - * - * @param connstr - the DAS - request string. e.g. http://www.ebi.ac.uk/das-srv/uniprot/das/aristotle/sequence?segment=P00280 - * @return the requested Sequence - * @throws Exception - */ - public String retrieveSequence( String connstr) - throws Exception + Iterator iter = seqListeners.iterator(); + while (iter.hasNext()) { + SequenceListener li = (SequenceListener) iter.next(); + li.noObjectFound(ac); + } - //logger.finest("trying: " + connstr) ; - URL dasUrl = new URL(connstr); - //DAS_httpConnector dhtp = new DAS_httpConnector() ; - logger.info("requesting sequence from " + connstr); - InputStream dasInStream =open(dasUrl); - - - SAXParserFactory spfactory = - SAXParserFactory.newInstance(); - - // never do this - //String vali = System.getProperty("XMLVALIDATION"); - String vali = "false"; - boolean validate = false ; - if ((vali != null) && ( vali.equals("true")) ) - validate = true ; - spfactory.setValidating(validate); - - SAXParser saxParser = null ; - - try{ - saxParser = - spfactory.newSAXParser(); - } catch (ParserConfigurationException e) { - //e.printStackTrace(); - logger.log(Level.FINER,"Uncaught exception", e); - } - - XMLReader xmlreader = saxParser.getXMLReader(); - - try { - xmlreader.setFeature("http://xml.org/sax/features/validation", validate); - } catch (SAXException e) { - logger.finer("Cannot set validation to " + validate); - logger.log(Level.FINER,"Uncaught exception", e); - } - - try { - xmlreader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",validate); - } catch (SAXNotRecognizedException e){ - //e.printStackTrace(); - logger.finer("Cannot set load-external-dtd to" + validate); - logger.log(Level.FINER,"Uncaught exception", e); - //System.err.println("Cannot set load-external-dtd to" + validate); - } - - - //DAS_DNA_Handler cont_handle = new DAS_DNA_Handler() ; - DAS_Sequence_Handler cont_handle = new DAS_Sequence_Handler() ; - xmlreader.setContentHandler(cont_handle); - xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler()); - InputSource insource = new InputSource() ; - insource.setByteStream(dasInStream); - - xmlreader.parse(insource); - String sequence = cont_handle.get_sequence(); - //logger.finest("Got sequence from DAS: " +sequence); - logger.exiting(this.getClass().getName(), "retreiveSequence", sequence); - return sequence ; + } + + /** + * retrieve the Sequence from a DAS server. + * + * @param connstr - + * the DAS - request string. e.g. + * http://www.ebi.ac.uk/das-srv/uniprot/das/aristotle/sequence?segment=P00280 + * @return the requested Sequence + * @throws Exception + */ + public String retrieveSequence(String connstr) throws Exception + { + + // logger.finest("trying: " + connstr) ; + URL dasUrl = new URL(connstr); + // DAS_httpConnector dhtp = new DAS_httpConnector() ; + logger.info("requesting sequence from " + connstr); + InputStream dasInStream = open(dasUrl); + + SAXParserFactory spfactory = SAXParserFactory.newInstance(); + + // never do this + // String vali = System.getProperty("XMLVALIDATION"); + String vali = "false"; + boolean validate = false; + if ((vali != null) && (vali.equals("true"))) + validate = true; + spfactory.setValidating(validate); + + SAXParser saxParser = null; + + try + { + saxParser = spfactory.newSAXParser(); + } catch (ParserConfigurationException e) + { + // e.printStackTrace(); + logger.log(Level.FINER, "Uncaught exception", e); } - private InputStream open(URL url) { - { + XMLReader xmlreader = saxParser.getXMLReader(); - InputStream inStream = null; - try{ + try + { + xmlreader.setFeature("http://xml.org/sax/features/validation", + validate); + } catch (SAXException e) + { + logger.finer("Cannot set validation to " + validate); + logger.log(Level.FINER, "Uncaught exception", e); + } + try + { + xmlreader + .setFeature( + "http://apache.org/xml/features/nonvalidating/load-external-dtd", + validate); + } catch (SAXNotRecognizedException e) + { + // e.printStackTrace(); + logger.finer("Cannot set load-external-dtd to" + validate); + logger.log(Level.FINER, "Uncaught exception", e); + // System.err.println("Cannot set load-external-dtd to" + validate); + } + // DAS_DNA_Handler cont_handle = new DAS_DNA_Handler() ; + DAS_Sequence_Handler cont_handle = new DAS_Sequence_Handler(); + xmlreader.setContentHandler(cont_handle); + xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler()); + InputSource insource = new InputSource(); + insource.setByteStream(dasInStream); + xmlreader.parse(insource); + String sequence = cont_handle.get_sequence(); + version = cont_handle.getVersion(); + // logger.finest("Got sequence from DAS: " +sequence); - HttpURLConnection huc = null; + logger.exiting(this.getClass().getName(), "retreiveSequence", sequence); + return sequence; + } - huc = DAS_FeatureRetrieve.openHttpURLConnection(url); + private InputStream open(URL url) + { + { + InputStream inStream = null; + try + { - logger.finest(huc.getResponseMessage()); + HttpURLConnection huc = null; - inStream = huc.getInputStream(); + huc = DAS_FeatureRetrieve.openHttpURLConnection(url); + logger.finest(huc.getResponseMessage()); - } - catch ( Exception ex){ - ex.printStackTrace(); - logger.log(Level.WARNING,"exception occured", ex); - } + inStream = huc.getInputStream(); - return inStream; - } + } catch (Exception ex) + { + ex.printStackTrace(); + logger.log(Level.WARNING, "exception occured", ex); + } + return inStream; } + } + }