public Collection<String> getUsedConversionClasses(Schema schema) { LinkedHashMap<String, Conversion<?>> classnameToConversion = new LinkedHashMap<>(); for (Conversion<?> conversion : specificData.getConversions()) { classnameToConversion.put(conversion.getConvertedType().getCanonicalName(), conversion); } Collection<String> result = new HashSet<>(); for (String className : getClassNamesOfPrimitiveFields(schema)) { if (classnameToConversion.containsKey(className)) { result.add(classnameToConversion.get(className).getClass().getCanonicalName()); } } return result; }
/** * Registers the given conversion to be used when reading and writing with * this data model. * * @param conversion a logical type Conversion. */ public void addLogicalTypeConversion(Conversion<?> conversion) { conversions.put(conversion.getLogicalTypeName(), conversion); Class<?> type = conversion.getConvertedType(); if (conversionsByClass.containsKey(type)) { conversionsByClass.get(type).put( conversion.getLogicalTypeName(), conversion); } else { Map<String, Conversion<?>> conversions = new LinkedHashMap<String, Conversion<?>>(); conversions.put(conversion.getLogicalTypeName(), conversion); conversionsByClass.put(type, conversions); } }
/** * Registers the given conversion to be used when reading and writing with * this data model. * * @param conversion a logical type Conversion. */ public void addLogicalTypeConversion(Conversion<?> conversion) { conversions.put(conversion.getLogicalTypeName(), conversion); Class<?> type = conversion.getConvertedType(); if (conversionsByClass.containsKey(type)) { conversionsByClass.get(type).put( conversion.getLogicalTypeName(), conversion); } else { Map<String, Conversion<?>> conversions = new LinkedHashMap<>(); conversions.put(conversion.getLogicalTypeName(), conversion); conversionsByClass.put(type, conversions); } }
private String getConvertedLogicalType(Schema schema) { if (enableDecimalLogicalType || !(schema.getLogicalType() instanceof LogicalTypes.Decimal)) { Conversion<?> conversion = specificData .getConversionFor(schema.getLogicalType()); if (conversion != null) { return conversion.getConvertedType().getName(); } } return null; }
return conversion.getConvertedType();
return conversion.getConvertedType();
Class<T> fromClass = conversion.getConvertedType(); switch (schema.getType()) { case RECORD:
Class<T> fromClass = conversion.getConvertedType(); switch (schema.getType()) { case RECORD:
.getConversionFor(schema.getElementType().getLogicalType()); if (elementConversion != null) { elementClass = elementConversion.getConvertedType();
.getConversionFor(schema.getElementType().getLogicalType()); if (elementConversion != null) { elementClass = elementConversion.getConvertedType();
/** * Registers the given conversion to be used when reading and writing with * this data model. * * @param conversion a logical type Conversion. */ public void addLogicalTypeConversion(Conversion<?> conversion) { conversions.put(conversion.getLogicalTypeName(), conversion); Class<?> type = conversion.getConvertedType(); if (conversionsByClass.containsKey(type)) { conversionsByClass.get(type).put( conversion.getLogicalTypeName(), conversion); } else { Map<String, Conversion<?>> conversions = new LinkedHashMap<String, Conversion<?>>(); conversions.put(conversion.getLogicalTypeName(), conversion); conversionsByClass.put(type, conversions); } }
private <D> Object convert(Schema schema, LogicalType logicalType, Conversion<D> conversion, Object datum) { if (conversion == null) { return datum; } Class<D> fromClass = conversion.getConvertedType(); switch (schema.getType()) { case RECORD: return conversion.toRecord(fromClass.cast(datum), schema, logicalType); case ENUM: return conversion.toEnumSymbol(fromClass.cast(datum), schema, logicalType); case ARRAY: return conversion.toArray(fromClass.cast(datum), schema, logicalType); case MAP: return conversion.toMap(fromClass.cast(datum), schema, logicalType); case FIXED: return conversion.toFixed(fromClass.cast(datum), schema, logicalType); case STRING: return conversion.toCharSequence(fromClass.cast(datum), schema, logicalType); case BYTES: return conversion.toBytes(fromClass.cast(datum), schema, logicalType); case INT: return conversion.toInt(fromClass.cast(datum), schema, logicalType); case LONG: return conversion.toLong(fromClass.cast(datum), schema, logicalType); case FLOAT: return conversion.toFloat(fromClass.cast(datum), schema, logicalType); case DOUBLE: return conversion.toDouble(fromClass.cast(datum), schema, logicalType); case BOOLEAN: return conversion.toBoolean(fromClass.cast(datum), schema, logicalType); } return datum; }
return conversion.getConvertedType();
Class<T> fromClass = conversion.getConvertedType(); switch (schema.getType()) { case RECORD:
.getConversionFor(schema.getElementType().getLogicalType()); if (elementConversion != null) { elementClass = elementConversion.getConvertedType();