View Javadoc

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  		// TODO no se chequea que se haya llamado al hasnext antes, pero NADIE
32  		// deberia
33  		// llamar a un next si un hasnext
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  }