return Date.builder(); return org.apache.kafka.connect.data.Date.builder(); case Types.TIME: if(adaptiveTimeMicrosecondsPrecisionMode) {
private Object maybeConvertLogicalType(final Schema connectSchema, final Object connectValue) { if (connectSchema.name() == null) { return connectValue; } switch (connectSchema.name()) { case Date.LOGICAL_NAME: return Date.fromLogical(connectSchema, (java.util.Date) connectValue); case Time.LOGICAL_NAME: return Time.fromLogical(connectSchema, (java.util.Date) connectValue); case Timestamp.LOGICAL_NAME: return Timestamp.fromLogical(connectSchema, (java.util.Date) connectValue); default: return connectValue; } }
return Date.toLogical(toSchema, days); return Date.toLogical(toSchema, (int) numeric); String fromSchemaName = fromSchema.name(); if (Date.LOGICAL_NAME.equals(fromSchemaName)) { int days = Date.fromLogical(fromSchema, date); long millis = days * MILLIS_PER_DAY; return Timestamp.toLogical(toSchema, millis);
static Object date(Schema schema, Object value) { if (value instanceof Number) { Number number = (Number) value; return Date.toLogical(schema, number.intValue()); } return value; }
static Object date(Schema schema, Object value) { if (value instanceof Number) { Number number = (Number) value; return Date.toLogical(schema, number.intValue()); } return value; }
return SchemaBuilder.array(io.debezium.time.Date.builder().optional().build()); return SchemaBuilder.array(org.apache.kafka.connect.data.Date.builder().optional().build()); case PgOid.TIME_ARRAY: case PgOid.TIMETZ_ARRAY:
@Override public Object convert(Schema schema, Object value) { if (!(value instanceof Integer)) throw new DataException("Invalid type for Date, underlying representation should be int32 but was " + value.getClass()); return Date.toLogical(schema, (int) value); } });
@Override public Headers addDate(String key, java.util.Date value) { if (value != null) { // Check that this is a date ... Date.fromLogical(Date.SCHEMA, value); } return addWithoutValidating(key, value, Date.SCHEMA); }
static Schema schema(Class<?> logClass, String logFieldName) { final SchemaBuilder builder; if (LocalDate.class.equals(logClass)) { builder = Date.builder(); } else if (LocalTime.class.equals(logClass)) { builder = Time.builder(); } else if (Integer.class.equals(logClass)) { builder = SchemaBuilder.int32(); } else if (Long.class.equals(logClass)) { builder = SchemaBuilder.int64(); } else if (String.class.equals(logClass)) { builder = SchemaBuilder.string(); } else { throw new UnsupportedOperationException( String.format("%s is not a supported type.", logClass.getName()) ); } builder.optional(); return builder.build(); }
if (value instanceof java.util.Date) { if (Date.LOGICAL_NAME.equals(schemaName)) { return Date.fromLogical(fromSchema, (java.util.Date) value);
@TestFactory @DisplayName("tests for logical type date field conversions") public List<DynamicTest> testDateFieldConverter() { SinkFieldConverter converter = new DateFieldConverter(); List<DynamicTest> tests = new ArrayList<>(); new ArrayList<>(Arrays.asList( java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()), java.util.Date.from(ZonedDateTime.of(LocalDate.of(1983,7,31), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()), java.util.Date.from(ZonedDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()) )).forEach( el -> tests.add(dynamicTest("conversion with " + converter.getClass().getSimpleName() + " for "+el, () -> assertEquals(el.toInstant().getEpochSecond()*1000, ((BsonDateTime)converter.toBson(el)).getValue()) )) ); tests.add(dynamicTest("optional type conversions", () -> { Schema valueOptionalDefault = Date.builder().optional().defaultValue( java.util.Date.from(ZonedDateTime.of(LocalDate.of(1970,1,1), LocalTime.MIDNIGHT, ZoneOffset.systemDefault()).toInstant()) ); assertAll("checks", () -> assertThrows(DataException.class, () -> converter.toBson(null, Date.SCHEMA)), () -> assertEquals(new BsonNull(), converter.toBson(null, Date.builder().optional())), () -> assertEquals(((java.util.Date)valueOptionalDefault.defaultValue()).toInstant().getEpochSecond()*1000, ((BsonDateTime)converter.toBson(null, valueOptionalDefault)).getValue()) ); })); return tests; }
fieldSchema = Date.builder() .optional() .parameter(LOGFIELD_PARAM, logFieldName)
SchemaBuilder dateSchemaBuilder = Date.builder(); if (optional) { dateSchemaBuilder.optional();
return Date.builder(); return org.apache.kafka.connect.data.Date.builder(); case Types.TIME: if(adaptiveTimeMicrosecondsPrecisionMode) {
builder = Date.builder(); break;
return SchemaBuilder.array(io.debezium.time.Date.builder().optional().build()); return SchemaBuilder.array(org.apache.kafka.connect.data.Date.builder().optional().build()); case PgOid.TIME_ARRAY: case PgOid.TIMETZ_ARRAY: