001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021package org.biojava.bio.seq.io.agave;
022import org.xml.sax.Attributes;
023import org.xml.sax.SAXException;
024
025/**
026 * Moves view attributes into annotation properties.
027 * <p>
028 * start --> view_start
029 * <p>
030 * end --> view_end
031 *
032 * @author Hanning Ni    Doubletwist Inc
033 * @author Keith James
034 * @author Matthew Pocock
035 */
036public class AGAVEViewPropHandler
037               extends StAXPropertyHandler
038{
039  // set up factory method
040  public static final StAXHandlerFactory AGAVE_VIEW_PROP_HANDLER_FACTORY
041    = new StAXHandlerFactory() {
042    public StAXContentHandler getHandler(StAXFeatureHandler staxenv) {
043      return new AGAVEViewPropHandler(staxenv);
044    }
045  };
046
047  AGAVEViewPropHandler(StAXFeatureHandler staxenv) {
048    // execute superclass method to setup environment
049    super(staxenv);
050    setHandlerCharacteristics("view", true);
051
052  }
053  public void startElementHandler(
054                String nsURI,
055                String localName,
056                String qName,
057                Attributes attrs)
058         throws SAXException
059  {
060      try{
061        staxenv.featureTemplate.annotation.setProperty("view_start",  attrs.getValue("start") ) ;
062        staxenv.featureTemplate.annotation.setProperty("view_length", attrs.getValue("length") ) ;
063      }catch(Exception e){
064        throw new SAXException( e.getMessage() ) ;
065      }
066  }
067}
068