blob: 40b2e95dc06b48d05a58dbf8bd2a3d61d3e955ad [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.util.db;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.processor.util.StandardValidators;
public class JdbcProperties {
public static final PropertyDescriptor NORMALIZE_NAMES_FOR_AVRO = new PropertyDescriptor.Builder()
.name("dbf-normalize")
.displayName("Normalize Table/Column Names")
.description("Whether to change non-Avro-compatible characters in column names to Avro-compatible characters. For example, colons and periods "
+ "will be changed to underscores in order to build a valid Avro record.")
.allowableValues("true", "false")
.defaultValue("false")
.required(true)
.build();
public static final PropertyDescriptor USE_AVRO_LOGICAL_TYPES = new PropertyDescriptor.Builder()
.name("dbf-user-logical-types")
.displayName("Use Avro Logical Types")
.description("Whether to use Avro Logical Types for DECIMAL/NUMBER, DATE, TIME and TIMESTAMP columns. "
+ "If disabled, written as string. "
+ "If enabled, Logical types are used and written as its underlying type, specifically, "
+ "DECIMAL/NUMBER as logical 'decimal': written as bytes with additional precision and scale meta data, "
+ "DATE as logical 'date-millis': written as int denoting days since Unix epoch (1970-01-01), "
+ "TIME as logical 'time-millis': written as int denoting milliseconds since Unix epoch, "
+ "and TIMESTAMP as logical 'timestamp-millis': written as long denoting milliseconds since Unix epoch. "
+ "If a reader of written Avro records also knows these logical types, then these values can be deserialized with more context depending on reader implementation.")
.allowableValues("true", "false")
.defaultValue("false")
.required(true)
.build();
public static final PropertyDescriptor DEFAULT_PRECISION = new PropertyDescriptor.Builder()
.name("dbf-default-precision")
.displayName("Default Decimal Precision")
.description("When a DECIMAL/NUMBER value is written as a 'decimal' Avro logical type,"
+ " a specific 'precision' denoting number of available digits is required."
+ " Generally, precision is defined by column data type definition or database engines default."
+ " However undefined precision (0) can be returned from some database engines."
+ " 'Default Decimal Precision' is used when writing those undefined precision numbers.")
.defaultValue(String.valueOf(JdbcCommon.DEFAULT_PRECISION_VALUE))
.addValidator(StandardValidators.POSITIVE_INTEGER_VALIDATOR)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.required(true)
.build();
public static final PropertyDescriptor DEFAULT_SCALE = new PropertyDescriptor.Builder()
.name("dbf-default-scale")
.displayName("Default Decimal Scale")
.description("When a DECIMAL/NUMBER value is written as a 'decimal' Avro logical type,"
+ " a specific 'scale' denoting number of available decimal digits is required."
+ " Generally, scale is defined by column data type definition or database engines default."
+ " However when undefined precision (0) is returned, scale can also be uncertain with some database engines."
+ " 'Default Decimal Scale' is used when writing those undefined numbers."
+ " If a value has more decimals than specified scale, then the value will be rounded-up,"
+ " e.g. 1.53 becomes 2 with scale 0, and 1.5 with scale 1.")
.defaultValue(String.valueOf(JdbcCommon.DEFAULT_SCALE_VALUE))
.addValidator(StandardValidators.NON_NEGATIVE_INTEGER_VALIDATOR)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.required(true)
.build();
// Registry-only versions of Default Precision and Default Scale properties
public static final PropertyDescriptor VARIABLE_REGISTRY_ONLY_DEFAULT_PRECISION =
new PropertyDescriptor.Builder().fromPropertyDescriptor(DEFAULT_PRECISION)
.expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
.build();
public static final PropertyDescriptor VARIABLE_REGISTRY_ONLY_DEFAULT_SCALE =
new PropertyDescriptor.Builder().fromPropertyDescriptor(DEFAULT_SCALE)
.expressionLanguageSupported(ExpressionLanguageScope.VARIABLE_REGISTRY)
.build();
}