public static Object convertType(final Object value, final DataType dataType, final Supplier<DateFormat> dateFormat, final Supplier<DateFormat> timeFormat, final Supplier<DateFormat> timestampFormat, final String fieldName) { return convertType(value, dataType, dateFormat, timeFormat, timestampFormat, fieldName, StandardCharsets.UTF_8); }
public static Object convertType(final Object value, final DataType dataType, final String fieldName) { return convertType(value, dataType, fieldName, StandardCharsets.UTF_8); }
public static Object convertType(final Object value, final DataType dataType, final String fieldName, final Charset charset) { return convertType(value, dataType, DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT, DEFAULT_TIMESTAMP_FORMAT, fieldName, charset); }
protected final Object convert(final String value, final DataType dataType, final String fieldName) { if (dataType == null || value == null) { return value; } final String trimmed = trim(value); if (trimmed.isEmpty()) { return null; } return DataTypeUtils.convertType(trimmed, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); }
protected Object convert(final DataType fieldType, final Object rawValue, final String fieldName) { if (fieldType == null) { return rawValue; } if (rawValue == null) { return null; } // If string is empty then return an empty string if field type is STRING. If field type is // anything else, we can't really convert it so return null final boolean fieldEmpty = rawValue instanceof String && ((String) rawValue).isEmpty(); if (fieldEmpty && fieldType.getFieldType() != RecordFieldType.STRING) { return null; } return DataTypeUtils.convertType(rawValue, fieldType, fieldName); }
private Object parseStringForType(String data, String fieldName, DataType dataType) { switch (dataType.getFieldType()) { case BOOLEAN: case BYTE: case CHAR: case DOUBLE: case FLOAT: case INT: case LONG: case SHORT: case STRING: case DATE: case TIME: case TIMESTAMP: { return DataTypeUtils.convertType(data, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); } } return null; }
@Override public void setValue(final String fieldName, final Object value) { final Optional<RecordField> field = getSchema().getField(fieldName); if (!field.isPresent()) { if (dropUnknownFields) { return; } final Object previousValue = values.put(fieldName, value); if (!Objects.equals(value, previousValue)) { serializedForm = Optional.empty(); } return; } final RecordField recordField = field.get(); final Object coerced = isTypeChecked() ? DataTypeUtils.convertType(value, recordField.getDataType(), fieldName) : value; final Object previousValue = values.put(recordField.getFieldName(), coerced); if (!Objects.equals(coerced, previousValue)) { serializedForm = Optional.empty(); } }
final Object coercedValue = convertType(rawValue, desiredTypeOption.get(), fieldName, charset); coercedValues.put(key, coercedValue);
case SHORT: if (DataTypeUtils.isCompatibleDataType(trimmed, dataType)) { return DataTypeUtils.convertType(trimmed, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); return DataTypeUtils.convertType(trimmed, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); return DataTypeUtils.convertType(trimmed, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); return DataTypeUtils.convertType(trimmed, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName);
@Override @SuppressWarnings("unchecked") public void setMapValue(final String fieldName, final String mapKey, final Object value) { final Optional<RecordField> field = getSchema().getField(fieldName); if (!field.isPresent()) { return; } final RecordField recordField = field.get(); final DataType dataType = recordField.getDataType(); if (dataType.getFieldType() != RecordFieldType.MAP) { throw new IllegalTypeConversionException("Cannot set the value of map entry on Record because the field '" + fieldName + "' is of type '" + dataType + "' and cannot be coerced into an MAP type"); } Object mapObject = values.get(recordField.getFieldName()); if (mapObject == null) { mapObject = new HashMap<String, Object>(); } if (!(mapObject instanceof Map)) { return; } final Map<String, Object> map = (Map<String, Object>) mapObject; final MapDataType mapDataType = (MapDataType) dataType; final DataType valueDataType = mapDataType.getValueType(); final Object coerced = DataTypeUtils.convertType(value, valueDataType, fieldName); final Object replaced = map.put(mapKey, coerced); if (replaced == null || !replaced.equals(coerced)) { serializedForm = Optional.empty(); } }
return DataTypeUtils.convertType(content.toString(), dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); } else { return null;
final Object coerced = DataTypeUtils.convertType(value, elementType, fieldName);
final Object coercedValue = DataTypeUtils.convertType(rawValue, desiredType, fieldName, charset);
return DataTypeUtils.convertType(value, dataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName);
final Object coercedValue = DataTypeUtils.convertType(value, chosenDataType, fieldName); if (coercedValue == null) { generator.writeNull();
case TIMESTAMP: { final Object rawValue = getRawNodeValue(fieldNode); final Object converted = DataTypeUtils.convertType(rawValue, desiredType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); return converted; return DataTypeUtils.convertType(getRawNodeValue(fieldNode, desiredType), desiredType, fieldName);
case TIMESTAMP: { final Object rawValue = getRawNodeValue(fieldNode, null); final Object converted = DataTypeUtils.convertType(rawValue, desiredType, dateFormat, timeFormat, timestampFormat, fieldName); return converted; return DataTypeUtils.convertType(getRawNodeValue(fieldNode, null), desiredType, fieldName);
private boolean iterateThroughRecordUsingSchema(Deque<String> tagsToOpen, Record record, RecordSchema schema) throws XMLStreamException { boolean loopHasWritten = false; for (RecordField field : schema.getFields()) { String fieldName = field.getFieldName(); DataType dataType = field.getDataType(); Object value = record.getValue(field); final DataType chosenDataType = dataType.getFieldType() == RecordFieldType.CHOICE ? DataTypeUtils.chooseDataType(value, (ChoiceDataType) dataType) : dataType; final Object coercedValue = DataTypeUtils.convertType(value, chosenDataType, LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); if (coercedValue != null) { boolean hasWritten = writeFieldForType(tagsToOpen, coercedValue, chosenDataType, fieldName); if (hasWritten) { loopHasWritten = true; } } else { if (nullSuppression.equals(NullSuppression.NEVER_SUPPRESS) || nullSuppression.equals(NullSuppression.SUPPRESS_MISSING) && recordHasField(field, record)) { writeAllTags(tagsToOpen, fieldName); writer.writeEndElement(); loopHasWritten = true; } } } return loopHasWritten; }
private static void writeValue(final SolrInputDocument inputDocument, final Object value, final String fieldName, final DataType dataType,final List<String> fieldsToIndex) throws IOException { final DataType chosenDataType = dataType.getFieldType() == RecordFieldType.CHOICE ? DataTypeUtils.chooseDataType(value, (ChoiceDataType) dataType) : dataType; final Object coercedValue = DataTypeUtils.convertType(value, chosenDataType, fieldName); if (coercedValue == null) { return;
return convertType(value, chosenDataType, fieldName, charset);