package com.akjava.gwt.lib.client.datalist;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.IOException;
import java.util.List;
import com.akjava.gwt.lib.client.LogUtils;
import com.akjava.lib.common.csv.CSVReader;
import com.google.common.base.Converter;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
public class SimpleTextDatasCsvConverter extends Converter<List<SimpleTextData>,String>{
public String lineSeparator="\r\n";
public String getLineSeparator() {
return lineSeparator;
}
public void setLineSeparator(String lineSeparator) {
this.lineSeparator = lineSeparator;
}
@Override
protected String doForward(List<SimpleTextData> datas) {
checkNotNull(datas,"SimpleTextDatasCsvConverter:not expected null");
SimpleTextDataCsvLineConverter converter=new SimpleTextDataCsvLineConverter();
List<String> lines=Lists.newArrayList();
Joiner joiner=Joiner.on("\t");
for(String[] csv:converter.convertAll(datas)){
lines.add(joiner.join(csv));
}
return Joiner.on(lineSeparator).join(lines);
}
/**
* return Immutable list;
*/
@Override
protected List<SimpleTextData> doBackward(String csv) {
checkNotNull(csv,"SimpleTextDatasCsvConverter:not expected null");
//TODO support modify quote
CSVReader reader=new CSVReader(csv,'\t','"',true);
try {
List<String[]> csvs=reader.readAll();
return ImmutableList.copyOf(new SimpleTextDataCsvLineConverter().reverse().convertAll(csvs));
} catch (IOException e) {
LogUtils.log(e.getMessage());
}
return null;
}
}