/** * Checks whether specified name is a valid identifier according to Java conventions. * * @param name identifier to validate * @return true, if name is a valid Java identifier */ public static boolean isValidParameterName(String name) { if (name == null || isJavaKeyWord(name)) { return false; } return CONTEXT_AND_VARIABLE_PATTERN.matcher(name).matches(); }
/** * Checks whether specified name is a valid identifier according to Java conventions, * if specified name is invalid - generates a new name value that can be used in Avro schema. * * @param name identifier to validate * @return valid name that can be used in Avro schema */ public static String getAvroCompatibleName(String name) { if (isValidParameterName(name)) { return name; } else { return "_" + name; } }
protected Schema inferSchemaResultSet(JDBCTableMetadata tableMetadata) throws SQLException { DatabaseMetaData databaseMetdata = tableMetadata.getDatabaseMetaData(); Set<String> keys = getPrimaryKeys(databaseMetdata, tableMetadata.getCatalog(), tableMetadata.getDbSchema(), tableMetadata.getTablename()); try (ResultSet metadata = databaseMetdata.getColumns(tableMetadata.getCatalog(), tableMetadata.getDbSchema(), tableMetadata.getTablename(), null)) { if (!metadata.next()) { return null; } List<Field> fields = new ArrayList<>(); String tablename = metadata.getString("TABLE_NAME"); do { int size = metadata.getInt("COLUMN_SIZE"); int scale = metadata.getInt("DECIMAL_DIGITS"); int dbtype = metadata.getInt("DATA_TYPE"); boolean nullable = DatabaseMetaData.columnNullable == metadata.getInt("NULLABLE"); String columnName = metadata.getString("COLUMN_NAME"); boolean isKey = keys.contains(columnName); String defaultValue = metadata.getString("COLUMN_DEF"); Field field = sqlType2Avro(size, scale, dbtype, nullable, columnName, columnName, defaultValue, isKey); fields.add(field); } while (metadata.next()); return Schema.createRecord( AvroNamesValidationHelper.getAvroCompatibleName(NameUtil.correct(tablename, 0, Collections.<String>emptySet())), null, null, false, fields); } }
protected Schema inferSchemaResultSet(JDBCTableMetadata tableMetadata) throws SQLException { DatabaseMetaData databaseMetdata = tableMetadata.getDatabaseMetaData(); Set<String> keys = getPrimaryKeys(databaseMetdata, tableMetadata.getCatalog(), tableMetadata.getDbSchema(), tableMetadata.getTablename()); try (ResultSet metadata = databaseMetdata.getColumns(tableMetadata.getCatalog(), tableMetadata.getDbSchema(), tableMetadata.getTablename(), null)) { if (!metadata.next()) { return null; } List<Field> fields = new ArrayList<>(); String tablename = metadata.getString("TABLE_NAME"); do { int size = metadata.getInt("COLUMN_SIZE"); int scale = metadata.getInt("DECIMAL_DIGITS"); int dbtype = metadata.getInt("DATA_TYPE"); boolean nullable = DatabaseMetaData.columnNullable == metadata.getInt("NULLABLE"); String columnName = metadata.getString("COLUMN_NAME"); boolean isKey = keys.contains(columnName); String defaultValue = metadata.getString("COLUMN_DEF"); Field field = sqlType2Avro(size, scale, dbtype, nullable, columnName, columnName, defaultValue, isKey); fields.add(field); } while (metadata.next()); return Schema.createRecord( AvroNamesValidationHelper.getAvroCompatibleName(NameUtil.correct(tablename, 0, Collections.<String>emptySet())), null, null, false, fields); } }
name = AvroNamesValidationHelper.getAvroCompatibleName(NameUtil.correct(dbColumnName, 0, Collections.<String>emptySet())); switch (dbtype) { case java.sql.Types.VARCHAR:
name = AvroNamesValidationHelper.getAvroCompatibleName(NameUtil.correct(dbColumnName, 0, Collections.<String>emptySet())); switch (dbtype) { case java.sql.Types.VARCHAR:
Field field = null; Schema schema = null; name = AvroNamesValidationHelper.getAvroCompatibleName(dbColumnName); switch (dbtype) { case java.sql.Types.VARCHAR: