1 package uba.db.ar;
2
3 public class Seleccion implements TupleProvider {
4 private TupleProvider provider;
5
6 private ConditionEvaluator condicion;
7
8 private Tupla lastValidTupla;
9
10 public Seleccion(TupleProvider source, ConditionEvaluator cEvaluator) {
11 provider = source;
12 condicion = cEvaluator;
13 }
14
15 public boolean hasNext() {
16 boolean hayTuplaValida = false;
17 Tupla tupla;
18
19 while ((!hayTuplaValida) && provider.hasNext()) {
20 tupla = provider.next();
21 hayTuplaValida = condicion.isTrue(tupla);
22 if (hayTuplaValida) {
23 lastValidTupla = tupla;
24 }
25 }
26
27 return hayTuplaValida;
28 }
29
30 public Tupla next() {
31
32
33
34 return lastValidTupla;
35 }
36
37 public TuplaDef tupleDefinition() {
38 return provider.tupleDefinition();
39 }
40
41 public void reset() {
42 provider.reset();
43 lastValidTupla = null;
44 }
45
46 public String toString() {
47 return provider.toString();
48 }
49 }