From 995147b6e31c7b4d55c83d15483e069fbef3940a Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:08:44 +0100 Subject: [PATCH 1/7] ADD: result unit to SpeedForm --- src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedForm.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedForm.java b/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedForm.java index f8b78855..2523e735 100644 --- a/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedForm.java +++ b/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedForm.java @@ -11,4 +11,5 @@ public class SpeedForm { private int second; private String distanceMajorUnit; private String distanceMinorUnit; + private String resultUnit; } From 31b1c667e9fc45d8a5dbc0815f6bac4116e59706 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:09:14 +0100 Subject: [PATCH 2/7] ADD: dynamic field getters for result unit --- src/main/resources/templates/SpeedForm.html | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/SpeedForm.html b/src/main/resources/templates/SpeedForm.html index 64ade9b1..90f3aba5 100644 --- a/src/main/resources/templates/SpeedForm.html +++ b/src/main/resources/templates/SpeedForm.html @@ -1,5 +1,5 @@ - + Speed Calculator type="text" value="0"> +
+ + +
@@ -73,7 +81,8 @@

Speed Calculator

Speed

- The average speed is 30 km/h + The average speed is 30 km/H for travelling 30 kilometer and 0 meter in From fe139bcab10b7fa5502297f91b90616680b16fd3 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:19:09 +0100 Subject: [PATCH 3/7] ADD: dynamic field getters for result unit FIX: thymeleaf tag --- src/main/resources/templates/PaceForm.html | 10 +++++++++- src/main/resources/templates/SpeedForm.html | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/resources/templates/PaceForm.html b/src/main/resources/templates/PaceForm.html index 09314a03..fb1437ec 100644 --- a/src/main/resources/templates/PaceForm.html +++ b/src/main/resources/templates/PaceForm.html @@ -60,6 +60,14 @@

Pace Calculator

type="text" value="0">
+
+ + +
@@ -72,7 +80,7 @@

Pace Calculator

Pace

- The average pace is 30 Minutes + The average pace is 30 Minutes per Kilometer for travelling 30 Speed Calculator

