1 package org.wamblee.gps.track;
3 import java.io.Serializable;
4 import java.util.ArrayList;
5 import java.util.Iterator;
8 import org.wamblee.gps.geometry.Point;
10 public class TrackImpl implements Track, Serializable {
12 private String _description;
13 private List<TrackSegment> _segments;
15 public TrackImpl(String aDescription) {
16 _description = aDescription;
17 _segments = new ArrayList<TrackSegment>();
20 public void addSegment(TrackSegment aSegment) {
21 _segments.add(aSegment);
25 public String getDescription() {
30 public Point getPoint(int aIndex) {
31 int localIndex = aIndex;
32 Iterator<TrackSegment> i = _segments.iterator();
34 TrackSegment segment = i.next();
35 if ( localIndex < segment.size() ) {
36 return segment.getPoint(localIndex);
38 localIndex -= segment.size();
40 throw new IndexOutOfBoundsException("" + aIndex);
44 public double getMinCoordinate(int i) {
46 throw new IllegalArgumentException("empty track");
48 double result = Double.MAX_VALUE;
49 for (TrackSegment segment: _segments) {
50 if ( segment.size() > 0 ) {
51 result = Math.min(result, segment.getMinCoordinate(i));
58 public double getMaxCoordinate(int i) {
60 throw new IllegalArgumentException("empty track");
62 double result = Double.MIN_VALUE;
63 for (TrackSegment segment: _segments) {
64 if ( segment.size() > 0 ) {
65 result = Math.max(result, segment.getMaxCoordinate(i));
72 public List<TrackSegment> getSegments() {
79 for (TrackSegment segment: _segments) {
80 result += segment.size();