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 // System.out.println("Point " + _pointNum + " is in track '" + inTrackName + "' (" + inTrackNum + ")");
34 if (inTrackNum != _trackNum) {
35 _trackNames.add(inTrackName);
36 _startIndices.add(new Integer(_pointNum));
39 _trackNum = inTrackNum;
43 * @return number of tracks found in file
45 public int getNumTracks()
47 return _trackNames.size();
51 * @param inTrackNum index of track, starting from zero
52 * @return name of specified track (or null if none given)
54 public String getTrackName(int inTrackNum)
56 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return "";}
57 String name = _trackNames.get(inTrackNum);
62 * @param inTrackNum index of track, starting from zero
63 * @return number of points in the specified track
65 public int getNumPointsInTrack(int inTrackNum)
67 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
68 if (inTrackNum == (getNumTracks()-1)) {
69 // last track, use total points
70 return _pointNum - _startIndices.get(inTrackNum) + 1;
72 return _startIndices.get(inTrackNum+1) - _startIndices.get(inTrackNum);
76 * @param inTrackNum index of track, starting from zero
77 * @return start index of the specified track
79 public int getStartIndex(int inTrackNum)
81 if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
82 return _startIndices.get(inTrackNum);
86 * Print summary for debug
89 public void summarize()
91 System.out.println("File has " + getNumTracks() + " tracks:");
92 for (int i=0; i<getNumTracks(); i++) {
93 System.out.println(" Track " + i + " is called '" + _trackNames.get(i) + "' and has " + getNumPointsInTrack(i) + " points");