All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.happinesea.ec.rws.lib.RwsCsvBuilder.groovy Maven / Gradle / Ivy

There is a newer version: 1.0.0_preview
Show newest version
package com.happinesea.ec.rws.lib

import org.apache.commons.collections.CollectionUtils

import com.orangesignal.csv.CsvConfig
import com.orangesignal.csv.CsvWriter

/**
 * オブジェクトをCSVに変換するビルダー
 *
 * @param  変換元オブジェクトのクラス
 */
class RwsCsvBuilder {

    RwsCsvHelper helper

    CsvConfig csvConfig

    public RwsCsvBuilder(RwsCsvHelper helper) {
	csvConfig = new CsvConfig()
	csvConfig.setLineSeparator("\r\n")
	this.helper = helper
    }

    public String builder(List source) {
	if(CollectionUtils.isEmpty(source)) {
	    return null
	}
	if(helper == null) {
	    throw new IllegalArgumentException('csv helper is null.')
	}

	final StringWriter out = new StringWriter()
	final CsvWriter writer = new CsvWriter(out, csvConfig)

	try {
	    for(S s : source) {
		List recode = helper.convert(s)
		writer.writeValues(recode)
	    }
	    writer.flush()
	    return out.toString()
	}finally {
	    out.close()
	    writer.close()
	}
    }
}