Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libExpressions / src / main / java / org / gvsig / operators / AbstractField.java @ 23299

History | View | Annotate | Download (1.66 KB)

1
package org.gvsig.operators;
2

    
3
import java.util.Date;
4

    
5
import org.apache.bsf.BSFException;
6
import org.apache.bsf.BSFManager;
7
import org.gvsig.baseclasses.AbstractOperator;
8
import org.gvsig.baseclasses.Index;
9
import org.gvsig.expresions.EvalOperatorsTask;
10

    
11
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
12
import com.hardcode.gdbms.engine.values.BooleanValue;
13
import com.hardcode.gdbms.engine.values.DateValue;
14
import com.hardcode.gdbms.engine.values.NumericValue;
15
import com.hardcode.gdbms.engine.values.Value;
16
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
17

    
18
public abstract class AbstractField extends AbstractOperator{
19
        private boolean isEval=false;
20
        public Object getValue(String nameField,Index indexRow,SelectableDataSource sds) {
21
                try {
22
                        int index=sds.getFieldIndexByName(nameField);
23
                        Value value=sds.getFieldValue(indexRow.get(),index);
24
                        if (value instanceof NumericValue) {
25
                                double dv=((NumericValue)value).doubleValue();
26
                                return new Double(dv);
27
                        }else if (value instanceof DateValue) {
28
                                Date date=((DateValue)value).getValue();
29
                                return date;
30
                        }else if (value instanceof BooleanValue){
31
                                boolean b=((BooleanValue)value).getValue();
32
                                return new Boolean(b);
33
                        }else {
34
                                return value.toString();
35
                        }
36
                } catch (ReadDriverException e) {
37
                        throw new RuntimeException(e.getMessage());
38
                }
39
        }
40
        public void eval(BSFManager interpreter) throws BSFException {
41
                if (!isEval){
42
                interpreter.declareBean("jfield",this,Field.class);
43
                interpreter.exec(EvalOperatorsTask.JYTHON,null,-1,-1,"def field(nameField):\n" +
44
                                "  return jfield.getValue(nameField,indexRow,sds)");
45
                isEval=true;
46
                }
47
        }
48
}