package edu.ualberta.med.biobank.i18n;
import java.util.Collection;
import edu.ualberta.med.biobank.common.util.StringUtil;
public class I18nUtil {
public static <T> L10nedMessage join(final Collection<T> collection) {
return new JoinedCollection(collection);
}
static class JoinedCollection extends AbstractLazyL10nedMessage {
private static final long serialVersionUID = 1L;
private final Collection<?> collection;
private final L10nedMessage delimiter;
public JoinedCollection(Collection<?> c, L10nedMessage delimiter) {
this.collection = c;
this.delimiter = delimiter;
}
public JoinedCollection(Collection<?> c) {
this(c, CommonMessages.LIST_ITEM_DELIMITER);
}
@Override
protected String loadMessage() {
return StringUtil.join(collection, delimiter.getMessage());
}
@Override
public int hashCode() {
final int prime = 31;
int i = 1;
i = prime * i + ((collection == null) ? 0 : collection.hashCode());
i = prime * i + ((delimiter == null) ? 0 : delimiter.hashCode());
return i;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
JoinedCollection other = (JoinedCollection) obj;
if (collection == null) {
if (other.collection != null) return false;
} else if (!collection.equals(other.collection)) return false;
if (delimiter == null) {
if (other.delimiter != null) return false;
} else if (!delimiter.equals(other.delimiter)) return false;
return true;
}
}
}