private static JdbcColumnOption columnOptionOf( Map<String, JdbcColumnOption> columnOptions, JdbcColumn targetColumn) { return Optional.fromNullable(columnOptions.get(targetColumn.getName())) .or( // default column option new Supplier<JdbcColumnOption>() { public JdbcColumnOption get() { return Exec.newConfigSource().loadConfig(JdbcColumnOption.class); } }); }
private Schema setupTask(JdbcInputConnection con, PluginTask task) throws SQLException { // build SELECT query and gets schema of its result String query = getQuery(task, con); logger.info("SQL: " + query); JdbcSchema querySchema = con.getSchemaOfQuery(query); task.setQuerySchema(querySchema); // validate column_options newColumnGetters(task, querySchema, null); ColumnGetterFactory factory = newColumnGetterFactory(null, task.getDefaultTimeZone()); ImmutableList.Builder<Column> columns = ImmutableList.builder(); for (int i = 0; i < querySchema.getCount(); i++) { JdbcColumn column = querySchema.getColumn(i); JdbcColumnOption columnOption = columnOptionOf(task.getColumnOptions(), column); columns.add( new Column( i, column.getName(), factory.newColumnGetter(column, columnOption).getToType())); } return new Schema(columns.build()); }