com.softicar.platform.common.core.i18n.DisplayStringJoiningCollector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of platform-common Show documentation
Show all versions of platform-common Show documentation
The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.
package com.softicar.platform.common.core.i18n;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
* Similar to {@link Collectors#joining}, but for {@link IDisplayString}.
*
* @author Oliver Richers
*/
public class DisplayStringJoiningCollector implements Collector, IDisplayString> {
private final IDisplayString separator;
public DisplayStringJoiningCollector(IDisplayString separator) {
this.separator = separator;
}
@Override
public Supplier> supplier() {
return ArrayList::new;
}
@Override
public BiConsumer, IDisplayString> accumulator() {
return Collection::add;
}
@Override
public BinaryOperator> combiner() {
return (a, b) -> {
a.addAll(b);
return a;
};
}
@Override
public Function, IDisplayString> finisher() {
return displayStrings -> {
DisplayString result = new DisplayString();
for (IDisplayString string: displayStrings) {
if (!result.isEmpty()) {
result.append(separator);
}
result.append(string);
}
return result;
};
}
@Override
public Set characteristics() {
return Collections.emptySet();
}
}