package org.embulk.spi.util.dynamic; import com.google.common.collect.ImmutableSet; import org.embulk.spi.Column; import org.embulk.spi.PageBuilder; import org.embulk.spi.time.Timestamp; import org.msgpack.value.Value; public class BooleanColumnSetter extends AbstractDynamicColumnSetter { private static final ImmutableSet<String> TRUE_STRINGS = ImmutableSet.of( "true", "True", "TRUE", "yes", "Yes", "YES", "t", "T", "y", "Y", "on", "On", "ON", "1"); public BooleanColumnSetter(PageBuilder pageBuilder, Column column, DefaultValueSetter defaultValue) { super(pageBuilder, column, defaultValue); } @Override public void setNull() { pageBuilder.setNull(column); } @Override public void set(boolean v) { pageBuilder.setBoolean(column, v); } @Override public void set(long v) { pageBuilder.setBoolean(column, v > 0); } @Override public void set(double v) { pageBuilder.setBoolean(column, v > 0.0); } @Override public void set(String v) { if (TRUE_STRINGS.contains(v)) { pageBuilder.setBoolean(column, true); } else { defaultValue.setBoolean(pageBuilder, column); } } @Override public void set(Timestamp v) { defaultValue.setBoolean(pageBuilder, column); } @Override public void set(Value v) { defaultValue.setBoolean(pageBuilder, column); } }