From 64a85713bc6b0941d15ea797b70f26fd552941e1 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:46:01 +0100 Subject: [PATCH 4/7] ADD: test for valid result units --- .../sporttooolbox/web/speed/SpeedServiceTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/segelzwerg/sporttooolbox/web/speed/SpeedServiceTest.java b/src/test/java/segelzwerg/sporttooolbox/web/speed/SpeedServiceTest.java index e2fb3c0a..0c7a6ccc 100644 --- a/src/test/java/segelzwerg/sporttooolbox/web/speed/SpeedServiceTest.java +++ b/src/test/java/segelzwerg/sporttooolbox/web/speed/SpeedServiceTest.java @@ -45,4 +45,11 @@ void invalidMinorUnit() { assertThrows(IllegalArgumentException.class, () -> speedService.calculateSpeed(speedForm)); } + + @Test + void invalidResultUnit() { + speedForm.setResultUnit("abc"); + + assertThrows(IllegalArgumentException.class, () -> speedService.calculateSpeed(speedForm)); + } } \ No newline at end of file From c96d70af3e2af2aec2de06dded233eb4e536d5cc Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:46:45 +0100 Subject: [PATCH 5/7] UPDATE: implementation for valid result units and default behaviour --- .../sporttooolbox/web/speed/SpeedService.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedService.java b/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedService.java index 41824099..470106c7 100644 --- a/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedService.java +++ b/src/main/java/segelzwerg/sporttooolbox/web/speed/SpeedService.java @@ -6,11 +6,16 @@ import segelzwerg.sporttooolbox.IUnits.Time; import segelzwerg.sporttooolbox.SpeedCalculator; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Speed calculating service */ @Component public class SpeedService { + List validSpeedUnits = new ArrayList<>(Arrays.asList("kilometerPerHour", "milesPerHour", "knots")); /** * Calculate speed @@ -19,8 +24,13 @@ public class SpeedService { * @return calculated speed */ public Speed calculateSpeed(SpeedForm form) { + String majorUnit = ((majorUnit = form.getDistanceMajorUnit()) != null) ? majorUnit : "kilometer"; String minorUnit = ((minorUnit = form.getDistanceMinorUnit()) != null) ? minorUnit : "meter"; + String resultUnit = ((resultUnit = form.getResultUnit()) != null) ? resultUnit : "kilometerPerHour"; + + checkValidUnit(validSpeedUnits, resultUnit); + int major = form.getMajor(); int minor = form.getMinor(); Distance distance = Distance.createWithOtherThanSIUnits(major, minor, majorUnit, minorUnit); @@ -35,5 +45,10 @@ public Speed calculateSpeed(SpeedForm form) { return speedCalculator.computeSpeed(); } + private void checkValidUnit(List validUnits, String unit) { + if (!validUnits.contains(unit)) { + throw new IllegalArgumentException("This is not a valid unit: " + unit); + } + } } From 853ecb61cd08165da1f855245eaaef656395bd74 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:48:04 +0100 Subject: [PATCH 6/7] ADD: test for invalid result units --- .../segelzwerg/sporttooolbox/web/pace/PaceServiceTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/segelzwerg/sporttooolbox/web/pace/PaceServiceTest.java b/src/test/java/segelzwerg/sporttooolbox/web/pace/PaceServiceTest.java index a1ea1266..b69cbef9 100644 --- a/src/test/java/segelzwerg/sporttooolbox/web/pace/PaceServiceTest.java +++ b/src/test/java/segelzwerg/sporttooolbox/web/pace/PaceServiceTest.java @@ -46,4 +46,11 @@ void invalidMinorUnit() { assertThrows(IllegalArgumentException.class, () -> paceService.calculatePace(paceForm)); } + + @Test + void invalidResultUnit() { + paceForm.setResultUnit("abc"); + + assertThrows(IllegalArgumentException.class, () -> paceService.calculatePace(paceForm)); + } } \ No newline at end of file From 7e265ff882ee10352dbcb6f43243e19ce9c2efee Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 18 Dec 2019 21:51:22 +0100 Subject: [PATCH 7/7] UPDATE: implementation for invalid result units and default behaviour --- .../sporttooolbox/web/pace/PaceService.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/segelzwerg/sporttooolbox/web/pace/PaceService.java b/src/main/java/segelzwerg/sporttooolbox/web/pace/PaceService.java index 20f4e69c..06022c84 100644 --- a/src/main/java/segelzwerg/sporttooolbox/web/pace/PaceService.java +++ b/src/main/java/segelzwerg/sporttooolbox/web/pace/PaceService.java @@ -7,6 +7,10 @@ import segelzwerg.sporttooolbox.SpeedCalculator; import segelzwerg.sporttooolbox.web.speed.SpeedForm; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Pace calculating service @@ -14,6 +18,8 @@ @Component public class PaceService { + List validPaceUnits = new ArrayList<>(Arrays.asList("minutesPerKilometer", "minutesPerHundredMeters")); + /** * calulates pace * @@ -23,6 +29,9 @@ public class PaceService { public Pace calculatePace(SpeedForm form) { String majorUnit = ((majorUnit = form.getDistanceMajorUnit()) != null) ? majorUnit : "kilometer"; String minorUnit = ((minorUnit = form.getDistanceMinorUnit()) != null) ? minorUnit : "meter"; + String resultUnit = ((resultUnit = form.getResultUnit()) != null) ? resultUnit : "minutesPerKilometer"; + + checkValidUnit(validPaceUnits, resultUnit); int major = form.getMajor(); int minor = form.getMinor(); Distance distance = Distance.createWithOtherThanSIUnits(major, minor, majorUnit, minorUnit); @@ -36,4 +45,10 @@ public Pace calculatePace(SpeedForm form) { return speedCalculator.computePace(); } + + private void checkValidUnit(List validUnits, String unit) { + if (!validUnits.contains(unit)) { + throw new IllegalArgumentException("This is not a valid unit: " + unit); + } + } }