package org.embulk.spi; import java.util.List; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonIgnore; import org.embulk.plugin.PluginType; import org.embulk.config.TaskSource; import org.embulk.spi.util.Executors; public class ProcessTask { private final PluginType inputPluginType; private final PluginType outputPluginType; private final List<PluginType> filterPluginTypes; private final TaskSource inputTaskSource; private final TaskSource outputTaskSource; private final List<TaskSource> filterTaskSources; private final List<Schema> schemas; private final Schema executorSchema; private TaskSource executorTaskSource; @JsonCreator public ProcessTask( @JsonProperty("inputType") PluginType inputPluginType, @JsonProperty("outputType") PluginType outputPluginType, @JsonProperty("filterTypes") List<PluginType> filterPluginTypes, @JsonProperty("inputTask") TaskSource inputTaskSource, @JsonProperty("outputTask") TaskSource outputTaskSource, @JsonProperty("filterTasks") List<TaskSource> filterTaskSources, @JsonProperty("schemas") List<Schema> schemas, @JsonProperty("executorSchema") Schema executorSchema, @JsonProperty("executorTask") TaskSource executorTaskSource) { this.inputPluginType = inputPluginType; this.outputPluginType = outputPluginType; this.filterPluginTypes = filterPluginTypes; this.inputTaskSource = inputTaskSource; this.outputTaskSource = outputTaskSource; this.filterTaskSources = filterTaskSources; this.schemas = schemas; this.executorSchema = executorSchema; this.executorTaskSource = executorTaskSource; } @JsonProperty("inputType") public PluginType getInputPluginType() { return inputPluginType; } @JsonProperty("outputType") public PluginType getOutputPluginType() { return outputPluginType; } @JsonProperty("filterTypes") public List<PluginType> getFilterPluginTypes() { return filterPluginTypes; } @JsonProperty("inputTask") public TaskSource getInputTaskSource() { return inputTaskSource; } @JsonProperty("outputTask") public TaskSource getOutputTaskSource() { return outputTaskSource; } @JsonProperty("filterTasks") public List<TaskSource> getFilterTaskSources() { return filterTaskSources; } @JsonProperty("schemas") public List<Schema> getFilterSchemas() { return schemas; } @JsonProperty("executorSchema") public Schema getExecutorSchema() { return executorSchema; } @JsonIgnore public Schema getInputSchema() { return Executors.getInputSchema(schemas); } @JsonIgnore public Schema getOutputSchema() { return Executors.getOutputSchema(schemas); } @JsonIgnore public void setExecutorTaskSource(TaskSource executorTaskSource) { this.executorTaskSource = executorTaskSource; } @JsonProperty("executorTask") public TaskSource getExecutorTaskSource() { return executorTaskSource; } }