package detective.core.distribute;
import java.util.ArrayList;
import java.util.List;
import detective.core.Story;
import detective.core.distribute.scenario.ScenarioRunContext;
import detective.core.distribute.scenario.ScenarioRunnerFilter;
import detective.core.filter.FilterChainFactory;
import detective.core.filter.RunnerFilter;
import detective.core.filter.RunnerFilterChain;
import detective.core.filter.console.LogToConsoleFilter;
import detective.core.filter.impl.RunnerFilterChainImpl;
import detective.core.filter.runner.SimpleStoryRunnerFilter;
public class SparkJobRunnerFilterChainFactory implements FilterChainFactory{
private final RunnerFilterChain<JobStoryRunContext> chain;
public SparkJobRunnerFilterChainFactory(){
List<RunnerFilter<JobStoryRunContext>> filters = new ArrayList<RunnerFilter<JobStoryRunContext>>();
filters.add(new JobStoryFilter());
filters.add(new JobStoryScenarioFilter(createScenarioRunnerChain()));
chain = new RunnerFilterChainImpl<JobStoryRunContext>(filters);
}
@Override
public RunnerFilterChain<JobStoryRunContext> getChain() {
return chain;
}
private RunnerFilterChain<ScenarioRunContext> createScenarioRunnerChain(){
List<RunnerFilter<ScenarioRunContext>> filters = new ArrayList<RunnerFilter<ScenarioRunContext>>();
filters.add(new ScenarioRunnerFilter());
return new RunnerFilterChainImpl<ScenarioRunContext>(filters);
}
}