/** Performs the search on the artists list. */ public void onArtistSearch() { if ((artistSearch == null) || (artistSearch.trim().isEmpty())) { filteredArtists = null; } else { final Locale locale = languageBean.getLocale(); final String query = artistSearch.toUpperCase(); filteredArtists = support .getArtists() .parallelStream() .filter( artist -> { switch (selectedArtistSearchOption) { case NAME: return artist.getFullName().toUpperCase().contains(query); case ARTIST_GROUP: return ((artist.getArtistGroup() != null) && (artist.getArtistGroup().toUpperCase().contains(query))); case ARTIST_CATEGORY: return (artist.getArtistCategory() != null) && (artist.getArtistCategory().toUpperCase().contains(query)); case COUNTRY: return (artist.getCountryName(locale) != null) ? artist.getCountryName(locale).toUpperCase().contains(query) : Boolean.FALSE; default: throw new IllegalArgumentException( "SearchOption: " + selectedArtistSearchOption.name() + " not supported"); } }) .collect(Collectors.toList()); } }