Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libGDBMS / src / com / hardcode / gdbms / engine / instruction / Field.java @ 466

History | View | Annotate | Download (3.71 KB)

1
package com.hardcode.gdbms.engine.instruction;
2

    
3
import com.hardcode.gdbms.engine.data.DataSource;
4
import com.hardcode.gdbms.engine.data.DriverException;
5
import com.hardcode.gdbms.engine.values.Value;
6

    
7

    
8
/**
9
 * Clase que representa un campo en un DataSource. La clase por s? sola no
10
 * identifica al campo, ya que la tabla a la que pertenece el campo viene
11
 * definida por un ?ndice entero. Esto se debe a que para definir un campo es
12
 * necesario tambi?n un array de tablas sobre las que se aplica dicho ?ndice.
13
 *
14
 * @author Fernando Gonz?lez Cort?s
15
 */
16
public class Field extends AbstractExpression implements Expression {
17
    private DataSource[] tables;
18
    private int dataSourceIndex;
19
    private int fieldId;
20
    private DataSource dataSource;
21

    
22
    /**
23
     * Indice de la tabla donde se encuentra el campo al que este objeto hace
24
     * referencia
25
     *
26
     * @return
27
     */
28
    public int getDataSourceIndex() {
29
        return dataSourceIndex;
30
    }
31

    
32
    /**
33
     * Identificador del campo al que este objeto hace referencia
34
     *
35
     * @return
36
     */
37
    public int getFieldId() {
38
        return fieldId;
39
    }
40

    
41
    /**
42
     * Establece el ?ndice dentr de un array de tablas del campo al que este
43
     * objeto hace referencia
44
     *
45
     * @param source
46
     */
47
    public void setDataSourceIndex(int source) {
48
        dataSourceIndex = source;
49
    }
50

    
51
    /**
52
     * Establece el identificador al que este objeto hace referencia
53
     *
54
     * @param i
55
     */
56
    public void setFieldId(int i) {
57
        fieldId = i;
58
    }
59

    
60
    /**
61
     * Obtiene la colecci?n de tablas sobre las que los ?ndices dataSourceIndex
62
     * y fieldId son v?lidos
63
     *
64
     * @return
65
     */
66
    public DataSource[] getTables() {
67
        return tables;
68
    }
69

    
70
    /**
71
     * Establece la colecci?n de tablas sobre las que se definen los ?ndices
72
     * dataSourceIndex y fieldId
73
     *
74
     * @param sources
75
     */
76
    public void setTables(DataSource[] sources) {
77
        tables = sources;
78
    }
79

    
80
    /**
81
     * Devuelve el ?ndice que ocupa el campo en la colecci?n de los campos de
82
     * todas las tablas del array tables.
83
     *
84
     * @return ?ndice absoluto del campo
85
     *
86
     * @throws DriverException Si se produce un error accediendo a las tablas
87
     */
88
    public int getAbsoluteIndex() throws DriverException {
89
        int acum = 0;
90

    
91
        for (int table = 0; table < dataSourceIndex; table++) {
92
            acum += tables[table].getFieldCount();
93
        }
94

    
95
        acum += fieldId;
96

    
97
        return acum;
98
    }
99

    
100
    /**
101
     * @see com.hardcode.gdbms.engine.instruction.Expression#evaluate(long)
102
     */
103
    public Value evaluate(long row) throws SemanticException, DriverException {
104
        return dataSource.getFieldValue(row, getAbsoluteIndex());
105
    }
106

    
107
    /**
108
     * Obtiene la fuente de datos sobre la que obtiene su valor este campo en
109
     * su m?todo evaluate
110
     *
111
     * @return
112
     */
113
    public DataSource getDataSource() {
114
        return dataSource;
115
    }
116

    
117
    /**
118
     * Establece la fuente de datos sobre la que obtiene su valor este campo en
119
     * su m?todo evaluate
120
     *
121
     * @param source
122
     */
123
    public void setDataSource(DataSource source) {
124
        dataSource = source;
125
    }
126

    
127
    /**
128
     * @see com.hardcode.gdbms.engine.instruction.Expression#getFieldName()
129
     */
130
    public String getFieldName() {
131
        return null;
132
    }
133

    
134
    /**
135
     * @see com.hardcode.gdbms.engine.instruction.Expression#isLiteral()
136
     */
137
    public boolean isLiteral() {
138
        return false;
139
    }
140

    
141
    /**
142
     * @see com.hardcode.gdbms.engine.instruction.Expression#simplify()
143
     */
144
    public void simplify() {
145
    }
146

    
147
        /**
148
         * @see com.hardcode.gdbms.engine.instruction.Expression#calculateLiteralCondition()
149
         */
150
        public void calculateLiteralCondition() {
151
        }
152
}