private ItemProviderStrategy<T> subFormItemProvider(OptionDefinition selectedItem) { return subForms.get(selectedItem.getValue()).getValue(); }
private EditorView<T> subForm(OptionDefinition selectedOptionDefinition) { return subForms.get(selectedOptionDefinition.getValue()).getKey(); }
@Override public OptionDefinition convertToPresentation(String optionValue, ValueContext context) { return Optional.ofNullable(optionValue).map(value -> definition.getDatasource() .getOptions() .stream() .filter(optionDefinition -> value.equals(optionDefinition.getValue())) .findFirst() .orElse(null) ).orElse(null); } }
@Override public int compare(OptionDefinition def, OptionDefinition otherDef) { // Null safe comparison of Comparables. null is assumed to be less than a non-null value. return ComparatorUtils.nullLowComparator(String.CASE_INSENSITIVE_ORDER) .compare(StringUtils.defaultIfBlank(def.getLabel(), def.getValue()), StringUtils.defaultIfBlank(otherDef.getLabel(), otherDef.getValue())); } }
@Override public OptionDefinition convertToPresentation(String value, ValueContext context) { if (value == null) { return new OptionDefinition(); } final Optional<OptionDefinition> optionalDef = definition.getOptions() .stream() .filter(option -> value.equals(option.getValue())) .findFirst(); return optionalDef.orElse(new OptionDefinition()); } }
@Override public String describe(SelectedItems<OptionDefinition> selectedItems) { return selectedItems .ifSingle(item -> StringUtils.defaultIfBlank(item.getLabel(), item.getValue())) .orElse(selectedItems.size() + " items selected"); } }
@Override public Stream<OptionDefinition> fetch(Query<OptionDefinition, DataFilter> query) { final Stream<OptionDefinition> stream = definition.getOptions() .stream() .filter(property -> query.getFilter() .map(f -> isValueMatching(f, property.getValue())) .orElse(true)); return definition.isSortable() ? stream.sorted(PRECONFIGURED_OPTION_COMPARATOR) : stream; }
@Override public Result<String> convertToModel(OptionDefinition value, ValueContext context) { if (value == null) { return Result.ok(null); } return Result.ok(value.getValue()); }