From 83fd87e14f83da1edcc4923f9c93b3d6d7cd104a Mon Sep 17 00:00:00 2001 From: tomaytotomato <971697+tomaytotomato@users.noreply.github.com> Date: Sun, 11 Aug 2024 16:45:45 +0100 Subject: [PATCH] Add Builder classes Allows the creation of SearchLocationService.java and LocationService.java to be more controlled. Fixes https://github.com/tomaytotomato/location4j/issues/13 --- .../src/main/java/com/tomaytotomato/LocationService.java | 4 ++++ .../main/java/com/tomaytotomato/LocationServiceBuilder.java | 6 +----- .../main/java/com/tomaytotomato/SearchLocationService.java | 4 ++++ .../com/tomaytotomato/SearchLocationServiceBuilder.java | 6 +----- .../test/java/com/tomaytotomato/usecase/FindCityTest.java | 5 ++--- .../com/tomaytotomato/usecase/FindCountriesByStateTest.java | 4 ++-- .../com/tomaytotomato/usecase/FindCountryByISOCodeTest.java | 4 ++-- .../java/com/tomaytotomato/usecase/FindCountryTest.java | 4 ++-- .../test/java/com/tomaytotomato/usecase/FindStateTest.java | 4 ++-- .../java/com/tomaytotomato/usecase/SearchLocationTest.java | 4 ++-- 10 files changed, 22 insertions(+), 23 deletions(-) diff --git a/location4j/src/main/java/com/tomaytotomato/LocationService.java b/location4j/src/main/java/com/tomaytotomato/LocationService.java index 6886a34..cad679c 100644 --- a/location4j/src/main/java/com/tomaytotomato/LocationService.java +++ b/location4j/src/main/java/com/tomaytotomato/LocationService.java @@ -55,6 +55,10 @@ protected LocationService(TextNormaliser textNormaliser, CountriesDataLoader dat buildDataStructures(); } + public static LocationServiceBuilder builder() { + return new LocationServiceBuilder(); + } + private void buildDataStructures() { countries.forEach( diff --git a/location4j/src/main/java/com/tomaytotomato/LocationServiceBuilder.java b/location4j/src/main/java/com/tomaytotomato/LocationServiceBuilder.java index 7512e9e..4038254 100644 --- a/location4j/src/main/java/com/tomaytotomato/LocationServiceBuilder.java +++ b/location4j/src/main/java/com/tomaytotomato/LocationServiceBuilder.java @@ -10,11 +10,7 @@ public final class LocationServiceBuilder { private TextNormaliser textNormaliser = new DefaultTextNormaliser(); private CountriesDataLoader countriesDataLoader = new DefaultCountriesDataLoaderImpl(); - public static LocationServiceBuilder builder() { - return new LocationServiceBuilder(); - } - - private LocationServiceBuilder() { + LocationServiceBuilder() { } public LocationServiceBuilder withCountriesDataLoader(CountriesDataLoader countriesDataLoader) { diff --git a/location4j/src/main/java/com/tomaytotomato/SearchLocationService.java b/location4j/src/main/java/com/tomaytotomato/SearchLocationService.java index 07658c6..fb62d7d 100644 --- a/location4j/src/main/java/com/tomaytotomato/SearchLocationService.java +++ b/location4j/src/main/java/com/tomaytotomato/SearchLocationService.java @@ -57,6 +57,10 @@ protected SearchLocationService(TextTokeniser textTokeniser, TextNormaliser text buildDataStructures(); } + public static SearchLocationServiceBuilder builder() { + return new SearchLocationServiceBuilder(); + } + private static Location buildLocationResult(Country topCountry, State topState, City topCity) { var locationBuilder = Location.builder() diff --git a/location4j/src/main/java/com/tomaytotomato/SearchLocationServiceBuilder.java b/location4j/src/main/java/com/tomaytotomato/SearchLocationServiceBuilder.java index 0525315..6bc3e6d 100644 --- a/location4j/src/main/java/com/tomaytotomato/SearchLocationServiceBuilder.java +++ b/location4j/src/main/java/com/tomaytotomato/SearchLocationServiceBuilder.java @@ -22,11 +22,7 @@ public final class SearchLocationServiceBuilder { private LocationAliases locationAliases = new DefaultLocationAliases(); private CountriesDataLoader countriesDataLoader = new DefaultCountriesDataLoaderImpl(); - public static SearchLocationServiceBuilder builder() { - return new SearchLocationServiceBuilder(); - } - - private SearchLocationServiceBuilder() { + SearchLocationServiceBuilder() { } public SearchLocationServiceBuilder withTextTokeniser(TextTokeniser textTokeniser) { diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/FindCityTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/FindCityTest.java index d2cb38e..b60dfca 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/FindCityTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/FindCityTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; -import com.tomaytotomato.LocationServiceBuilder; +import com.tomaytotomato.LocationService; import java.math.BigDecimal; import jdk.jfr.Description; import org.junit.jupiter.api.DisplayName; @@ -19,8 +19,7 @@ class FindCityTest { private final FindCity locationService; public FindCityTest() { - locationService = LocationServiceBuilder.builder() - .build(); + locationService = LocationService.builder().build(); } @Description("Find City by Lat/long with BigDecimal") diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountriesByStateTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountriesByStateTest.java index 242cc55..c3a3606 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountriesByStateTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountriesByStateTest.java @@ -3,7 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.tomaytotomato.LocationServiceBuilder; +import com.tomaytotomato.LocationService; import com.tomaytotomato.model.Country; import jdk.jfr.Description; import org.junit.jupiter.api.DisplayName; @@ -18,7 +18,7 @@ class FindCountriesByStateTest { private final FindCountry locationService; public FindCountriesByStateTest() { - locationService = LocationServiceBuilder.builder().build(); + locationService = LocationService.builder().build(); } @Description("Find All Countries By State Name, when null or blank then throw exception") diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryByISOCodeTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryByISOCodeTest.java index f6a0548..af270a2 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryByISOCodeTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryByISOCodeTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.tomaytotomato.LocationServiceBuilder; +import com.tomaytotomato.LocationService; import com.tomaytotomato.loader.DefaultCountriesDataLoaderImpl; import com.tomaytotomato.text.normaliser.DefaultTextNormaliser; import org.junit.jupiter.api.DisplayName; @@ -19,7 +19,7 @@ class FindCountryByISOCodeTest { private final FindCountry locationService; public FindCountryByISOCodeTest() { - locationService = LocationServiceBuilder.builder() + locationService = LocationService.builder() .withCountriesDataLoader(new DefaultCountriesDataLoaderImpl()) .withTextNormaliser(new DefaultTextNormaliser()) .build(); diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryTest.java index b74703d..987a958 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/FindCountryTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.tomaytotomato.LocationServiceBuilder; +import com.tomaytotomato.LocationService; import com.tomaytotomato.model.Country; import java.util.List; import org.junit.jupiter.api.DisplayName; @@ -19,7 +19,7 @@ class FindCountryTest { private final FindCountry locationService; public FindCountryTest() { - locationService = LocationServiceBuilder.builder().build(); + locationService = LocationService.builder().build(); } @DisplayName("Find Country By ID, when valid and exists, then return Country") diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/FindStateTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/FindStateTest.java index 4a4b946..c367073 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/FindStateTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/FindStateTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import com.tomaytotomato.LocationServiceBuilder; +import com.tomaytotomato.LocationService; import jdk.jfr.Description; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -18,7 +18,7 @@ class FindStateTest { private final FindState locationService; public FindStateTest() { - locationService = LocationServiceBuilder.builder().build(); + locationService = LocationService.builder().build(); } @Description("Find State By ID, when null then throw exception") diff --git a/location4j/src/test/java/com/tomaytotomato/usecase/SearchLocationTest.java b/location4j/src/test/java/com/tomaytotomato/usecase/SearchLocationTest.java index 8e8c30a..2badb06 100644 --- a/location4j/src/test/java/com/tomaytotomato/usecase/SearchLocationTest.java +++ b/location4j/src/test/java/com/tomaytotomato/usecase/SearchLocationTest.java @@ -4,7 +4,7 @@ import static org.assertj.core.api.Assertions.tuple; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import com.tomaytotomato.SearchLocationServiceBuilder; +import com.tomaytotomato.SearchLocationService; import com.tomaytotomato.aliases.DefaultLocationAliases; import com.tomaytotomato.loader.DefaultCountriesDataLoaderImpl; import com.tomaytotomato.mapper.DefaultLocationMapper; @@ -23,7 +23,7 @@ class SearchLocationTest { private final SearchLocation searchLocationService; public SearchLocationTest() { - searchLocationService = SearchLocationServiceBuilder.builder() + searchLocationService = SearchLocationService.builder() .withLocationAliases(new DefaultLocationAliases()) .withLocationMapper(new DefaultLocationMapper()) .withCountriesDataLoader(new DefaultCountriesDataLoaderImpl())