private List<String> getExistentColumns(Schema schema, List<String> specifiedColumns, boolean acceptUnmatch) { ImmutableList.Builder<String> existentColumns = ImmutableList.builder(); for (String column : specifiedColumns) { try { schema.lookupColumn(column); existentColumns.add(column); } catch (SchemaConfigException e) { if (!acceptUnmatch) { throw new ConfigException(String.format(ENGLISH, "Column '%s' doesn't exist in the schema", column)); } } } return existentColumns.build(); }
@Override public void transaction(ConfigSource config, Schema schema, FormatterPlugin.Control control) { PluginTask task = config.loadConfig(PluginTask.class); // validate column_options for (String columnName : task.getColumnOptions().keySet()) { schema.lookupColumn(columnName); // throws SchemaConfigException } control.run(task.dump()); }
@Override public void transaction(ConfigSource config, Schema inputSchema, FilterPlugin.Control control) { PluginTask task = config.loadConfig(PluginTask.class); Map<String, String> renameMap = task.getRenameMap(); List<ConfigSource> rulesList = task.getRulesList(); // Check if the given column in "columns" exists or not. for (String columnName : renameMap.keySet()) { inputSchema.lookupColumn(columnName); // throws SchemaConfigException } // Rename by "columns": to be applied before "rules". Schema.Builder builder = Schema.builder(); for (Column column : inputSchema.getColumns()) { String name = column.getName(); if (renameMap.containsKey(name)) { name = renameMap.get(name); } builder.add(name, column.getType()); } Schema intermediateSchema = builder.build(); // Rename by "rules". Schema outputSchema = intermediateSchema; for (ConfigSource rule : rulesList) { outputSchema = applyRule(rule, intermediateSchema); intermediateSchema = outputSchema; } control.run(task.dump(), outputSchema); }
private void buildOutputInputColumnMap() { for (Column outputColumn : outputSchema.getColumns()) { String name = outputColumn.getName(); String srcName = getSrc(name, task.getColumns()); if (srcName == null) { srcName = getSrc(name, task.getAddColumns()); } if (srcName == null) { srcName = name; } Column inputColumn; try { inputColumn = inputSchema.lookupColumn(srcName); } catch (SchemaConfigException ex) { inputColumn = null; } outputInputColumnMap.put(outputColumn, inputColumn); // NOTE: inputColumn would be null } }
Column inputColumn; try { inputColumn = inputSchema.lookupColumn(srcName); srcName = src.get(); try { inputColumn = inputSchema.lookupColumn(srcName);