Statistics
| Revision:

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

History | View | Annotate | Download (2.48 KB)

1
/* Generated by Together */
2
package com.hardcode.gdbms.engine.instruction;
3

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

    
7

    
8
/**
9
 * Adaptador sobre las expresiones producto del arbol sint?ctico
10
 *
11
 * @author Fernando Gonz?lez Cort?s
12
 */
13
public class ProductExprAdapter extends AbstractExpression implements Expression {
14
    /**
15
     * Evalua expresi?n invocando el m?todo adecuado en funci?n del tipo de
16
     * expresion (suma, producto, ...) de los objetos Value de la expresion,
17
     * de las subexpresiones y de los objetos Field
18
     *
19
     * @param row Fila en la que se eval?a la expresi?n, en este caso no es
20
     *        necesario, pero las subexpresiones sobre las que se opera pueden
21
     *        ser campos de una tabla, en cuyo caso si es necesario
22
     *
23
     * @return Objeto Value resultado de la operaci?n propia de la expresi?n
24
     *         representada por el nodo sobre el cual ?ste objeto es adaptador
25
     *
26
     * @throws SemanticException Si se produce un error sem?ntico
27
     * @throws DriverException Si se produce un error de I/O
28
     */
29
    public Value evaluate(long row) throws SemanticException, DriverException {
30
        Value ret = null;
31

    
32
        Adapter[] expr = (Adapter[]) getChilds();
33

    
34
        if (expr.length > 0) {
35
            ret = ((Expression) expr[0]).evaluateExpression(row);
36

    
37
            for (int i = 1; i < expr.length; i++) {
38
                ret = ret.producto(((Expression) expr[i]).evaluateExpression(
39
                            row));
40
            }
41
        }
42

    
43
        return ret;
44
    }
45

    
46
    /**
47
     * @see com.hardcode.gdbms.engine.instruction.Expression#getFieldName()
48
     */
49
    public String getFieldName() {
50
        Adapter[] expr = (Adapter[]) getChilds();
51

    
52
        if (expr.length != 1) {
53
            return null;
54
        } else {
55
            return ((Expression) expr[0]).getFieldName();
56
        }
57
    }
58

    
59
    /**
60
     * @see com.hardcode.gdbms.engine.instruction.Expression#isLiteral()
61
     */
62
    public boolean isLiteral() {
63
        return literal;
64
    }
65

    
66
    /**
67
     * @see com.hardcode.gdbms.engine.instruction.Expression#simplify()
68
     */
69
    public void simplify() {
70
        Adapter[] childs = getChilds();
71

    
72
        if (childs.length == 1) {
73
            getParent().replaceChild(this, childs[0]);
74
        }
75
    }
76

    
77
        /**
78
         * @see com.hardcode.gdbms.engine.instruction.Expression#calculateLiteralCondition()
79
         */
80
        public void calculateLiteralCondition() {
81
        literal = Utilities.checkExpressions(getChilds());
82
        }
83
}