package us.codecraft.webmagic.handler; import us.codecraft.webmagic.ResultItems; import us.codecraft.webmagic.Task; import us.codecraft.webmagic.pipeline.Pipeline; import java.util.ArrayList; import java.util.List; /** * @author code4crafer@gmail.com */ public class CompositePipeline implements Pipeline { private List<SubPipeline> subPipelines = new ArrayList<SubPipeline>(); @Override public void process(ResultItems resultItems, Task task) { for (SubPipeline subPipeline : subPipelines) { if (subPipeline.match(resultItems.getRequest())) { RequestMatcher.MatchOther matchOtherProcessorProcessor = subPipeline.processResult(resultItems, task); if (matchOtherProcessorProcessor == null || matchOtherProcessorProcessor != RequestMatcher.MatchOther.YES) { return; } } } } public CompositePipeline addSubPipeline(SubPipeline subPipeline) { this.subPipelines.add(subPipeline); return this; } public CompositePipeline setSubPipeline(SubPipeline... subPipelines) { this.subPipelines = new ArrayList<SubPipeline>(); for (SubPipeline subPipeline : subPipelines) { this.subPipelines.add(subPipeline); } return this; } }