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
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 }