package dw.cli.commands; import java.util.List; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import dw.cli.Command; import dw.cli.Output; import dw.xmlrpc.DokuJClient; import dw.xmlrpc.exception.DokuException; abstract public class ItemListToStringCommand<T> extends Command { @Override protected Output run(DokuJClient dokuClient) throws DokuException { List<T> items = query(dokuClient); return new Output(itemsToString(items)); } abstract protected List<T> query(DokuJClient dokuClient) throws DokuException; private String itemsToString(List<T> items) { Function<T, String> converter = new Function<T, String>(){ @Override public String apply(T item) { return itemToString(item); } }; return Joiner.on("\n").join(Lists.transform(items, converter)); } abstract protected String itemToString(T item); }