Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge Deliverable 1 changes from Group 3 (/stats folder). #22

Merged
merged 33 commits into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
4fa8006
configure
itshisher Feb 9, 2024
95016e2
configure
itshisher Feb 9, 2024
ff834dd
configure Yang branch
itshisher Feb 9, 2024
f8968a2
Merge pull request #1 from SonamChugh13/Yang-branch
itshisher Feb 9, 2024
43ef688
fix build
SonamChugh13 Feb 10, 2024
b693f92
Delete migrations.xml
SonamChugh13 Feb 10, 2024
91457ea
fix build
SonamChugh13 Feb 10, 2024
6f1d07f
Update build.gradle
SonamChugh13 Feb 10, 2024
d4f9a49
Update build.gradle
SonamChugh13 Feb 10, 2024
316bb93
Update TrackStatistics.java
jenish-1990 Feb 10, 2024
06eeb57
technical debt resolved
itshisher Feb 10, 2024
2b58f76
Merge pull request #5 from SonamChugh13/JenishAkhed
jenish-1990 Feb 10, 2024
e1e773f
Merge pull request #6 from SonamChugh13/YangCao
itshisher Feb 10, 2024
0285876
Fixing nested if issue in TrackStatisticsUpdater
omer-munam Feb 11, 2024
6b7becf
Merge pull request #8 from SonamChugh13/omer
omer-munam Feb 11, 2024
11775d1
Added updateDistanceAndSpeed method for nested code block
KarnikShah Feb 11, 2024
1baf0a5
Revert "Added updateDistanceAndSpeed method for nested code block"
KarnikShah Feb 11, 2024
8751ced
Added updateDistanceAndSpeed method for nested code block
KarnikShah Feb 11, 2024
740b5d9
Merge pull request #11 from SonamChugh13/karnik
KarnikShah Feb 11, 2024
72a0c11
Technical Debt- Issue 9
Sriluharshini Feb 12, 2024
c0549f8
Merge pull request #12 from SonamChugh13/HarshiniBandaru
Sriluharshini Feb 12, 2024
fb3a565
Issue #1: Override method hashCode() because class overrides equals()…
SonamChugh13 Feb 13, 2024
56a96d1
Merge pull request #13 from SonamChugh13/sonam
Sriluharshini Feb 14, 2024
94f2ade
Revert "Issue #1: Override method hashCode() because class overrides …
Sriluharshini Feb 14, 2024
9ada8a5
Merge pull request #14 from SonamChugh13/revert-13-sonam
Sriluharshini Feb 14, 2024
9499101
Revert "Merge pull request #14 from SonamChugh13/revert-13-sonam"
SonamChugh13 Feb 14, 2024
3f23750
Revert "Revert "Merge pull request #14 from SonamChugh13/revert-13-so…
SonamChugh13 Feb 14, 2024
76ca564
Add hashCode() method to fix issue # 1
SonamChugh13 Feb 14, 2024
d5c5cf2
Merge pull request #15 from SonamChugh13/sonam
SonamChugh13 Feb 14, 2024
1e3251a
issue17: arguments passed in the correct order
Feb 14, 2024
a37b336
Rename altitude_m to altitudeMeter
emeka-okechukwu Feb 14, 2024
a39d128
Merge pull request #20 from SonamChugh13/emeka-okechukwu
emeka-okechukwu Feb 14, 2024
16af97f
Merge pull request #18 from SonamChugh13/tanmay
soni-tanmay Feb 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .idea/migrations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 11 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
apply plugin: 'com.android.application'

buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.2.1'
classpath 'com.android.tools.build:gradle:8.1.3'
}
}

plugins {
id "org.sonarqube" version "3.5.0.2730"
}


apply plugin: 'com.android.application'

