View Javadoc

1   package uba.db.ar;
2   
3   public class Proyector implements TupleProvider {
4   
5   	private ProyectorParameter myParam;
6   
7   	private TupleProvider mySource;
8   
9   	private TuplaDef myTuplaDef;
10  
11  	public Proyector(ProyectorParameter param, TupleProvider source) {
12  		mySource = source;
13  		myParam = param;
14  		myTuplaDef = mySource.tupleDefinition().newFromListOfIndexes(
15  				myParam.getIndexesList());
16  	}
17  
18  	/***
19  	 * hasNext
20  	 * 
21  	 * @return boolean
22  	 */
23  
24  	public boolean hasNext() {
25  		return (mySource.hasNext());
26  	}
27  
28  	public TuplaDef tupleDefinition() {
29  		return myTuplaDef;
30  	}
31  
32  	/***
33  	 * next
34  	 * 
35  	 * @return Tupla
36  	 */
37  	public Tupla next() {
38  		return (proyectar(mySource.next()));
39  
40  	}
41  
42  	/***
43  	 * proyectar Selecciona de la tupla que recibe como parametro los campos
44  	 * indicados en el parametro del proyector
45  	 * 
46  	 * @param origen
47  	 *            Tupla
48  	 * @return Tupla
49  	 */
50  	private Tupla proyectar(Tupla origen) {
51  		Tupla result = new Tupla(myTuplaDef);
52  		result.copyValuesFrom(origen, myParam.getIndexesList());
53  		return result;
54  	}
55  
56  	public void reset() {
57  		mySource.reset();
58  	}
59  
60  	public String toString() {
61  		return mySource.toString();
62  	}
63  
64  }