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 }