public class BlastLikeSAXParser extends Object
The SAX2 events produced are as if the input to the parser was an XML file validating against the biojava BlastLikeDataSetCollection DTD. There is no requirement for an intermediate conversion of native output to XML format. An application of the parsing framework, however, is to create XML format files from native output files.
The biojava Blast-like parsing framework is designed to uses minimal memory,so that in principle, extremely large native outputs can be parsed and XML ContentHandlers can listen only for small amounts of information.
The framework currently supports parsing of native output from the following bioinformatics programs. Please note that if you are using different versions of NCBI or WU Blast to those listed below, it is worth considering trying setting the parsing mode to Lazy, which means parsing will be attempted if the program is recognised, regardless of version.
Notes to SAX driver writers
The framework that this parser is built on is designed to be extensible with support for both different pieces of software (i.e. not just software that produces Blast-like output), and multiple versions of programs.
This class inherits from the org.biojava.bio.program.sax.AbstractNativeAppSAXParser abstract base class. The abstract base class is a good place to start looking if you want to write new native application SAX2 parsers. This and releated classes have only package-level visibility. Typically, application writers are expected to provide a facade class in this package (similar to the current class) to allow users access to functionality.
NB Support for InputSource is not complete due to the fact that URLs are not resolved and cannot, therefore, be used as an InputSource. System pathnames, ByteStreams and CharacterStreams, however, are all supported.
Copyright © 2000 Cambridge Antibody Technology.
Primary author -
BlastLikeToXMLConverter
Modifier and Type | Field and Description |
---|---|
protected int |
iState |
protected String |
oFullNamespacePrefix |
protected ContentHandler |
oHandler |
protected String |
oNamespacePrefix |
protected boolean |
tNamespacePrefixes |
protected boolean |
tNamespaces |
Constructor and Description |
---|
BlastLikeSAXParser()
Initialises SAXParser, and sets default namespace prefix
to "biojava".
|
Modifier and Type | Method and Description |
---|---|
void |
addPrefixMapping(String poPrefix,
String poURI)
Adds a namespace prefix to URI mapping as (key,value) pairs.
|
protected void |
changeState(int piState)
Centralise chaining of iState field to help
with debugging.
|
protected void |
characters(char[] ch,
int start,
int length)
Utility method to centralize the sending of a SAX characters
message a document handler.
|
protected void |
endElement(org.biojava.bio.program.sax.QName poQName)
Utility method to centralize the sending of a SAX endElement
message a document handler.
|
ContentHandler |
getContentHandler()
Return the content handler.
|
protected BufferedReader |
getContentStream(InputSource poSource)
Create a stream from an an InputSource, picking the
correct stream according to order of precedance.
|
DTDHandler |
getDTDHandler()
Do-nothing implementation of interface method
|
EntityResolver |
getEntityResolver()
Do-nothing implementation of interface method
|
ErrorHandler |
getErrorHandler()
Do-nothing implementation of interface method
|
boolean |
getFeature(String poName)
Do-nothing implementation of interface method
|
String |
getNamespacePrefix()
Describe
getNamespacePrefix method here. |
boolean |
getNamespacePrefixes()
Support SAX2 configuration of namespace support of parser.
|
boolean |
getNamespaces()
Support SAX2 configuration of namespace support of parser.
|
Object |
getProperty(String name)
Do-nothing implementation of interface method
|
String |
getURIFromPrefix(String poPrefix)
Gets the URI for a namespace prefix, given that prefix,
or null if the prefix is not recognised.
|
void |
parse(InputSource poSource)
parse initiates the parsing operation. |
void |
parse(String poSystemId)
Full implementation of interface method.
|
String |
prefix(String poElementName)
Given an unprefixed element name, returns
a new element name with a namespace prefix
|
void |
setContentHandler(ContentHandler poHandler)
Allow an application to register a content event handler.
|
void |
setDTDHandler(DTDHandler handler)
Do-nothing implementation of interface method
|
void |
setEntityResolver(EntityResolver resolver)
Do-nothing implementation of interface method
|
void |
setErrorHandler(ErrorHandler handler)
Do-nothing implementation of interface method
|
void |
setFeature(String poName,
boolean value)
Handles support for ReasoningDomain and Namespace-prefixes
|
void |
setModeLazy()
Setting the mode to lazy means that, if the program is recognised,
e.g.
|
void |
setModeStrict()
This is the default, parsing will be attempted only if both
the program e.g.
|
void |
setNamespacePrefix(String poPrefix) |
void |
setProperty(String name,
Object value)
Do-nothing implementation of interface method
|
protected void |
startElement(org.biojava.bio.program.sax.QName poQName,
Attributes atts)
Utility method to centralize sending of a SAX
startElement message to document handler
|
protected ContentHandler oHandler
protected boolean tNamespaces
protected boolean tNamespacePrefixes
protected String oNamespacePrefix
protected String oFullNamespacePrefix
protected int iState
public BlastLikeSAXParser()
public void parse(InputSource poSource) throws IOException, SAXException
parse
initiates the parsing operation.parse
in interface XMLReader
poSource
- an InputSource
.IOException
- if an error occurs.SAXException
- if an error occurs.public void setModeStrict()
public void setModeLazy()
public void setContentHandler(ContentHandler poHandler)
Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.
setContentHandler
in interface XMLReader
poHandler
- a ContentHandler
The XML content handlerNullPointerException
- If the handler argument is nullpublic ContentHandler getContentHandler()
getContentHandler
in interface XMLReader
ContentHandler
The current content handler,
or null if none has been registered.public void parse(String poSystemId) throws IOException, SAXException
parse
in interface XMLReader
IOException
SAXException
public boolean getFeature(String poName) throws SAXNotRecognizedException, SAXNotSupportedException
getFeature
in interface XMLReader
SAXNotRecognizedException
SAXNotSupportedException
public void setFeature(String poName, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
setFeature
in interface XMLReader
SAXNotRecognizedException
SAXNotSupportedException
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
getProperty
in interface XMLReader
SAXNotRecognizedException
SAXNotSupportedException
public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException
setProperty
in interface XMLReader
SAXNotRecognizedException
SAXNotSupportedException
public void setEntityResolver(EntityResolver resolver)
setEntityResolver
in interface XMLReader
public EntityResolver getEntityResolver()
getEntityResolver
in interface XMLReader
public void setDTDHandler(DTDHandler handler)
setDTDHandler
in interface XMLReader
public DTDHandler getDTDHandler()
getDTDHandler
in interface XMLReader
public void setErrorHandler(ErrorHandler handler)
setErrorHandler
in interface XMLReader
public ErrorHandler getErrorHandler()
getErrorHandler
in interface XMLReader
protected void startElement(org.biojava.bio.program.sax.QName poQName, Attributes atts) throws SAXException
poQName
- a QName
valueatts
- an Attributes
valueSAXException
- if an error occursprotected void endElement(org.biojava.bio.program.sax.QName poQName) throws SAXException
poQName
- -SAXException
- thrown ifthrown
- ifprotected void characters(char[] ch, int start, int length) throws SAXException
ch
- -start
- -length
- -SAXException
- thrown ifthrown
- ifpublic boolean getNamespaces()
public boolean getNamespacePrefixes()
public void addPrefixMapping(String poPrefix, String poURI)
poPrefix
- a String
representation of the
namespace prefixpoURI
- a String
representation of the URI
for the namespace prefix.public String getURIFromPrefix(String poPrefix)
poPrefix
- a String
The namespace prefix.public void setNamespacePrefix(String poPrefix)
poPrefix
- a String
valuepublic String getNamespacePrefix()
getNamespacePrefix
method here.String
valuepublic String prefix(String poElementName)
String
valueprotected BufferedReader getContentStream(InputSource poSource)
poSource
- an InputSource
valueBufferedReader
valueprotected void changeState(int piState)
piState
- an int
valueCopyright © 2014 BioJava. All rights reserved.