View Javadoc
1   package us.codecraft.webmagic.handler;
2   
3   import us.codecraft.webmagic.ResultItems;
4   import us.codecraft.webmagic.Task;
5   import us.codecraft.webmagic.pipeline.Pipeline;
6   
7   import java.util.ArrayList;
8   import java.util.List;
9   
10  /**
11   * @author code4crafer@gmail.com
12   */
13  public class CompositePipeline implements Pipeline {
14  
15      private List<SubPipeline> subPipelines = new ArrayList<SubPipeline>();
16  
17      @Override
18      public void process(ResultItems resultItems, Task task) {
19          for (SubPipeline subPipeline : subPipelines) {
20              if (subPipeline.match(resultItems.getRequest())) {
21                  RequestMatcher.MatchOther matchOtherProcessorProcessor = subPipeline.processResult(resultItems, task);
22                  if (matchOtherProcessorProcessor == null || matchOtherProcessorProcessor != RequestMatcher.MatchOther.YES) {
23                      return;
24                  }
25              }
26          }
27      }
28  
29      public CompositePipeline addSubPipeline(SubPipeline subPipeline) {
30          this.subPipelines.add(subPipeline);
31          return this;
32      }
33  
34      public CompositePipeline setSubPipeline(SubPipeline... subPipelines) {
35          this.subPipelines = new ArrayList<SubPipeline>();
36          for (SubPipeline subPipeline : subPipelines) {
37              this.subPipelines.add(subPipeline);
38          }
39          return this;
40      }
41  
42  }