return NanoTimestamp.builder(); return org.apache.kafka.connect.data.Timestamp.builder(); case Types.TIME_WITH_TIMEZONE: return ZonedTime.builder();
public static SchemaBuilder builder(Object input) { Preconditions.checkNotNull(input, "input cannot be null."); final SchemaBuilder builder; if (PRIMITIVES.containsKey(input.getClass())) { final Schema.Type type = PRIMITIVES.get(input.getClass()); builder = SchemaBuilder.type(type); } else if (input instanceof Date) { builder = Timestamp.builder(); } else if (input instanceof BigDecimal) { builder = Decimal.builder(((BigDecimal) input).scale()); } else { throw new UnsupportedOperationException( String.format("Unsupported Type: %s", input.getClass()) ); } return builder.optional(); }
public LogFieldConverter createDateTime(SchemaBuilder builder, String logEntryDateField, String logEntryTimeField, String connectTimestampField) { final Schema fieldSchema = Timestamp.builder() .optional() .parameter(LOGFIELD_PARAM, String.format("%s,%s", logEntryDateField, logEntryTimeField)) .build(); builder.field(connectTimestampField, fieldSchema); final Field field = builder.field(connectTimestampField); final LogFieldConverter converter = new TimestampLogFieldConverter( field, logEntryTimeField, logEntryDateField ); return converter; } }
@TestFactory @DisplayName("tests for logical type timestamp field conversions") public List<DynamicTest> testTimestampFieldConverter() { SinkFieldConverter converter = new TimestampFieldConverter(); 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 = Timestamp.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, Timestamp.SCHEMA)), () -> assertEquals(new BsonNull(), converter.toBson(null, Timestamp.builder().optional())), () -> assertEquals(((java.util.Date)valueOptionalDefault.defaultValue()).toInstant().getEpochSecond()*1000, ((BsonDateTime)converter.toBson(null, valueOptionalDefault)).getValue()) ); })); return tests; }
SchemaBuilder tsSchemaBuilder = Timestamp.builder(); if (optional) { tsSchemaBuilder.optional();
return NanoTimestamp.builder(); return org.apache.kafka.connect.data.Timestamp.builder(); case Types.TIME_WITH_TIMEZONE: return ZonedTime.builder();
builder = Timestamp.builder(); break;