(no commit message)
[utils] / gps / src / main / java / org / wamblee / gps / track / FilteredTrack.java
1 package org.wamblee.gps.track;
2
3 import java.util.List;
4
5 import org.wamblee.gps.geometry.Point;
6
7 /**
8  * Filtered track provides a filtered view on a track. 
9  * Changes in the filter are also represented by the filtered track. 
10  */
11 public class FilteredTrack implements Track {
12     
13     private TrackFilter _filter; 
14     private Track _originalTrack;
15     private Track _filteredTrack; 
16     private int _lastVersion; 
17     
18     public FilteredTrack(TrackFilter aFilter, Track aTrack) { 
19         _filter = aFilter; 
20         _originalTrack = aTrack;
21         _filteredTrack = _filter.filter(_originalTrack);
22         _lastVersion = aFilter.version();
23     }
24     
25     private Track getTrack() { 
26         if ( _lastVersion != _filter.version()) { 
27             _filteredTrack = _filter.filter(_originalTrack);
28             _lastVersion = _filter.version();
29         }
30         return _filteredTrack;
31     }
32     
33     @Override
34     public List<TrackSegment> getSegments() {
35         return getTrack().getSegments();
36     }
37
38     @Override
39     public String getDescription() {
40         return getTrack().getDescription();
41     }
42
43     @Override
44     public double getMaxCoordinate(int aI) {
45         return getTrack().getMaxCoordinate(aI);
46     }
47
48     @Override
49     public double getMinCoordinate(int aI) {
50         return getTrack().getMinCoordinate(aI);
51     }
52
53     @Override
54     public Point getPoint(int aIndex) {
55         return getTrack().getPoint(aIndex);
56     }
57
58     @Override
59     public int size() {
60         return getTrack().size();
61     }
62
63 }