1 package br.com.caelum.seleniumdsl.search;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import br.com.caelum.seleniumdsl.table.Row;
7 import br.com.caelum.seleniumdsl.table.Table;
8
9 public class TableCriteria {
10
11 private final Table table;
12 private List<TableCriterion> criteria;
13
14 public TableCriteria(Table table) {
15 this.table = table;
16 this.criteria = new ArrayList<TableCriterion>();
17 }
18
19 public TableCriteria eq(String columnName, String value) {
20 this.add(new TableCriterion(columnName, value));
21 return this;
22 }
23
24 public TableCriteria add(TableCriterion criterion) {
25 this.criteria.add(criterion.prepare(table));
26 return this;
27 }
28
29 public Row getFirstResult() {
30 int rowCount = table.getRowCount();
31 OUTTER: for (int i = 0; i < rowCount; i++) {
32 Row row = table.row(i + 1);
33 for (TableCriterion criterion : criteria) {
34 if (!criterion.match(row))
35 continue OUTTER;
36 }
37 return row;
38 }
39
40 return null;
41 }
42
43 public boolean matches() {
44 return getFirstResult() != null;
45 }
46 }