Ticket #47: bbtracker_common_src_0415.txt

File bbtracker_common_src_0415.txt, 6.4 KB (added by sibion, 4 years ago)
Line 
1Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java
2===================================================================
3--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java     (revision 109)
4+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/Track.java     (working copy)
5@@ -42,10 +42,19 @@
6        private transient double maxLongitude = Double.NEGATIVE_INFINITY;
7 
8        private transient float maxSpeed = Float.NaN;
9+       
10+       private transient float totalSpeed = 0, totalMovingSpeed, movingPoints = 0;
11 
12        private transient float minElevation = Float.NaN;
13 
14        private transient float maxElevation = Float.NaN;
15+       
16+       private transient float lastElevation = Float.NaN;
17+       
18+       private transient float currentGain = Float.NaN;
19+       
20+       private transient float totalGain = Float.NaN;
21+       
22 
23        public Track(final String name) {
24                this.name = name;
25@@ -114,6 +123,10 @@
26                return segments.elements();
27        }
28 
29+       public float getTotalSpeed() {
30+               return totalSpeed;
31+       }
32+       
33        public double getMaxLatitude() {
34                return maxLatitude;
35        }
36@@ -138,6 +151,27 @@
37                }
38                return length;
39        }
40+       
41+       public float getAvgSpeed(){
42+               if (totalSpeed == 0){
43+                       return Float.NaN;
44+               }else {
45+                       return totalSpeed/pointCount;
46+               }
47+       }
48+       
49+       public float getAvgMovingSpeed(){
50+               if (totalMovingSpeed == 0) {
51+                       return Float.NaN;
52+               } else {
53+                       return totalMovingSpeed/movingPoints;
54+               }
55+       }
56+       
57+       public float getElevationGain(){
58+               return totalGain;
59+       }
60+       //End Added 2007 SIB
61 
62        public float getMaxSpeed() {
63                return maxSpeed;
64@@ -198,12 +232,32 @@
65                        if (Float.isNaN(minElevation) || elevation < minElevation) {
66                                minElevation = elevation;
67                        }
68+               //Added 2007 SIB
69                        if (Float.isNaN(maxElevation) || elevation > maxElevation) {
70-                               maxElevation = elevation;
71+                               maxElevation = elevation;       
72                        }
73-
74+                       if (Float.isNaN(totalGain)){
75+                               totalGain = 0;
76+                               lastElevation = elevation;
77+                       }
78+                       if (!Float.isNaN(totalGain)) {
79+                               if (elevation > lastElevation){
80+                                       currentGain = elevation - lastElevation;
81+                                       totalGain += currentGain;
82+                                       lastElevation = elevation;
83+                               } else {
84+                                       lastElevation = elevation;
85+                               }
86+                       }
87                }
88-
89+               if (!Float.isNaN(speed)) {
90+                       totalSpeed += speed;
91+               }
92+               if (!Float.isNaN(speed) && speed > 0) {
93+                       totalMovingSpeed = totalMovingSpeed + speed;
94+                       movingPoints++;
95+               }
96+               //End Added 2007 SIB
97        }
98 
99        public TrackSegment newSegment() {
100@@ -218,6 +272,7 @@
101                return newSegment;
102        }
103 
104+
105        private static final int streamVersion = 1;
106 
107        public void writeToStream(final DataOutputStream out) throws IOException {
108Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java
109===================================================================
110--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java      (revision 109)
111+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/TrackSegment.java      (working copy)
112@@ -84,7 +84,7 @@
113        public double getLength() {
114                return length;
115        }
116-
117+       
118        public Enumeration getPoints() {
119                return points.elements();
120        }
121Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java
122===================================================================
123--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java     (revision 109)
124+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/UnitConverter.java     (working copy)
125@@ -43,7 +43,11 @@
126         * @return a human readable String containing the distance including a unit.
127         */
128        public abstract String distanceToString(final double distance);
129-
130+       
131+//     public abstract String paceToString(final double length, final long time);
132+       
133+       public abstract String paceToString(final float speed);
134+       
135        public abstract ScaleConfiguration getScaleDistance(final double availableMeter);
136 
137        public abstract ScaleConfiguration getScaleElevation(final int min, final int max);
138Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java
139===================================================================
140--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java     (revision 109)
141+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/ImperialUnitConverter.java     (working copy)
142@@ -54,6 +54,26 @@
143                        return Utils.doubleToString(miles, false) + "mi";
144                }
145        }
146+       
147+//     public String paceToString(final double length, final long time) {
148+//             if (Double.isNaN(length)) {
149+//                     return "-min/mi";
150+//             }
151+//             final double miles = length * METER_TO_MILE_FACTOR;
152+//             final double minutes = (double)time/60000;
153+//             final double pace = minutes/miles;
154+//             return Utils.doubleToString(pace, false) + "min/mi";
155+//     }
156+       
157+       public String paceToString(final float speed) {
158+               if (Float.isNaN(speed)) {
159+                       return "-min/mi";
160+               }
161+               final float mph = speed * MS_TO_MPH_FACTOR;
162+               final float pace = 60/mph;
163+               return Utils.floatToString(pace, false) + "min/mi";
164+               
165+       }
166 
167        public ScaleConfiguration getScaleDistance(final double lengthInMeter) {
168                final double lengthInFoot = lengthInMeter * METER_TO_FOOT_FACTOR;
169Index: C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java
170===================================================================
171--- C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java       (revision 109)
172+++ C:/Projects/bbTracker/stable/0412/bbtracker_common/src/org/bbtracker/MetricUnitConverter.java       (working copy)
173@@ -47,7 +47,26 @@
174                        return Utils.doubleToString(length / 1000, false) + "km";
175                }
176        }
177-
178+       
179+//     public String paceToString(final double length, final long time) {
180+//             if (Double.isNaN(length)) {
181+//                     return "-min/km";
182+//             }
183+//             final double km = length/1000;
184+//             final double minutes = (double)time/60000;
185+//             final double pace = minutes/km;
186+//             return Utils.doubleToString(pace, false) + "min/km";
187+//     }
188+       
189+       public String paceToString(final float speed) {
190+               if (Float.isNaN(speed)) {
191+                       return "-min/km";
192+               }
193+               final float value = speed * MS_TO_KMH_FACTOR;
194+               final float pace = 60/value;
195+               return Utils.floatToString(pace, false) + "min/km";
196+       }
197+       
198        public ScaleConfiguration getScaleDistance(final double lengthInMeter) {
199                final int scaleSize = getRoundScaleSize((int) lengthInMeter);
200                final ScaleConfiguration conf = new ScaleConfiguration();