1 package uba.db.sql.language;
2
3 /***
4 * Representa las columnas que se deben mostrar en el resultado de un <i>SELECT</i>.
5 *
6 * @version $Revision: 1.4 $
7 */
8 public interface DisplayColumns extends Visitable {
9 /***
10 * A las columnas a mostrar representadad por esta instancia, les agrega
11 * otra (u otras) columnas a mostrar.
12 *
13 * @param other
14 * las columnas a agregar
15 * @return un objeto que implementa esta interfaz y contiene las columnas a
16 * mostrar representadas por el receptor del mensaje, mas las
17 * columnas a mostrar representadas por el colaborador <i>other</i>.
18 */
19 DisplayColumns append(DisplayColumns other);
20
21 /***
22 * Este método más especifico es utilizado por la implementación de
23 * {@link #append(DisplayColumns)}, para hacer el "Double Dispatch". La
24 * semantica de los métodos <i>appendTo</i> es agregar el receptor del
25 * mensaje a la instancia pasada como parametro (al reves de
26 * {@link #append(DisplayColumns)} que es agregar el parametro al receptor).
27 *
28 * @param columns
29 * instancia de {@link DisplayAllColumns} al que será agregado el
30 * receptor del mensaje.
31 *
32 * @return un objeto que implementa esta interfaz y contiene las columnas a
33 * mostrar representadas representadas por el colaborador <i>columns</i>,
34 * mas las columnas a mostrar representada por el receptor del
35 * mensaje.
36 *
37 * @see DisplayMultipleColumns
38 */
39 DisplayColumns appendTo(DisplayAllColumns columns);
40
41 /***
42 * @see #appendTo(DisplayAllColumns)
43 */
44 DisplayColumns appendTo(DisplayMultipleColumns otherDisplayMultipleColumns);
45
46 /***
47 * @see #appendTo(DisplayAllColumns)
48 */
49 DisplayColumns appendTo(DisplayOneColumn oneColumn);
50 }