Skip to content

Commit 4e91bbc

Browse files
author
Sandra Thieme
committed
Search static address if hashkey is provided as query
1 parent fc0bcaf commit 4e91bbc

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/main/java/net/contargo/iris/address/service/AddressServiceWrapper.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Collections;
1818
import java.util.List;
1919
import java.util.Map;
20+
import java.util.regex.Pattern;
2021

2122
import static net.contargo.iris.address.nominatim.service.AddressDetailKey.CITY;
2223
import static net.contargo.iris.address.nominatim.service.AddressDetailKey.COUNTRY;
@@ -36,6 +37,7 @@
3637
public class AddressServiceWrapper {
3738

3839
private static final Logger LOG = LoggerFactory.getLogger(AddressServiceWrapper.class);
40+
private static final Pattern HASHKEY_MATCHER = Pattern.compile("^[A-Z0-9]{5}$");
3941

4042
private final AddressService addressService;
4143
private final StaticAddressService staticAddressService;
@@ -193,6 +195,16 @@ private static List<AddressList> getSimpleAddressList(List<Address> addresses) {
193195

194196
public List<Address> getAddressesByQuery(String query) {
195197

196-
return addressService.getAddressesByQuery(query);
198+
List<Address> addresses = new ArrayList<>();
199+
200+
if (HASHKEY_MATCHER.matcher(query).matches()) {
201+
addresses.add(getByHashKey(query));
202+
}
203+
204+
if (addresses.isEmpty()) {
205+
addresses.addAll(addressService.getAddressesByQuery(query));
206+
}
207+
208+
return addresses;
197209
}
198210
}

src/test/java/net/contargo/iris/address/service/AddressServiceWrapperUnitTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,5 +427,26 @@ public void getAddressesByQuery() {
427427

428428
assertThat(addresses, hasSize(1));
429429
assertThat(addresses.get(0), is(address));
430+
431+
verifyZeroInteractions(staticAddressServiceMock);
432+
}
433+
434+
435+
@Test
436+
public void getAddressesByQueryWithHashkey() {
437+
438+
StaticAddress address = new StaticAddress();
439+
address.setCity("Karlsruhe");
440+
address.setPostalcode("76135");
441+
442+
when(staticAddressServiceMock.findByHashKey("D5EHW")).thenReturn(address);
443+
444+
List<Address> addresses = sut.getAddressesByQuery("D5EHW");
445+
446+
assertThat(addresses, hasSize(1));
447+
assertThat(addresses.get(0).getCity(), is("Karlsruhe"));
448+
assertThat(addresses.get(0).getPostcode(), is("76135"));
449+
450+
verifyZeroInteractions(addressServiceMock);
430451
}
431452
}

0 commit comments

Comments
 (0)