Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extSextanteGvsigBindings / src / org / gvsig / sextante / core / gvTable.java @ 31496

History | View | Annotate | Download (7.21 KB)

1
package org.gvsig.sextante.core;
2

    
3
import java.io.File;
4

    
5
import org.gvsig.app.project.ProjectManager;
6
import org.gvsig.app.project.documents.table.TableDocument;
7
import org.gvsig.app.project.documents.table.TableManager;
8
import org.gvsig.fmap.dal.exception.DataException;
9
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
10
import org.gvsig.fmap.dal.feature.FeatureSet;
11
import org.gvsig.fmap.dal.feature.FeatureStore;
12
import org.gvsig.fmap.dal.feature.FeatureType;
13
import org.gvsig.tools.dispose.DisposeUtils;
14

    
15
import es.unex.sextante.dataObjects.AbstractTable;
16
import es.unex.sextante.dataObjects.IRecordsetIterator;
17

    
18
public class gvTable extends AbstractTable {
19

    
20
        private Object m_BaseDataObject;
21
        private String m_sName;
22
        private String m_sFilename;
23
        private FeatureSet featureSet;
24
        private FeatureType featureType;
25
        private FeatureStore featureStore;
26

    
27
        public String getName() {
28

    
29
                if (m_BaseDataObject instanceof TableDocument){
30
                        TableDocument table = (TableDocument) m_BaseDataObject;
31
                        return table.getName();
32
                }
33
                else{
34
                        return m_sName;
35
                }
36

    
37
        }
38

    
39
        public void create(Object obj) {
40

    
41
                if (obj instanceof TableDocument){
42
                        try {
43
                                featureStore =((TableDocument)obj).getStore();
44
                                featureSet = featureStore.getFeatureSet(((TableDocument)obj).getQuery());
45
                                featureType = featureStore.getDefaultFeatureType();
46

    
47
                        } catch (DataException e) {
48
                                e.printStackTrace();
49
                        }
50
                }
51

    
52
        }
53

    
54
        public void create(String sName, String sFilename, Class[] types, String[] sFields) {
55

    
56
//                m_sFilename = sFilename;
57
//                TableMemoryDriver table = new TableMemoryDriver(sFields, DataTools.getgvSIGTypes(types));
58
//                m_sName = sName;
59
//                m_BaseDataObject = table;
60

    
61
        }
62

    
63
        public void addRecord(Object[] record) {
64

    
65
//                if (m_BaseDataObject instanceof TableMemoryDriver) {
66
//                        TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
67
//                        table.addRow(DataTools.getGVSIGValues(record));
68
//                }
69

    
70
        }
71

    
72
        public IRecordsetIterator iterator() {
73

    
74
                try {
75
                        return new gvRecordsetIterator(featureSet);
76
                } catch (DataException e) {
77
                        throw new RuntimeException(e);
78
                }
79

    
80
        }
81

    
82
        public String getFieldName(int i) {
83
                return ((FeatureAttributeDescriptor)featureType.get(i)).getName();
84
//                if (m_BaseDataObject instanceof FeatureTableDocument) {
85
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
86
//                        try {
87
//                                return table.getModelo().getRecordset().getFieldName(i);
88
//                        } catch (Exception e) {
89
//                                return "";
90
//                        }
91
//                }
92
//                else{
93
//                        TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
94
//                        return table.getFieldName(i);
95
//                }
96

    
97
        }
98

    
99
        public Class getFieldType(int i) {
100
                return DataTools.getTypeClass(((FeatureAttributeDescriptor)featureType.get(i)).getDataType());
101
//                if (m_BaseDataObject instanceof FeatureTableDocument) {
102
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
103
//                        try {
104
//                                int iType = table.getModelo().getRecordset().getFieldType(i);
105
//                                return DataTools.getTypeClass(iType);
106
//                        } catch (Exception e) {
107
//                                return String.class;
108
//                        }
109
//                }
110
//                else{
111
//                        TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
112
//                        int iType;
113
//                        iType = table.getFieldType(i);
114
//                        return DataTools.getTypeClass(iType);
115
//                }
116

    
117
        }
118

    
119
        public int getFieldCount() {
120
                return featureType.size();
121
//                if (m_BaseDataObject instanceof FeatureTableDocument) {
122
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
123
//                        try {
124
//                                return table.getModelo().getRecordset().getFieldCount();
125
//                        } catch (Exception e) {
126
//                                return 0;
127
//                        }
128
//                }
129
//                else{
130
//                        TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
131
//                        return table.getFieldCount();
132
//                }
133

    
134
        }
135

    
136
        public long getRecordCount() {
137
                try {
138
                        return featureSet.getSize();
139
                } catch (DataException e) {
140
                        e.printStackTrace();
141
                }
142
                return 0;
143
//                if (m_BaseDataObject instanceof FeatureTableDocument) {
144
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
145
//                        try {
146
//                                return table.getModelo().getRecordset().getRowCount();
147
//                        } catch (Exception e) {
148
//                                return 0;
149
//                        }
150
//                }
151
//                else{
152
//                        TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
153
//                        return table.getRowCount();
154
//                }
155

    
156
        }
157

    
158
        public void postProcess() {
159

    
160
//                SelectableDataSource source;
161
//                ITableDefinition orgDef;
162
//                FileDriver driver;
163
                File file;
164
                try {
165
//                        LayerFactory.getDataSourceFactory().addDataSource((TableMemoryDriver)m_BaseDataObject,
166
//                                        m_sName);
167
//                        DataSource dataSource = LayerFactory.getDataSourceFactory().
168
//                        createRandomDataSource(m_sName);
169
//                        dataSource.start();
170
//                        SelectableDataSource sds = new SelectableDataSource(dataSource);
171
//                        EditableAdapter auxea = new EditableAdapter();
172
//                        auxea.setOriginalDataSource(sds);
173
                        TableDocument table = (TableDocument) ProjectManager.getInstance().createDocument(
174
                                        TableManager.TYPENAME, 
175
                                        m_sName
176
                        );
177
                        table.setStore( featureStore);
178
                        file = new File(m_sFilename);
179
//                        driver = (FileDriver) LayerFactory.getDM().getDriver("gdbms dbf driver");
180
//                        source = table.getModelo().getRecordset();
181
//                        source.start();
182
//                        orgDef = table.getModelo().getTableDefinition();
183
                } catch (Exception e) {
184
                        return;
185
                }
186

    
187
//                try {
188
//                        if (!file.exists()){
189
//                                driver.createSource(file.getAbsolutePath(),new String[] {"0"},new int[] {Types.INTEGER} );
190
//                                file.createNewFile();
191
//                        }
192
//                        driver.open(file);
193
//                } catch (IOException e) {
194
//                        e.printStackTrace();
195
//                        return;
196
//                } catch (ReadException ex) {
197
//                        ex.printStackTrace();
198
//                        return;
199
//                }
200

    
201
//                IWriter writer = ((IWriteable)driver).getWriter();
202
//                try {
203
//                        writer.initialize(orgDef);
204
//                        writer.preProcess();
205
//                        SourceIterator sourceIter = new SourceIterator(source);
206
//                        IFeature feature;
207
//                        int i=0;
208
//                        while (sourceIter.hasNext()){
209
//                                 feature = sourceIter.nextFeature();
210
//
211
//                                 DefaultRowEdited edRow = new DefaultRowEdited(feature,
212
//                                                 DefaultRowEdited.STATUS_ADDED, i);
213
//                                 writer.process(edRow);
214
//                                 i++;
215
//                        }
216
//                        writer.postProcess();
217
//                } catch (Exception e) {
218
//                        return;
219
//                }
220

    
221
                TableDocument table = FileTools.openTable(m_sFilename, m_sName);
222
                create(table);
223

    
224
        }
225

    
226
        public void open() {
227

    
228
//                if (m_BaseDataObject instanceof FeatureTableDocument){
229
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
230
//                        try {
231
//                                table.getModelo().getRecordset().start();
232
//                        } catch (Exception e) {
233
//                                e.printStackTrace();
234
//                        }
235
//                }
236

    
237
        }
238

    
239
        public void close() {
240

    
241
//                if (m_BaseDataObject instanceof FeatureTableDocument){
242
//                        FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
243
//                        try {
244
//                                table.getModelo().getRecordset().stop();
245
//                        } catch (Exception e) {
246
//                                e.printStackTrace();
247
//                        }
248
//                }
249
                DisposeUtils.dispose(featureSet);
250

    
251
        }
252

    
253
        public String getFilename() {
254

    
255
                return m_sFilename;
256

    
257
        }
258

    
259
        public void setName(String name) {
260

    
261
                if (m_BaseDataObject instanceof TableDocument){
262
                        TableDocument table = (TableDocument) m_BaseDataObject;
263
                        table.setName(name);
264
                }
265
                else{
266
                        m_sName = name;
267
                }
268

    
269
        }
270

    
271
        public Object getBaseDataObject() {
272

    
273
                return m_BaseDataObject;
274

    
275
        }
276

    
277

    
278
}