package com.revolsys.record.io.format.tsv;
import java.io.IOException;
import java.io.Writer;
import java.util.Collection;
import com.revolsys.datatype.DataTypes;
import com.revolsys.io.BaseCloseable;
import com.revolsys.io.FileUtil;
import com.revolsys.util.Exceptions;
public class TsvWriter implements BaseCloseable {
/** The writer */
private final Writer out;
protected TsvWriter(final Writer out) {
this.out = out;
}
@Override
public void close() {
flush();
FileUtil.closeSilent(this.out);
}
public void flush() {
try {
this.out.flush();
} catch (final IOException e) {
}
}
public void write(final Collection<? extends Object> values) {
write(values.toArray());
}
public void write(final Object... values) {
try {
for (int i = 0; i < values.length; i++) {
final Object value = values[i];
if (value != null) {
final String string = DataTypes.toString(value);
this.out.write('"');
for (int j = 0; j < string.length(); j++) {
final char c = string.charAt(j);
if (c == '"') {
this.out.write('"');
}
this.out.write(c);
}
this.out.write('"');
}
if (i < values.length - 1) {
this.out.write('\t');
}
}
this.out.write('\n');
} catch (final IOException e) {
throw Exceptions.wrap(e);
}
}
}