package com.activequant.utils;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
/**
* Writes a map as CSV to disc.
*
* @author GhostRider
*
*/
public class CsvMapWriter {
// private String[] headerNames = new String[] { "KEY", "VALUE" };
private DecimalFormat dcf = new DecimalFormat("####################.##");
/**
* DOES NOT CLOSE THE OUTPUT STREAM.
*
* @param map
* @param out
* @throws IOException
*/
public void write(Map<String, Object> map, OutputStream out) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
Iterator<Entry<String, Object>> it = map.entrySet().iterator();
while (it.hasNext()) {
Entry<String, Object> entry = it.next();
String key = entry.getKey();
Object value = entry.getValue();
if (value != null && key!=null) {
bw.write(key);
bw.write(",");
if(value.getClass().isAssignableFrom(Double.class) || value.getClass().isAssignableFrom(Long.class)){
bw.write(dcf.format(value));
}
else
bw.write(value.toString());
bw.newLine();
bw.flush();
}
}
}
}