package br.com.caelum.seleniumdsl.search;
import java.util.ArrayList;
import java.util.List;
import br.com.caelum.seleniumdsl.table.Row;
import br.com.caelum.seleniumdsl.table.Table;
public class TableCriteria {
private final Table table;
private List<TableCriterion> criteria;
public TableCriteria(Table table) {
this.table = table;
this.criteria = new ArrayList<TableCriterion>();
}
public TableCriteria eq(String columnName, String value) {
this.add(new TableCriterion(columnName, value));
return this;
}
public TableCriteria add(TableCriterion criterion) {
this.criteria.add(criterion.prepare(table));
return this;
}
public Row getFirstResult() {
int rowCount = table.getRowCount();
OUTTER: for (int i = 0; i < rowCount; i++) {
Row row = table.row(i + 1);
for (TableCriterion criterion : criteria) {
if (!criterion.match(row))
continue OUTTER;
}
return row;
}
return null;
}
public boolean matches() {
return getFirstResult() != null;
}
}