package com.zendesk.maxwell.schema.columndef;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.commons.lang3.StringUtils;
import com.google.code.or.common.util.MySQLConstants;
public class SetColumnDef extends EnumeratedColumnDef {
public SetColumnDef(String name, String type, int pos, String[] enumValues) {
super(name, type, pos, enumValues);
}
@Override
public boolean matchesMysqlType(int type) {
return type == MySQLConstants.TYPE_SET;
}
@Override
public String toSQL(Object value) {
return "'" + StringUtils.join(asList(value), "'") + "'";
}
@Override
public Object asJSON(Object value) {
return asList(value);
}
private ArrayList<String> asList(Object value) {
if ( value instanceof String ) {
return new ArrayList<>(Arrays.asList((( String ) value).split(",")));
}
ArrayList<String> values = new ArrayList<>();
long v = (Long) value;
for(int i = 0; i < enumValues.length; i++) {
if ( ((v >> i) & 1) == 1 ) {
values.add(enumValues[i]);
}
}
return values;
}
}