1 package org.wamblee.gps.track;
3 import java.util.ArrayList;
4 import java.util.Iterator;
7 import org.wamblee.gps.geometry.Point;
9 public class TrackImpl implements Track {
11 private String _description;
12 private List<TrackSegment> _segments;
14 public TrackImpl(String aDescription) {
15 _description = aDescription;
16 _segments = new ArrayList<TrackSegment>();
19 public void addSegment(TrackSegment aSegment) {
20 _segments.add(aSegment);
24 public String getDescription() {
29 public Point getPoint(int aIndex) {
30 int localIndex = aIndex;
31 Iterator<TrackSegment> i = _segments.iterator();
33 TrackSegment segment = i.next();
34 if ( localIndex < segment.size() ) {
35 return segment.getPoint(localIndex);
37 localIndex -= segment.size();
39 throw new IndexOutOfBoundsException("" + aIndex);
43 public double getMinCoordinate(int i) {
45 throw new IllegalArgumentException("empty track");
47 double result = Double.MAX_VALUE;
48 for (TrackSegment segment: _segments) {
49 if ( segment.size() > 0 ) {
50 result = Math.min(result, segment.getMinCoordinate(i));
57 public double getMaxCoordinate(int i) {
59 throw new IllegalArgumentException("empty track");
61 double result = Double.MIN_VALUE;
62 for (TrackSegment segment: _segments) {
63 if ( segment.size() > 0 ) {
64 result = Math.max(result, segment.getMaxCoordinate(i));
71 public List<TrackSegment> getSegments() {
78 for (TrackSegment segment: _segments) {
79 result += segment.size();