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 |
} |