1 package us.codecraft.webmagic.selector;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6
7
8
9
10
11
12 public class AndSelector implements Selector {
13
14 private List<Selector> selectors = new ArrayList<Selector>();
15
16 public AndSelector(Selector... selectors) {
17 for (Selector selector : selectors) {
18 this.selectors.add(selector);
19 }
20 }
21
22 public AndSelector(List<Selector> selectors) {
23 this.selectors = selectors;
24 }
25
26 @Override
27 public String select(String text) {
28 for (Selector selector : selectors) {
29 if (text == null) {
30 return null;
31 }
32 text = selector.select(text);
33 }
34 return text;
35 }
36
37 @Override
38 public List<String> selectList(String text) {
39 List<String> results = new ArrayList<String>();
40 boolean first = true;
41 for (Selector selector : selectors) {
42 if (first) {
43 results = selector.selectList(text);
44 first = false;
45 } else {
46 List<String> resultsTemp = new ArrayList<String>();
47 for (String result : results) {
48 resultsTemp.addAll(selector.selectList(result));
49 }
50 results = resultsTemp;
51 if (results == null || results.size() == 0) {
52 return results;
53 }
54 }
55 }
56 return results;
57 }
58 }