package com.akjava.gwt.lib.client.datalist; import java.util.List; import com.akjava.lib.common.utils.CSVUtils; import com.akjava.lib.common.utils.ValuesUtils; import com.google.common.base.Converter; import com.google.common.base.Joiner; import com.google.common.collect.Lists; public class SimpleTextDataCsvLineConverter extends Converter<SimpleTextData,String[]>{ public String splitter="\t"; public String getSplitter() { return splitter; } public void setSplitter(String splitter) { this.splitter = splitter; } public String getSplitterReplaced() { return splitterReplaced; } public void setSplitterReplaced(String splitterReplaced) { this.splitterReplaced = splitterReplaced; } public String splitterReplaced=" "; //public String lineSeparator="\r\n"; @Override protected String[] doForward(SimpleTextData data) { List<String> tmp=Lists.newArrayList(); tmp.add(convertCsvValue(String.valueOf(data.getId()))); //null value converted to space tmp.add(convertCsvValue(data.getName()!=null?data.getName():"")); tmp.add(convertCsvValue(data.getData()!=null?data.getData():"")); tmp.add(convertCsvValue(String.valueOf(data.getCdate()))); return tmp.toArray(new String[0]); //return Joiner.on(splitter).join(tmp); } @Override protected SimpleTextData doBackward(String[] input) { int id=-1; String header=""; String data=""; long cdate=0; if(input.length>0){ id=ValuesUtils.toInt(input[0], -1); } if(input.length>1){ header=input[1].replace(splitterReplaced, splitter); } if(input.length>2){ data=input[2].replace(splitterReplaced, splitter); } if(input.length>2){ cdate=ValuesUtils.toLong(input[3],0); } SimpleTextData hv=new SimpleTextData(id,header,data,cdate); return hv; } protected String convertCsvValue(String value){ return CSVUtils.toSimpleQuoteString(value.replace(splitter, splitterReplaced)); } }