Updated to worldwind release 20070817
[worldwind-tracker.git] / gov / nasa / worldwind / formats / gpx / GpxTrack.java
blob5d5999d3ec8b5ae9d82308e2ac3ed1254eaa46aa
1 /*
2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
5 All Rights Reserved.
6 */
7 package gov.nasa.worldwind.formats.gpx;
9 import gov.nasa.worldwind.tracks.*;
10 import gov.nasa.worldwind.util.Logging;
12 /**
13 * @author tag
14 * @version $Id: GpxTrack.java 2471 2007-07-31 21:50:57Z tgaskins $
16 public class GpxTrack extends gov.nasa.worldwind.formats.gpx.ElementParser implements Track
18 private String name;
19 private int numPoints = -1;
20 private java.util.List<TrackSegment> segments =
21 new java.util.ArrayList<TrackSegment>();
23 @SuppressWarnings({"UNUSED_SYMBOL", "UnusedDeclaration"})
24 public GpxTrack(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
26 super("trk");
27 // don't validate uri, lname, qname or attributes - they aren't used.
30 public java.util.List<TrackSegment> getSegments()
32 return segments;
35 public String getName()
37 return name;
40 public int getNumPoints()
42 if (this.segments == null)
43 return 0;
45 if (this.numPoints >= 0)
46 return this.numPoints;
48 this.numPoints = 0;
49 for (TrackSegment segment : this.segments)
51 //noinspection UNUSED_SYMBOL,UnusedDeclaration
52 for (TrackPoint point : segment.getPoints())
54 ++this.numPoints;
58 return this.numPoints;
61 /**
62 * @param uri
63 * @param lname
64 * @param qname
65 * @param attributes
66 * @throws IllegalArgumentException if <code>lname</code> is null
67 * @throws org.xml.sax.SAXException
69 @Override
70 public void doStartElement(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
71 throws org.xml.sax.SAXException
73 // don't validate uri, qname or attributes - they aren't used
74 if (lname == null)
76 String msg = Logging.getMessage("nullValue.LNameIsNull");
77 Logging.logger().severe(msg);
78 throw new IllegalArgumentException(msg);
80 if (qname == null)
82 String msg = Logging.getMessage("nullValue.QNameIsNull");
83 Logging.logger().severe(msg);
84 throw new IllegalArgumentException(msg);
86 if (uri == null)
88 String msg = Logging.getMessage("nullValue.URIIsNull");
89 Logging.logger().severe(msg);
90 throw new IllegalArgumentException(msg);
92 if (attributes == null)
94 String msg = Logging.getMessage("nullValue.AttributesIsNull");
95 Logging.logger().severe(msg);
96 throw new IllegalArgumentException(msg);
99 if (lname.equalsIgnoreCase("trkSeg"))
101 this.currentElement = new GpxTrackSegment(uri, lname, qname, attributes);
102 this.segments.add((GpxTrackSegment) this.currentElement);
107 * @param uri
108 * @param lname
109 * @param qname
110 * @throws IllegalArgumentException if <code>lname</code> is null
111 * @throws org.xml.sax.SAXException
113 @Override
114 public void doEndElement(String uri, String lname, String qname) throws org.xml.sax.SAXException
116 // don't validate uri or qname - they aren't used
117 if (lname == null)
119 String msg = Logging.getMessage("nullValue.LNameIsNull");
120 Logging.logger().severe(msg);
121 throw new IllegalArgumentException(msg);
123 if (lname.equalsIgnoreCase("name"))
125 this.name = this.currentCharacters;