allprojects {
repositories {
google()
Expand Down Expand Up @@ -116,8 +121,8 @@ android {

if (variant.buildType.name == 'nightly') {
variant.outputs.configureEach {
setVersionCodeOverride(getVersionCode())
setVersionNameOverride(getVersionName())
setVersionCodeOverride(getVersionCodeOverride())
setVersionNameOverride(getVersionNameOverride())
outputFileName = "${applicationId}_${variant.versionCode}.apk"
}
}
Expand Down Expand Up @@ -146,3 +151,4 @@ dependencies {

androidTestUtil 'androidx.test:orchestrator:1.4.2'
}

Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public void addTrackPoint_TestingTrack() {

assertEquals(2.5, statistics.getMinAltitude(), 0.01);
assertEquals(32.5, statistics.getMaxAltitude(), 0.01);
assertEquals(36, statistics.getTotalAltitudeGain(), 0.01);
assertEquals(36, 0.01, statistics.getTotalAltitudeGain());
assertEquals(36, statistics.getTotalAltitudeLoss(), 0.01);

assertEquals(11.85, statistics.getMaxSpeed().toMPS(), 0.01);
Expand Down
80 changes: 44 additions & 36 deletions src/main/java/de/dennisguse/opentracks/stats/TrackStatistics.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public class TrackStatistics {
private Duration movingTime;
// The maximum speed (meters/second) that we believe is valid.
private Speed maxSpeed;
private Float totalAltitudeGain_m = null;
private Float totalAltitudeLoss_m = null;
private Float totalAltitudeGainMeters = null;
private Float totalAltitudeLossMeters = null;
// The average heart rate seen on this track
private HeartRate avgHeartRate = null;

Expand All @@ -80,22 +80,22 @@ public TrackStatistics(TrackStatistics other) {
movingTime = other.movingTime;
maxSpeed = other.maxSpeed;
altitudeExtremities.set(other.altitudeExtremities.getMin(), other.altitudeExtremities.getMax());
totalAltitudeGain_m = other.totalAltitudeGain_m;
totalAltitudeLoss_m = other.totalAltitudeLoss_m;
totalAltitudeGainMeters = other.totalAltitudeGainMeters;
totalAltitudeLossMeters = other.totalAltitudeLossMeters;
avgHeartRate = other.avgHeartRate;
isIdle = other.isIdle;
}

@VisibleForTesting
public TrackStatistics(String startTime, String stopTime, double totalDistance_m, int totalTime_s, int movingTime_s, float maxSpeed_mps, Float totalAltitudeGain_m, Float totalAltitudeLoss_m) {
public TrackStatistics(String startTime, String stopTime, double totalDistance_m, int totalTime_s, int movingTime_s, float maxSpeed_mps, Float totalAltitudeGainMeters, Float totalAltitudeLossMeters) {
this.startTime = Instant.parse(startTime);
this.stopTime = Instant.parse(stopTime);
this.totalDistance = Distance.of(totalDistance_m);
this.totalTime = Duration.ofSeconds(totalTime_s);
this.movingTime = Duration.ofSeconds(movingTime_s);
this.maxSpeed = Speed.of(maxSpeed_mps);
this.totalAltitudeGain_m = totalAltitudeGain_m;
this.totalAltitudeLoss_m = totalAltitudeLoss_m;
this.totalAltitudeGainMeters = totalAltitudeGainMeters;
this.totalAltitudeLossMeters = totalAltitudeLossMeters;
}

/**
Expand Down Expand Up @@ -137,22 +137,22 @@ public void merge(TrackStatistics other) {
altitudeExtremities.update(other.altitudeExtremities.getMin());
altitudeExtremities.update(other.altitudeExtremities.getMax());
}
if (totalAltitudeGain_m == null) {
if (other.totalAltitudeGain_m != null) {
totalAltitudeGain_m = other.totalAltitudeGain_m;
if (totalAltitudeGainMeters == null) {
if (other.totalAltitudeGainMeters != null) {
totalAltitudeGainMeters = other.totalAltitudeGainMeters;
}
} else {
if (other.totalAltitudeGain_m != null) {
totalAltitudeGain_m += other.totalAltitudeGain_m;
if (other.totalAltitudeGainMeters != null) {
totalAltitudeGainMeters += other.totalAltitudeGainMeters;
}
}
if (totalAltitudeLoss_m == null) {
if (other.totalAltitudeLoss_m != null) {
totalAltitudeLoss_m = other.totalAltitudeLoss_m;
if (totalAltitudeLossMeters == null) {
if (other.totalAltitudeLossMeters != null) {
totalAltitudeLossMeters = other.totalAltitudeLossMeters;
}
} else {
if (other.totalAltitudeLoss_m != null) {
totalAltitudeLoss_m += other.totalAltitudeLoss_m;
if (other.totalAltitudeLossMeters != null) {
totalAltitudeLossMeters += other.totalAltitudeLossMeters;
}
}
}
Expand Down Expand Up @@ -301,8 +301,8 @@ public double getMinAltitude() {
return altitudeExtremities.getMin();
}

public void setMinAltitude(double altitude_m) {
altitudeExtremities.setMin(altitude_m);
public void setMinAltitude(double altitudeMeter) {
altitudeExtremities.setMin(altitudeMeter);
}

public boolean hasAltitudeMax() {
Expand All @@ -317,8 +317,8 @@ public double getMaxAltitude() {
return altitudeExtremities.getMax();
}

public void setMaxAltitude(double altitude_m) {
altitudeExtremities.setMax(altitude_m);
public void setMaxAltitude(double altitudeMeter) {
altitudeExtremities.setMax(altitudeMeter);
}

public void updateAltitudeExtremities(Altitude altitude) {
Expand All @@ -334,45 +334,45 @@ public void setAverageHeartRate(HeartRate heartRate) {
}

public boolean hasTotalAltitudeGain() {
return totalAltitudeGain_m != null;
return totalAltitudeGainMeters != null;
}

@Nullable
public Float getTotalAltitudeGain() {
return totalAltitudeGain_m;
return totalAltitudeGainMeters;
}

public void setTotalAltitudeGain(Float totalAltitudeGain_m) {
this.totalAltitudeGain_m = totalAltitudeGain_m;
public void setTotalAltitudeGain(Float totalAltitudeGainMeters) {
this.totalAltitudeGainMeters = totalAltitudeGainMeters;
}

@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public void addTotalAltitudeGain(float gain_m) {
if (totalAltitudeGain_m == null) {
totalAltitudeGain_m = 0f;
if (totalAltitudeGainMeters == null) {
totalAltitudeGainMeters = 0f;
}
totalAltitudeGain_m += gain_m;
totalAltitudeGainMeters += gain_m;
}

public boolean hasTotalAltitudeLoss() {
return totalAltitudeLoss_m != null;
return totalAltitudeLossMeters != null;
}

@Nullable
public Float getTotalAltitudeLoss() {
return totalAltitudeLoss_m;
return totalAltitudeLossMeters;
}

public void setTotalAltitudeLoss(Float totalAltitudeLoss_m) {
this.totalAltitudeLoss_m = totalAltitudeLoss_m;
public void setTotalAltitudeLoss(Float totalAltitudeLossMeters) {
this.totalAltitudeLossMeters = totalAltitudeLossMeters;
}

@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public void addTotalAltitudeLoss(float loss_m) {
if (totalAltitudeLoss_m == null) {
totalAltitudeLoss_m = 0f;
public void addTotalAltitudeLoss(float lossM) {
if (totalAltitudeLossMeters == null) {
totalAltitudeLossMeters = 0f;
}
totalAltitudeLoss_m += loss_m;
totalAltitudeLossMeters += lossM;
}

@Override
Expand All @@ -383,6 +383,14 @@ public boolean equals(Object o) {
return toString().equals(o.toString());
}

@Override
public int hashCode() {
final int primeNumber = 31;
int result = 1;
result = result * primeNumber + (startTime == null ? 0 : startTime.hashCode());
return result;
}

@NonNull
@Override
public String toString() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,36 +125,7 @@ public void addTrackPoint(TrackPoint trackPoint) {
currentSegment.setAverageHeartRate(HeartRate.of(averageHeartRateBPM));
}

{
// Update total distance
Distance movingDistance = null;
if (trackPoint.hasSensorDistance()) {
movingDistance = trackPoint.getSensorDistance();
} else if (lastTrackPoint != null
&& lastTrackPoint.hasLocation()
&& trackPoint.hasLocation()) {
// GPS-based distance/speed
movingDistance = trackPoint.distanceToPrevious(lastTrackPoint);
}
if (movingDistance != null) {
currentSegment.setIdle(false);
currentSegment.addTotalDistance(movingDistance);
}

if (!currentSegment.isIdle() && !trackPoint.isSegmentManualStart()) {
if (lastTrackPoint != null) {
currentSegment.addMovingTime(trackPoint, lastTrackPoint);
}
}

if (trackPoint.getType() == TrackPoint.Type.IDLE) {
currentSegment.setIdle(true);
}

if (trackPoint.hasSpeed()) {
updateSpeed(trackPoint);
}
}
updateDistanceAndSpeed(trackPoint);

if (trackPoint.isSegmentManualEnd()) {
reset(trackPoint);
Expand All @@ -164,6 +135,30 @@ public void addTrackPoint(TrackPoint trackPoint) {
lastTrackPoint = trackPoint;
}

// Extracted method for updating total distance and speed
private void updateDistanceAndSpeed(TrackPoint trackPoint) {
Distance movingDistance = null;
if (trackPoint.hasSensorDistance()) {
movingDistance = trackPoint.getSensorDistance();
} else if (lastTrackPoint != null && lastTrackPoint.hasLocation() && trackPoint.hasLocation()) {
// GPS-based distance/speed
movingDistance = trackPoint.distanceToPrevious(lastTrackPoint);
}
if (movingDistance != null) {
currentSegment.setIdle(false);
currentSegment.addTotalDistance(movingDistance);
}
if (!currentSegment.isIdle() && !trackPoint.isSegmentManualStart() && lastTrackPoint != null) {
currentSegment.addMovingTime(trackPoint, lastTrackPoint);
}
if (trackPoint.getType() == TrackPoint.Type.IDLE) {
currentSegment.setIdle(true);
}
if (trackPoint.hasSpeed()) {
updateSpeed(trackPoint);
}
}

private void reset(TrackPoint trackPoint) {
if (currentSegment.isInitialized()) {
trackStatistics.merge(currentSegment);
Expand Down