Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extExpressionField / src / com / iver / cit / gvsig / project / documents / table / gui / EvalExpression.java @ 27752

History | View | Annotate | Download (8.18 KB)

1
package com.iver.cit.gvsig.project.documents.table.gui;
2

    
3
import java.util.Date;
4
import java.util.prefs.Preferences;
5

    
6
import org.apache.bsf.BSFException;
7
import org.gvsig.fmap.dal.exception.DataException;
8
import org.gvsig.fmap.dal.feature.EditableFeature;
9
import org.gvsig.fmap.dal.feature.Feature;
10
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11
import org.gvsig.fmap.dal.feature.FeatureSet;
12
import org.gvsig.fmap.dal.feature.FeatureType;
13
import org.gvsig.project.document.table.gui.FeatureTableDocumentPanel;
14

    
15
/**
16
 * @author Vicente Caballero Navarro
17
 */
18
public class EvalExpression {
19
        private FeatureType featureType;
20
        private FeatureAttributeDescriptor selectedDescriptor;
21
//        private FeatureAttributeDescriptor fieldDescriptor;
22
//        private FLyrVect lv;
23
//        private FeatureStore ies =null;
24
        private FeatureTableDocumentPanel table=null;
25
        private static Preferences prefs = Preferences.userRoot().node( "fieldExpressionOptions" );
26
        private int limit;
27
        public EvalExpression() {
28
                limit=prefs.getInt("limit_rows_in_memory",-1);
29
        }
30
        public void setTable(FeatureTableDocumentPanel table) {
31
                try {
32
                        selectedDescriptor = table.getTablePanel().getTable().getSelectedColumnsAttributeDescriptor()[0];
33
                    featureType = table.getModel().getStore().getDefaultFeatureType();
34
                } catch (DataException e) {
35
                        // TODO Auto-generated catch block
36
                        e.printStackTrace();
37
                }
38
//        selectedIndex = columnSelected.nextSetBit(0);
39
//        fieldDescriptor = (FeatureAttributeDescriptor)featureType.get(selectedIndex);
40
        this.table=table;
41
//        lv=(FLyrVect)table.getModel().getAssociatedLayer();
42
//        if (lv ==null)
43
//            ies=table.getModel().getStore();
44
//        else
45
//            ies = (VectorialEditableAdapter) lv.getSource();
46
        }
47

    
48
        public void setValue(FeatureSet featureSet,Feature feature,Object obj) {
49
                EditableFeature eFeature=feature.getEditable();
50
                eFeature.set(selectedDescriptor.getIndex(), obj);
51
                try {
52
                        featureSet.update(eFeature);
53
                } catch (DataException e) {
54
                        // TODO Auto-generated catch block
55
                        e.printStackTrace();
56
                }
57
        }
58

    
59
//         public void setValue(Object obj,int i) {
60
//                    //VectorialEditableAdapter vea = (VectorialEditableAdapter) lv.getSource();
61
//                     Value value = getValue(obj);
62
//                     //System.out.println("num = "+i);
63
//                     IRow feat=null;
64
//                        try {
65
//                                feat = ies.getRow(i).getLinkedRow().cloneRow();
66
//                        } catch (ExpansionFileReadException e) {
67
//                                NotificationManager.addError(e);
68
//                        } catch (ReadDriverException e) {
69
//                                NotificationManager.addError(e);
70
//                        }
71
//                     Value[] values = feat.getAttributes();
72
//                     values[selectedIndex] = value;
73
//                     feat.setAttributes(values);
74
//
75
//                     IRowEdited edRow = new DefaultRowEdited(feat,
76
//                                     IRowEdited.STATUS_MODIFIED, i);
77
//                     try {
78
//                                ies.modifyRow(edRow.getIndex(), edRow.getLinkedRow(), "",
79
//                                                 EditionEvent.ALPHANUMERIC);
80
//                        } catch (ExpansionFileWriteException e) {
81
//                                NotificationManager.addError(e);
82
//                        } catch (ExpansionFileReadException e) {
83
//                                NotificationManager.addError(e);
84
//                        } catch (ValidateRowException e) {
85
//                                NotificationManager.addError(e);
86
//                        } catch (ReadDriverException e) {
87
//                                NotificationManager.addError(e);
88
//                        }
89
//
90
//            }
91

    
92
         public void isCorrectValue(Object obj) throws BSFException {
93
                if (obj instanceof Number || obj instanceof Date || obj instanceof Boolean || obj instanceof String || obj == null ) {
94

    
95
                }else{
96
                        throw new BSFException("incorrect");
97
                }
98
         }
99

    
100

    
101
         /**
102
             * Returns the value created from object.
103
             *
104
             * @param obj value.
105
             *
106
             * @return Value.
107
             */
108
//            private Value getValue(Object obj) {
109
//                int typeField = fieldDescriptor.getFieldType();
110
//                Value value = null;//ValueFactory.createNullValue();
111
//
112
//                if (obj instanceof Number) {
113
//                    if (typeField == Types.DOUBLE || typeField == Types.NUMERIC) {
114
//                        double dv = ((Number) obj).doubleValue();
115
//                        value = ValueFactory.createValue(dv);
116
//                    } else if (typeField == Types.FLOAT) {
117
//                        float df = ((Number) obj).floatValue();
118
//                        value = ValueFactory.createValue(df);
119
//                    } else if (typeField == Types.INTEGER) {
120
//                        int di = ((Number) obj).intValue();
121
//                        value = ValueFactory.createValue(di);
122
//                    } else if (typeField == Types.BIGINT) {
123
//                        long di = ((Number) obj).longValue();
124
//                        value = ValueFactory.createValue(di);
125
//                    } else if (typeField == Types.VARCHAR) {
126
//                        String s = ((Number) obj).toString();
127
//                        value = ValueFactory.createValue(s);
128
//                    } else if (typeField == Types.BOOLEAN) {
129
//                        if (((Number) obj).intValue()==0){
130
//                                value=ValueFactory.createValue(false);
131
//                        }else{
132
//                                value=ValueFactory.createValue(true);
133
//                        }
134
//                    }
135
//                } else if (obj instanceof Date) {
136
//                    if (typeField == Types.DATE) {
137
//                        Date date = (Date) obj;
138
//                        value = ValueFactory.createValue(date);
139
//                    } else if (typeField == Types.VARCHAR) {
140
//                        String s = ((Date) obj).toString();
141
//                        value = ValueFactory.createValue(s);
142
//                    }
143
//                } else if (obj instanceof Boolean) {
144
//                    if (typeField == Types.BOOLEAN) {
145
//                        boolean b = ((Boolean) obj).booleanValue();
146
//                        value = ValueFactory.createValue(b);
147
//                    } else if (typeField == Types.VARCHAR) {
148
//                        String s = ((Boolean) obj).toString();
149
//                        value = ValueFactory.createValue(s);
150
//                    }
151
//                } else if (obj instanceof String) {
152
//                    if (typeField == Types.VARCHAR) {
153
//                        String s = obj.toString();
154
//                        value = ValueFactory.createValue(s);
155
//                    }
156
//                }else{
157
//                        value=ValueFactory.createNullValue();
158
//                }
159
//
160
//                return value;
161
//            }
162
        public FeatureAttributeDescriptor getFieldDescriptorSelected() {
163
                return selectedDescriptor;
164
        }
165
        public FeatureType getFieldDescriptors() {
166
                return featureType;
167
        }
168
//        public void setFieldValue(Object obj,int i) {
169
//            try {
170
//                        ((DBFDriver)table.getModel().getModelo().getOriginalDriver()).setFieldValue(i,selectedIndex,obj);
171
//                } catch (DriverLoadException e) {
172
//                        e.printStackTrace();
173
//                } catch (IOException e) {
174
//                        e.printStackTrace();
175
//                }
176
//    }
177
        public void saveEdits() throws DataException {
178
//                if (limit==-1 || numRows == 0 || (numRows % limit)!=0) {
179
//                        return;
180
//                }
181
                table.getModel().getStore().finishEditing();
182

    
183

    
184
//                ies.endComplexRow(PluginServices.getText(this, "expression"));
185
//                if ((lv != null) &&
186
//                lv.getSource() instanceof VectorialEditableAdapter) {
187
//                VectorialEditableAdapter vea = (VectorialEditableAdapter) lv.getSource();
188
//                ISpatialWriter spatialWriter = (ISpatialWriter) vea.getDriver();
189
//                vea.cleanSelectableDatasource();
190
//                         lv.setRecordset(vea.getRecordset()); // Queremos que el recordset del layer
191
//                         // refleje los cambios en los campos.
192
//                         ILayerDefinition lyrDef = EditionUtilities.createLayerDefinition(lv);
193
//                         spatialWriter.initialize(lyrDef);
194
//                         vea.saveEdits(spatialWriter,EditionEvent.ALPHANUMERIC);
195
//                         vea.getCommandRecord().clearAll();
196
//         } else {
197
//              if (ies instanceof IWriteable){
198
//                      IWriteable w = (IWriteable) ies;
199
//                         IWriter writer = w.getWriter();
200
//                         if (writer == null){
201
//                         }else{
202
//                                             ITableDefinition tableDef = ies.getTableDefinition();
203
//                                            writer.initialize(tableDef);
204
//
205
//                                            ies.saveEdits(writer,EditionEvent.ALPHANUMERIC);
206
//                                ies.getSelection().clear();
207
//                         }
208
//              }
209
//              ies.getCommandRecord().clearAll();
210
//         }
211
//                ies.startComplexRow();
212
//             table.refresh();
213
    }
214
}