/*
Copyright (C) 2001, 2006 United States Government
as represented by the Administrator of the
National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.formats.gpx;
import gov.nasa.worldwind.tracks.*;
import gov.nasa.worldwind.util.Logging;
/**
* @author tag
* @version $Id: GpxTrack.java 2471 2007-07-31 21:50:57Z tgaskins $
*/
public class GpxTrack extends gov.nasa.worldwind.formats.gpx.ElementParser implements Track
{
private String name;
private int numPoints = -1;
private java.util.List<TrackSegment> segments =
new java.util.ArrayList<TrackSegment>();
@SuppressWarnings({"UNUSED_SYMBOL", "UnusedDeclaration"})
public GpxTrack(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
{
super("trk");
// don't validate uri, lname, qname or attributes - they aren't used.
}
public java.util.List<TrackSegment> getSegments()
{
return segments;
}
public String getName()
{
return name;
}
public int getNumPoints()
{
if (this.segments == null)
return 0;
if (this.numPoints >= 0)
return this.numPoints;
this.numPoints = 0;
for (TrackSegment segment : this.segments)
{
//noinspection UNUSED_SYMBOL,UnusedDeclaration
for (TrackPoint point : segment.getPoints())
{
++this.numPoints;
}
}
return this.numPoints;
}
/**
* @param uri
* @param lname
* @param qname
* @param attributes
* @throws IllegalArgumentException if <code>lname</code> is null
* @throws org.xml.sax.SAXException
*/
@Override
public void doStartElement(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
throws org.xml.sax.SAXException
{
// don't validate uri, qname or attributes - they aren't used
if (lname == null)
{
String msg = Logging.getMessage("nullValue.LNameIsNull");
Logging.logger().severe(msg);
throw new IllegalArgumentException(msg);
}
if (qname == null)
{
String msg = Logging.getMessage("nullValue.QNameIsNull");
Logging.logger().severe(msg);
throw new IllegalArgumentException(msg);
}
if (uri == null)
{
String msg = Logging.getMessage("nullValue.URIIsNull");
Logging.logger().severe(msg);
throw new IllegalArgumentException(msg);
}
if (attributes == null)
{
String msg = Logging.getMessage("nullValue.AttributesIsNull");
Logging.logger().severe(msg);
throw new IllegalArgumentException(msg);
}
if (lname.equalsIgnoreCase("trkSeg"))
{
this.currentElement = new GpxTrackSegment(uri, lname, qname, attributes);
this.segments.add((GpxTrackSegment) this.currentElement);
}
}
/**
* @param uri
* @param lname
* @param qname
* @throws IllegalArgumentException if <code>lname</code> is null
* @throws org.xml.sax.SAXException
*/
@Override
public void doEndElement(String uri, String lname, String qname) throws org.xml.sax.SAXException
{
// don't validate uri or qname - they aren't used
if (lname == null)
{
String msg = Logging.getMessage("nullValue.LNameIsNull");
Logging.logger().severe(msg);
throw new IllegalArgumentException(msg);
}
if (lname.equalsIgnoreCase("name"))
{
this.name = this.currentCharacters;
}
}
}