package com.datascience.utils.transformations.simple; import com.datascience.utils.ITransformation; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import java.util.Collection; import java.util.LinkedList; /** * @Author: konrad */ public class CollectionTransform<T> implements ITransformation<Collection<T>, String> { protected Joiner joiner; protected Splitter splitter; ITransformation<T, String> itemTransformation; public CollectionTransform(String separator, ITransformation<T, String> itemTransformation){ joiner = Joiner.on(separator); splitter = Splitter.on(separator).omitEmptyStrings(); this.itemTransformation = itemTransformation; } @Override public String transform(Collection<T> items) { LinkedList<String> stringItems = new LinkedList<String>(); for (T item : items){ stringItems.add(itemTransformation.transform(item)); } return joiner.join(stringItems); } @Override public Collection<T> inverse(String object) { Collection<T> items = new LinkedList<T>(); for (String item : splitter.split(object)){ items.add(itemTransformation.inverse(item)); } return items; } }