package japicmp.util;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ListJoiner<T> {
private String separator = ";";
private Comparator<T> comparator = null;
private ListJoinerToString<T> toStringBuilder = null;
public ListJoiner<T> on(String separator) {
this.separator = separator;
return this;
}
public ListJoiner<T> sort(Comparator<T> comparator) {
this.comparator = comparator;
return this;
}
public ListJoiner<T> toStringBuilder(ListJoinerToString<T> listJoinerToString) {
this.toStringBuilder = listJoinerToString;
return this;
}
public interface ListJoinerToString<T> {
String toString(T t);
}
public String join(List<T> items) {
return join(new StringBuilder(), items).toString();
}
public StringBuilder join(StringBuilder sb, List<T> items) {
if (items.size() == 0) {
sb.append("n.a.");
} else {
if (this.comparator != null) {
Collections.sort(items, this.comparator);
}
int counter = 0;
for (T item : items) {
if (item == null) {
continue;
}
if (counter > 0) {
sb.append(this.separator);
}
if (this.toStringBuilder != null) {
sb.append(this.toStringBuilder.toString(item));
} else {
sb.append(item.toString());
}
counter++;
}
}
return sb;
}
}