static <T extends NamedProperty> SelectionModel<T> createSelectionFrom(Stream<T> stream) { return new SelectionModel<>(stream); } }
static SelectionModel<StringNamedWrapper> wrap(Stream<String> stream) { return createSelectionFrom(stream.map(StringNamedWrapper::new)); }
static SelectionModel<StringNamedWrapper> wrap(String... strings) { return wrap(Stream.of(strings)); }
/** * Using custom pattern. * Modes are switched by the first letter. * R for Regex * S for StartsWith * E for EndsWith * Q or any other letter for Equals * C for Contains */ public SelectionModel<T> filter(String pattern) { return filter(s -> { if (s.isEmpty()) return false; char firstChar = pattern.charAt(0); switch (firstChar) { case 'R': return SelectPredicates.REGEX.test(s, pattern.substring(1)); case 'S': return SelectPredicates.STARTS.test(s, pattern.substring(1)); case 'E': return SelectPredicates.ENDS.test(s, pattern.substring(1)); case 'Q': return SelectPredicates.EQUAL.test(s, pattern.substring(1)); case 'C': return SelectPredicates.CONTAINS.test(s, pattern.substring(1)); default: return SelectPredicates.EQUAL.test(s, pattern); } }); }
static <T extends NamedProperty> SelectionModel<T> createSelectionFrom(Collection<T> objects) { return createSelectionFrom(objects.stream()); }
static <T extends NamedProperty> SelectionModel<T> createSelectionFrom(T... objects) { return createSelectionFrom(Stream.of(objects)); }