Statistics
| Revision:

svn-gvsig-desktop / tags / v2_0_0_Build_2059 / libraries / libEvaluator_SQLJEP / src / org / gvsig / tools / evaluator / sqljep / SQLJEPEvaluator.java @ 39307

History | View | Annotate | Download (2.74 KB)

1
package org.gvsig.tools.evaluator.sqljep;
2

    
3
import java.math.BigDecimal;
4
import java.util.Map;
5
import java.util.Map.Entry;
6

    
7
import org.gvsig.tools.evaluator.Evaluator;
8
import org.gvsig.tools.evaluator.EvaluatorData;
9
import org.gvsig.tools.evaluator.EvaluatorFieldValue;
10
import org.gvsig.tools.evaluator.EvaluatorFieldsInfo;
11
import org.medfoster.sqljep.BaseJEP;
12
import org.medfoster.sqljep.ParseException;
13

    
14
public class SQLJEPEvaluator extends BaseJEP implements Evaluator {
15

    
16
        private String expresion;
17
        private EvaluatorData data;
18
        private boolean not_parsed;
19

    
20
        public SQLJEPEvaluator(String expresion) {
21
            
22
            
23
                super(expresion);
24
                this.expresion = expresion;
25
                this.data = null;
26
                not_parsed = true;
27
        }
28

    
29
        public String getName() {
30
                return "SQLJEP(" + expresion + ")";
31
        }
32

    
33
        public String getSQL() {
34
                return expresion;
35
        }
36

    
37
        public String getDescription() {
38
                return null;
39
        }
40

    
41
        public EvaluatorFieldValue[] getFieldValues(String name) {
42
                return null;
43
        }
44

    
45
        public Object evaluate(EvaluatorData data) {
46
                this.data = data;
47
                Object value = null;
48
                try {
49
                        if (not_parsed) {
50
                                this.parseExpression();
51
                                not_parsed = false;
52
                        }
53
                        value = this.getValue();
54
                } catch (ParseException e) {
55
                        // TODO Auto-generated catch block
56
                        e.printStackTrace();
57
                }
58
                this.data = null;
59
                return value;
60
        }
61

    
62
        public int findColumn(String name) {
63
                return -1;
64
        }
65

    
66
        public Comparable getColumnObject(int arg0) throws ParseException {
67
                return null;
68
        }
69

    
70
        public Entry getVariable(String name) throws ParseException {
71
                return new MyEntry(name);
72
        }
73

    
74
        private class MyEntry implements Map.Entry {
75
                private String key;
76

    
77
                public MyEntry(String key) {
78
                        this.key = key;
79
                }
80

    
81
                public Object getKey() {
82
                        return this.key;
83
                }
84

    
85
                public Object getValue() {
86
                    
87
                    Object resp = null;
88
                    
89
                        if (data.hasDataValue(key)) {
90
                            resp = data.getDataValue(key);
91
                            resp = fixDecimal(resp);
92
                                return resp;
93
                        }
94
                        resp = data.getDataValue(key);;
95
            resp = fixDecimal(resp);
96
                        return resp;
97
                }
98

    
99
                /**
100
         * @param resp
101
         * @return
102
         */
103
        private Object fixDecimal(Object obj) {
104
            
105
            if (obj instanceof Double) {
106
                Double dou = (Double) obj;
107
                String doustr = Double.toString(dou);
108
                return new BigDecimal(doustr);
109
            } else {
110
                if (obj instanceof Float) {
111
                    Float flo = (Float) obj;
112
                    String flostr = Float.toString(flo);
113
                    return new BigDecimal(flostr);
114
                } else {
115
                    return obj;
116
                }
117
            }
118
        }
119

    
120
        public Object setValue(Object arg0) {
121
                        return null;
122
                }
123

    
124
        }
125

    
126
        public EvaluatorFieldsInfo getFieldsInfo() {
127
                // TODO Auto-generated method stub
128
                return null;
129
        }
130
}