package org.embulk.spi.util.dynamic;
import java.math.RoundingMode;
import org.embulk.spi.Column;
import org.embulk.spi.PageBuilder;
import org.embulk.spi.time.Timestamp;
import org.msgpack.value.Value;
public class DoubleColumnSetter
extends AbstractDynamicColumnSetter
{
public DoubleColumnSetter(PageBuilder pageBuilder, Column column,
DefaultValueSetter defaultValue)
{
super(pageBuilder, column, defaultValue);
}
@Override
public void setNull()
{
pageBuilder.setNull(column);
}
@Override
public void set(boolean v)
{
pageBuilder.setDouble(column, v ? 1.0 : 0.0);
}
@Override
public void set(long v)
{
pageBuilder.setDouble(column, (double) v);
}
@Override
public void set(double v)
{
pageBuilder.setDouble(column, v);
}
@Override
public void set(String v)
{
double dv;
try {
dv = Double.parseDouble(v);
} catch (NumberFormatException e) {
defaultValue.setDouble(pageBuilder, column);
return;
}
pageBuilder.setDouble(column, dv);
}
@Override
public void set(Timestamp v)
{
double sec = (double) v.getEpochSecond();
double frac = v.getNano() / 1000000000.0;
pageBuilder.setDouble(column, sec + frac);
}
@Override
public void set(Value v)
{
defaultValue.setDouble(pageBuilder, column);
}
}