/** * Checks if the given engine category fulfills this filter * * @param engineCategory The engine category * @return True if the given engine category fulfills the filter, false otherwise */ public boolean filter(EngineCategoryDTO engineCategory) { return Optional.ofNullable(searchTerm.getValueSafe()) .map(searchTerm -> engineCategory.getSubCategories().stream() .anyMatch(engineSubCategory -> engineSubCategory.getPackages().stream() .anyMatch(version -> version.getVersion().toLowerCase() .contains(searchTerm.toLowerCase())))) .orElse(true); }
/** * Checks whether this panel will be empty when applying the given {@link EnginesFilter filter} * * @param filter The applied filter * @return True if this panel will be empty when applying the given filter, false otherwise */ public boolean notEmpty(EnginesFilter filter) { return getEngineSubCategory().getPackages().stream() .anyMatch(filter.createFilter(getEngineCategory(), getEngineSubCategory())); }
/** * Creates a {@link FilteredList} object of the engine versions by applying the {@link EnginesFilter} known to the * control * * @return A filtered list of the engine versions */ private ObservableList<EngineVersionDTO> createFilteredEngineVersions() { final EnginesFilter filter = getControl().getFilter(); final EngineCategoryDTO engineCategory = getControl().getEngineCategory(); final EngineSubCategoryDTO engineSubCategory = getControl().getEngineSubCategory(); final FilteredList<EngineVersionDTO> filteredEngineVersions = FXCollections .observableArrayList(engineSubCategory.getPackages()) .sorted(EngineSubCategoryDTO.comparator().reversed()) .filtered(filter.createFilter(engineCategory, engineSubCategory)); filteredEngineVersions.predicateProperty().bind( Bindings.createObjectBinding(() -> filter.createFilter(engineCategory, engineSubCategory), filter.searchTermProperty(), filter.selectedEngineCategoryProperty(), filter.showInstalledProperty(), filter.showNotInstalledProperty())); return filteredEngineVersions; }