svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / project / documents / table / operators / Field.java @ 10626
History | View | Annotate | Download (1.96 KB)
1 | 10254 | caballero | package com.iver.cit.gvsig.project.documents.table.operators; |
---|---|---|---|
2 | |||
3 | import java.util.Date; |
||
4 | |||
5 | import org.apache.bsf.BSFException; |
||
6 | import org.apache.bsf.BSFManager; |
||
7 | |||
8 | 10626 | caballero | import com.hardcode.gdbms.driver.exceptions.ReadDriverException; |
9 | 10254 | caballero | import com.hardcode.gdbms.engine.values.BooleanValue; |
10 | import com.hardcode.gdbms.engine.values.DateValue; |
||
11 | import com.hardcode.gdbms.engine.values.NumericValue; |
||
12 | import com.hardcode.gdbms.engine.values.Value; |
||
13 | import com.iver.cit.gvsig.ExpresionFieldExtension; |
||
14 | import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
||
15 | import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; |
||
16 | import com.iver.cit.gvsig.project.documents.table.AbstractOperator; |
||
17 | import com.iver.cit.gvsig.project.documents.table.Index; |
||
18 | /**
|
||
19 | * @author Vicente Caballero Navarro
|
||
20 | */
|
||
21 | public class Field extends AbstractOperator{ |
||
22 | private FieldDescription fd;
|
||
23 | public Field() { |
||
24 | } |
||
25 | public void setFieldDescription(FieldDescription fd) { |
||
26 | this.fd=fd;
|
||
27 | } |
||
28 | public String addText(String s) { |
||
29 | return s.concat(toString()+"()"); |
||
30 | } |
||
31 | |||
32 | public void eval(BSFManager interpreter) throws BSFException { |
||
33 | interpreter.declareBean(fd.getFieldAlias(),this,Field.class); |
||
34 | interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"java.lang.Object "+ fd.getFieldAlias()+ "(){return "+fd.getFieldAlias()+".getValue(indexRow,sds);};"); |
||
35 | } |
||
36 | 10626 | caballero | public Object getValue(Index indexRow,SelectableDataSource sds) throws ReadDriverException { |
37 | int index=sds.getFieldIndexByName(fd.getFieldName());
|
||
38 | Value value=sds.getFieldValue(indexRow.get(),index); |
||
39 | if (value instanceof NumericValue) { |
||
40 | double dv=((NumericValue)value).doubleValue();
|
||
41 | return new Double(dv); |
||
42 | }else if (value instanceof DateValue) { |
||
43 | Date date=((DateValue)value).getValue();
|
||
44 | return date;
|
||
45 | }else if (value instanceof BooleanValue){ |
||
46 | boolean b=((BooleanValue)value).getValue();
|
||
47 | return new Boolean(b); |
||
48 | }else {
|
||
49 | return value.toString();
|
||
50 | 10254 | caballero | } |
51 | } |
||
52 | public String toString() { |
||
53 | return fd.getFieldAlias();
|
||
54 | } |
||
55 | public boolean isEnable() { |
||
56 | return true; |
||
57 | } |
||
58 | } |