@Override public Option<Address> findAddressOfOwnerByPhoneNumber( Integer ownerId, String number, String internationalPrefix, String countryPrefix, String nationalPrefix, String localPrefix) { if (numberNormalization == NumberNormalizationType.REMOVE_PREFIX) { number = removePrefixesFromPhoneNumber( number, internationalPrefix, countryPrefix, nationalPrefix, localPrefix); logger.debug("Private DAO-Store address resolution with number: " + number); List<PhoneNumber> phoneNumbers = findPhoneNumbersOfOwnerEndingWith(number, ownerId); for (PhoneNumber phoneNumber : phoneNumbers) { String internalNumber = phoneNumber.getInternalNumber(); Option<Address> address = null; // Add like 0049 if (internalNumber.equals(countryPrefix + number)) { address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId); } // Add like 0231 if (internalNumber.equals(nationalPrefix + localPrefix + number)) { address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId); } // Add like 00 (Fallback for dummy prefix user) if (internalNumber.equals("00" + number)) { address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId); } // Add like 0 if (internalNumber.equals("0" + number)) { address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId); } if (internalNumber.equals(number)) { address = findAddressOfOwnerByPhoneNumber(phoneNumber, ownerId); } if (address.full()) { address.get().setAddressStore(this); return address; } } } else if (numberNormalization == NumberNormalizationType.ADD_INTERNATIONAL_COUNTRY_PREFIX) { String normNumber = normalizeNumber(number, internationalPrefix, countryPrefix, nationalPrefix, localPrefix); Option<Address> address = findAddressOfOwnerByPhoneNumber(number, ownerId); if (address.full()) { address.get().setAddressStore(this); return address; } address = findAddressOfOwnerByPhoneNumber(normNumber, ownerId); if (address.full()) { address.get().setAddressStore(this); return address; } } else if (numberNormalization == NumberNormalizationType.NO_NORMALIZATION) { Option<Address> address = findAddressOfOwnerByPhoneNumber(number, ownerId); if (address.full()) { address.get().setAddressStore(this); return address; } } return new Empty(); }