DBZ-1064 Use convert value template
This commit is contained in:
parent
501cbfc98e
commit
4d9cd1c267
@ -311,33 +311,25 @@ protected Object convertNumericAsBigInteger(Column column, Field fieldDefn, Obje
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object convertTinyInt(Column column, Field fieldDefn, Object data) {
|
protected Object convertTinyInt(Column column, Field fieldDefn, Object data) {
|
||||||
if (data == null && !fieldDefn.schema().isOptional()) {
|
return convertValue(column, fieldDefn, data, BYTE_FALSE, (r) -> {
|
||||||
data = fieldDefn.schema().defaultValue();
|
if (data instanceof Byte) {
|
||||||
}
|
r.deliver(data);
|
||||||
if (data == null) {
|
|
||||||
if (column.isOptional()) {
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
else {
|
else if (data instanceof Number) {
|
||||||
return BYTE_FALSE;
|
Number value = (Number) data;
|
||||||
|
r.deliver(value.byteValue());
|
||||||
}
|
}
|
||||||
}
|
else if (data instanceof Boolean) {
|
||||||
if (data instanceof Byte) return data;
|
r.deliver(NumberConversions.getByte((boolean) data));
|
||||||
if (data instanceof Number) {
|
}
|
||||||
Number value = (Number) data;
|
else if (data instanceof String) {
|
||||||
return value.byteValue();
|
r.deliver(Byte.parseByte((String) data));
|
||||||
}
|
}
|
||||||
if (data instanceof Boolean) {
|
});
|
||||||
return NumberConversions.getByte((boolean) data);
|
|
||||||
}
|
|
||||||
if (data instanceof String) {
|
|
||||||
return Byte.parseByte((String) data);
|
|
||||||
}
|
|
||||||
return handleUnknownData(column, fieldDefn, data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Object convertVariableScale(Column column, Field fieldDefn, Object data) {
|
protected Object convertVariableScale(Column column, Field fieldDefn, Object data) {
|
||||||
data = convertNumeric(column, fieldDefn, data);
|
data = convertNumeric(column, fieldDefn, data); // provides default value
|
||||||
|
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
return null;
|
return null;
|
||||||
@ -398,65 +390,53 @@ protected Object convertTimestampWithZone(Column column, Field fieldDefn, Object
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Object convertIntervalYearMonth(Column column, Field fieldDefn, Object data) {
|
protected Object convertIntervalYearMonth(Column column, Field fieldDefn, Object data) {
|
||||||
if (data == null && !fieldDefn.schema().isOptional()) {
|
return convertValue(column, fieldDefn, data, NumberConversions.DOUBLE_FALSE, (r) -> {
|
||||||
data = fieldDefn.schema().defaultValue();
|
if (data instanceof Number) {
|
||||||
}
|
// we expect to get back from the plugin a double value
|
||||||
if (data == null) {
|
r.deliver(((Number) data).doubleValue());
|
||||||
if (column.isOptional()) return null;
|
|
||||||
return NumberConversions.DOUBLE_FALSE;
|
|
||||||
}
|
|
||||||
if (data instanceof Number) {
|
|
||||||
// we expect to get back from the plugin a double value
|
|
||||||
return ((Number) data).doubleValue();
|
|
||||||
}
|
|
||||||
if (data instanceof INTERVALYM) {
|
|
||||||
final String interval = ((INTERVALYM) data).stringValue();
|
|
||||||
int sign = 1;
|
|
||||||
int start = 0;
|
|
||||||
if (interval.charAt(0) == '-') {
|
|
||||||
sign = -1;
|
|
||||||
start = 1;
|
|
||||||
}
|
}
|
||||||
for (int i = 1; i < interval.length(); i++) {
|
else if (data instanceof INTERVALYM) {
|
||||||
if (interval.charAt(i) == '-') {
|
final String interval = ((INTERVALYM) data).stringValue();
|
||||||
final int year = sign * Integer.parseInt(interval.substring(start, i));
|
int sign = 1;
|
||||||
final int month = sign * Integer.parseInt(interval.substring(i + 1, interval.length()));
|
int start = 0;
|
||||||
return MicroDuration.durationMicros(year, month, 0, 0,
|
if (interval.charAt(0) == '-') {
|
||||||
0, 0, MicroDuration.DAYS_PER_MONTH_AVG);
|
sign = -1;
|
||||||
|
start = 1;
|
||||||
|
}
|
||||||
|
for (int i = 1; i < interval.length(); i++) {
|
||||||
|
if (interval.charAt(i) == '-') {
|
||||||
|
final int year = sign * Integer.parseInt(interval.substring(start, i));
|
||||||
|
final int month = sign * Integer.parseInt(interval.substring(i + 1, interval.length()));
|
||||||
|
r.deliver(MicroDuration.durationMicros(year, month, 0, 0,
|
||||||
|
0, 0, MicroDuration.DAYS_PER_MONTH_AVG));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
return handleUnknownData(column, fieldDefn, data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Object convertIntervalDaySecond(Column column, Field fieldDefn, Object data) {
|
protected Object convertIntervalDaySecond(Column column, Field fieldDefn, Object data) {
|
||||||
if (data == null && !fieldDefn.schema().isOptional()) {
|
return convertValue(column, fieldDefn, data, NumberConversions.DOUBLE_FALSE, (r) -> {
|
||||||
data = fieldDefn.schema().defaultValue();
|
if (data instanceof Number) {
|
||||||
}
|
// we expect to get back from the plugin a double value
|
||||||
if (data == null) {
|
r.deliver(((Number) data).doubleValue());
|
||||||
if (column.isOptional()) return null;
|
|
||||||
return NumberConversions.DOUBLE_FALSE;
|
|
||||||
}
|
|
||||||
if (data instanceof Number) {
|
|
||||||
// we expect to get back from the plugin a double value
|
|
||||||
return ((Number) data).doubleValue();
|
|
||||||
}
|
|
||||||
if (data instanceof INTERVALDS) {
|
|
||||||
final String interval = ((INTERVALDS) data).stringValue();
|
|
||||||
final Matcher m = INTERVAL_DAY_SECOND_PATTERN.matcher(interval);
|
|
||||||
if (m.matches()) {
|
|
||||||
final int sign = "-".equals(m.group(1)) ? -1 : 1;
|
|
||||||
return MicroDuration.durationMicros(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
sign * Integer.valueOf(m.group(2)),
|
|
||||||
sign * Integer.valueOf(m.group(3)),
|
|
||||||
sign * Integer.valueOf(m.group(4)),
|
|
||||||
sign * Integer.valueOf(m.group(5)),
|
|
||||||
sign * Integer.valueOf(Strings.pad(m.group(6), 6, '0')),
|
|
||||||
MicroDuration.DAYS_PER_MONTH_AVG);
|
|
||||||
}
|
}
|
||||||
}
|
else if (data instanceof INTERVALDS) {
|
||||||
return handleUnknownData(column, fieldDefn, data);
|
final String interval = ((INTERVALDS) data).stringValue();
|
||||||
|
final Matcher m = INTERVAL_DAY_SECOND_PATTERN.matcher(interval);
|
||||||
|
if (m.matches()) {
|
||||||
|
final int sign = "-".equals(m.group(1)) ? -1 : 1;
|
||||||
|
r.deliver(MicroDuration.durationMicros(
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
sign * Integer.valueOf(m.group(2)),
|
||||||
|
sign * Integer.valueOf(m.group(3)),
|
||||||
|
sign * Integer.valueOf(m.group(4)),
|
||||||
|
sign * Integer.valueOf(m.group(5)),
|
||||||
|
sign * Integer.valueOf(Strings.pad(m.group(6), 6, '0')),
|
||||||
|
MicroDuration.DAYS_PER_MONTH_AVG));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user