Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.bio.program.sax.blastxml;
import org.biojava.bio.seq.io.game.ElementRecognizer;
import org.biojava.utils.stax.DelegationManager;
import org.biojava.utils.stax.StAXContentHandler;
import org.biojava.utils.stax.StringElementHandlerBase;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
/**
* @author David Huen
*/
class HitHandler
extends StAXFeatureHandler
{
// create static factory class that makes an instance
// of this class.
public final static StAXHandlerFactory HIT_HANDLER_FACTORY
=
new StAXHandlerFactory() {
public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
return new HitHandler(staxenv);
}
};
// class variables
AttributesImpl hitAttrs = null;
AttributesImpl hitIdAttrs = null;
String sHit_def = null;
// constructor
public HitHandler(StAXFeatureHandler staxenv)
{
super(staxenv);
// System.out.println("HitHandler staxenv " + staxenv);
// // acquire value of with inner class.
// super.addHandler(new ElementRecognizer.ByLocalName("Hit_num"),
// HitPropertyHandler.HIT_PROPERTY_HANDLER_FACTORY);
// acquire value of with inner class.
super.addHandler(new ElementRecognizer.ByLocalName("Hit_id"),
new StAXHandlerFactory() {
public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
return new StringElementHandlerBase() {
public void startElement(
String nsURI,
String localName,
String qName,
Attributes attrs,
DelegationManager dm)
throws SAXException
{
// generate start of
hitIdAttrs = new AttributesImpl();
// must call superclass to keep track of levels
super.startElement(nsURI, localName, qName, attrs, dm);
}
public void setStringValue(String s) {
hitIdAttrs.addAttribute(biojavaUri, "id", "id", CDATA, s.trim());
}
};
}
}
);
// acquire value of with inner class.
super.addHandler(new ElementRecognizer.ByLocalName("Hit_def"),
new StAXHandlerFactory() {
public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
return new StringElementHandlerBase() {
public void setStringValue(String s) throws SAXException {
sHit_def = s.trim();
}
};
}
}
);
// acquire value of with inner class. This needs to become and attribute of Hit.
super.addHandler(new ElementRecognizer.ByLocalName("Hit_len"),
new StAXHandlerFactory() {
public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
return new StringElementHandlerBase() {
public void startElement(
String nsURI,
String localName,
String qName,
Attributes attrs,
DelegationManager dm)
throws SAXException
{
if (hitAttrs == null) hitAttrs = new AttributesImpl();
// must call superclass to keep track of levels
super.startElement(nsURI, localName, qName, attrs, dm);
}
public void setStringValue(String s) throws SAXException {
hitAttrs.addAttribute(biojavaUri, "sequenceLength", "sequenceLength", CDATA, s.trim());
}
public void endElement(
String nsURI,
String localName,
String qName,
StAXContentHandler handler)
throws SAXException
{
// necessary as staxenv cannot be final and therefore
// staxenv.listener cannot be accessed from inner class
ContentHandler listener = getListener();
// get superclass to process the PCDATA for this element
super.endElement(nsURI, localName, qName, handler);
// we now generate the Hit element
listener.startElement(biojavaUri, "Hit", biojavaUri + ":Hit", hitAttrs);
// create element
if (hitIdAttrs != null) {
hitIdAttrs.addAttribute(biojavaUri, "metaData", "metaData", CDATA, "none");
listener.startElement(biojavaUri, "HitId", biojavaUri + ":HitId", hitIdAttrs);
listener.endElement(biojavaUri, "HitId", biojavaUri + ":HitId");
}
// generate start of
if (sHit_def != null) {
listener.startElement(biojavaUri, "HitDescription", biojavaUri + ":HitDescription", new AttributesImpl());
listener.characters(sHit_def.toCharArray(), 0, sHit_def.length());
listener.endElement(biojavaUri, "HitDescription", biojavaUri + ":HitDescription");
}
}
};
}
}
);
// handle with its own handler.
// the handling here is a tad perverse in that the sequence length has
// to be saved as an attribute of although it is present as
// an element. This would mean that it cannot be created in the
// startElementHandler. Creating it in the endElementHandler would
// cause it to fail to contain the child elements correctly.
super.addHandler(new ElementRecognizer.ByLocalName("Hit_hsps"),
new StAXHandlerFactory() {
public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
return new HitHspsHandler(staxenv) {
public void startElementHandler(
String nsURI,
String localName,
String qName,
Attributes attrs)
throws SAXException
{
// now I generate my own start element
super.startElementHandler(nsURI, localName, qName, attrs);
}
};
}
}
);
}
public void endElementHandler(
String nsURI,
String localName,
String qName,
StAXContentHandler handler)
throws SAXException
{
staxenv.listener.endElement(biojavaUri, "Hit", biojavaUri + ":Hit");
}
}