1 package tim.prune.load;
3 import java.util.ArrayList;
6 * Class to hold and manage a list of track names
7 * from a gpx file, and report back which points
8 * belong to which track
10 public class TrackNameList
12 /** Current point number */
13 private int _pointNum = -1;
14 /** Current track number */
15 private int _trackNum = -1;
16 /** List of unique track names */
17 private ArrayList<String> _trackNames = new ArrayList<String>();
18 /** List of point numbers at the start of each track */
19 private ArrayList<Integer> _startIndices = new ArrayList<Integer>();
23 * Inform list of a new point
24 * @param inTrackNum number of track, starting at zero
25 * @param inTrackName name of track, if any
26 * @param inIsTrackpoint true if point is a trackpoint
28 public void addPoint(int inTrackNum, String inTrackName, boolean inIsTrackpoint)
33 if (inTrackNum != _trackNum) {
34 _trackNames.add(inTrackName);
35 _startIndices.add(Integer.valueOf(_pointNum));
38 _trackNum = inTrackNum;
42 * @return number of tracks found in file
44 public int getNumTracks()
46 return _trackNames.size();
50 * @param inTrackNum index of track, starting from zero
51 * @return name of specified track (or null if none given)
53 public String getTrackName(int inTrackNum)
55 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return "";}
56 String name = _trackNames.get(inTrackNum);
61 * @param inTrackNum index of track, starting from zero
62 * @return number of points in the specified track
64 public int getNumPointsInTrack(int inTrackNum)
66 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
67 if (inTrackNum == (getNumTracks()-1)) {
68 // last track, use total points
69 return _pointNum - _startIndices.get(inTrackNum) + 1;
71 return _startIndices.get(inTrackNum+1) - _startIndices.get(inTrackNum);
75 * @param inTrackNum index of track, starting from zero
76 * @return start index of the specified track
78 public int getStartIndex(int inTrackNum)
80 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
81 return _startIndices.get(inTrackNum);