root / trunk / libraries / libGDBMS / src / com / hardcode / gdbms / engine / instruction / SelectAdapter.java @ 466
History | View | Annotate | Download (2.64 KB)
1 |
/* Generated by Together */
|
---|---|
2 |
package com.hardcode.gdbms.engine.instruction; |
3 |
|
4 |
import com.hardcode.gdbms.engine.data.DataSource; |
5 |
|
6 |
|
7 |
/**
|
8 |
* Adapta el nodo que representa una instrucci?n select en el ?rbol sint?ctico
|
9 |
* de entrada
|
10 |
*
|
11 |
* @author Fernando Gonz?lez Cort?s
|
12 |
*/
|
13 |
public class SelectAdapter extends Adapter { |
14 |
private DataSource[] tables; |
15 |
private DataSource dataSource; |
16 |
|
17 |
/**
|
18 |
* Obtiene las tablas de la cl?usula FROM de la instrucci?n
|
19 |
*
|
20 |
* @return Tablas de la select
|
21 |
*
|
22 |
* @throws SemanticException Si se produce un error sem?ntico
|
23 |
*/
|
24 |
public DataSource[] getTables() throws SemanticException { |
25 |
return ((TableListAdapter) getChilds()[1]).getTables(); |
26 |
} |
27 |
|
28 |
/**
|
29 |
* Obtiene las expresiones de los campos de la cl?usula SELECT o null si
|
30 |
* hay un ''.
|
31 |
*
|
32 |
* @return Expresiones de los campos
|
33 |
*/
|
34 |
public Expression[] getFieldsExpression() { |
35 |
return ((SelectColsAdapter) getChilds()[0]).getFieldsExpression(); |
36 |
} |
37 |
|
38 |
/**
|
39 |
* Obtiene el alias de los campos. Al igual que getFieldsExpression,
|
40 |
* devuelve null si se selecciona ''
|
41 |
*
|
42 |
* @return Array de strings con los alias
|
43 |
*/
|
44 |
public String[] getFieldsAlias() { |
45 |
return ((SelectColsAdapter) getChilds()[0]).getFieldsAlias(); |
46 |
} |
47 |
|
48 |
/**
|
49 |
* Devuelve true si la palabra clave DISTINCT se us? y false en caso
|
50 |
* contrario
|
51 |
*
|
52 |
* @return Devuelve true si se utiliz? la palabra clave DISTINCT
|
53 |
*/
|
54 |
public boolean isDistinct() { |
55 |
return ((SelectColsAdapter) getChilds()[0]).isDistinct(); |
56 |
} |
57 |
|
58 |
/**
|
59 |
* @see com.hardcode.gdbms.engine.instruction.SelectInstruction#setTables(com.hardcode.gdbms.engine.data.DataSource[])
|
60 |
*/
|
61 |
public void setTables(DataSource[] tables) { |
62 |
this.tables = tables;
|
63 |
} |
64 |
|
65 |
/**
|
66 |
* Obtiene el origen de datos para los campos a la hora de evaluar las
|
67 |
* expresiones
|
68 |
*
|
69 |
* @return
|
70 |
*/
|
71 |
public DataSource getDataSource() { |
72 |
return dataSource;
|
73 |
} |
74 |
|
75 |
/**
|
76 |
* Establece el origen de datos para los campos a la hora de evaluar las
|
77 |
* expresiones
|
78 |
*
|
79 |
* @param source
|
80 |
*/
|
81 |
public void setDataSource(DataSource source) { |
82 |
dataSource = source; |
83 |
} |
84 |
|
85 |
/**
|
86 |
* @see com.hardcode.gdbms.engine.instruction.SelectInstruction#getWhereExpression()
|
87 |
*/
|
88 |
public Expression getWhereExpression() throws SemanticException { |
89 |
Adapter[] hijos = getChilds();
|
90 |
|
91 |
if (hijos.length < 3) { |
92 |
return null; |
93 |
} |
94 |
|
95 |
if (hijos[2] instanceof WhereAdapter) { |
96 |
return ((WhereAdapter) hijos[2]).getExpression(); |
97 |
} else {
|
98 |
return null; |
99 |
} |
100 |
} |
101 |
} |