package tim.prune.load.xml; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import tim.prune.data.Field; import tim.prune.load.TrackNameList; /** * Class for handling specifics of parsing Gpx files */ public class GpxHandler extends XmlHandler { private boolean _insidePoint = false; private boolean _insideWaypoint = false; private boolean _startSegment = true; private boolean _isTrackPoint = false; private int _trackNum = -1; private GpxTag _fileTitle = new GpxTag(); private GpxTag _pointName = new GpxTag(), _trackName = new GpxTag(); private String _latitude = null, _longitude = null; private GpxTag _elevation = new GpxTag(), _time = new GpxTag(); private GpxTag _type = new GpxTag(), _description = new GpxTag(); private GpxTag _link = new GpxTag(); private GpxTag _currentTag = null; private ArrayList _pointList = new ArrayList(); private ArrayList _linkList = new ArrayList(); private TrackNameList _trackNameList = new TrackNameList(); /** * Receive the start of a tag * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) */ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // Read the parameters for waypoints and track points String tag = qName.toLowerCase(); if (tag.equals("wpt") || tag.equals("trkpt") || tag.equals("rtept")) { _insidePoint = true; _insideWaypoint = tag.equals("wpt"); _isTrackPoint = tag.equals("trkpt"); final int numAttributes = attributes.getLength(); for (int i=0; i