All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softicar.platform.common.core.i18n.DisplayStringJoiningCollector Maven / Gradle / Ivy

Go to download

The SoftiCAR Platform is a lightweight, Java-based library to create interactive business web applications.

There is a newer version: 50.0.0
Show newest version
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();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy