Revision 27428

View differences:

tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/DataTools.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.sql.Types;
4
import java.util.Date;
5

  
6
import org.gvsig.fmap.dal.DataTypes;
7

  
8
public class DataTools {
9

  
10
	public static int[] getgvSIGTypes(Class[] types) {
11

  
12
		int iTypes[] = new int[types.length];
13
		for (int i = 0; i < types.length; i++) {
14
			if (types[i].equals(Integer.class)){
15
				iTypes[i] = DataTypes.INT;
16
			}
17
			else if (types[i].equals(Double.class)){
18
				iTypes[i] = DataTypes.DOUBLE;
19
			}
20
			else if (types[i].equals(Long.class)){
21
				iTypes[i] = DataTypes.LONG;
22
			}
23
			else if (types[i].equals(Float.class)){
24
				iTypes[i] = DataTypes.FLOAT;
25
			}
26
			else if (types[i].equals(String.class)){
27
				iTypes[i] = DataTypes.CHAR;
28
			}
29
			else if (types[i].equals(Date.class)){
30
				iTypes[i] = DataTypes.DATE;
31
			}
32
			else if (types[i].equals(Boolean.class)){
33
				iTypes[i] = DataTypes.BOOLEAN;
34
			}
35
			else if (types[i].equals(Object.class)){
36
				iTypes[i] = DataTypes.OBJECT;
37
			}
38
		}
39

  
40
		return iTypes;
41

  
42
	}
43

  
44
	public static Class getTypeClass(int dataType) {
45

  
46
		switch (dataType) {
47
		case DataTypes.DOUBLE:
48
			return Double.class;
49
		case DataTypes.FLOAT:
50
			return Float.class;
51
		case DataTypes.LONG:
52
			return Long.class;
53
		case DataTypes.INT:
54
			return Integer.class;
55
		case DataTypes.STRING:
56
			return String.class;
57
		case DataTypes.CHAR:
58
			return String.class;
59
		case DataTypes.DATE:
60
			return Date.class;
61
		case DataTypes.BOOLEAN:
62
			return Boolean.class;
63
		}
64

  
65
		return String.class;
66

  
67
	}
68

  
69

  
70
//	public static Object[] getSextanteValues(Value[] record) {
71
//
72
//		Object[] values = new Object[record.length];
73
//
74
//		for (int i = 0; i < record.length; i++) {
75
//			if (record[i] instanceof IntValue){
76
//				values[i] = new Integer(((IntValue)record[i]).getValue());
77
//			}
78
//			else if (record[i] instanceof DoubleValue){
79
//				values[i] = new Double(((DoubleValue)record[i]).getValue());
80
//			}
81
//			else if (record[i] instanceof FloatValue){
82
//				values[i] = new Float(((FloatValue)record[i]).getValue());
83
//			}
84
//			else if (record[i] instanceof LongValue){
85
//				values[i] = new Long(((LongValue)record[i]).getValue());
86
//			}
87
//			else if (record[i] instanceof DateValue){
88
//				values[i] = ((DateValue)record[i]).getValue();
89
//			}
90
//			else if (record[i] instanceof StringValue){
91
//				values[i] = ((StringValue)record[i]).getValue();
92
//			}
93
//			else if (record[i] instanceof BooleanValue){
94
//				values[i] = new Boolean(((BooleanValue)record[i]).getValue());
95
//			}
96
//		}
97
//
98
//		return values;
99
//
100
//	}
101

  
102
//	public static Value[] getGVSIGValues(Object[] record) {
103
//
104
//		Value[] values = new Value[record.length];
105
//
106
//		for (int i = 0; i < record.length; i++) {
107
//			if (record[i] instanceof Integer){
108
//				values[i] = ValueFactory.createValue(((Integer)record[i]).intValue());
109
//			}
110
//			else if (record[i] instanceof Double){
111
//				values[i] = ValueFactory.createValue(((Double)record[i]).doubleValue());
112
//			}
113
//			else if (record[i] instanceof Float){
114
//				values[i] = ValueFactory.createValue(((Float)record[i]).longValue());
115
//			}
116
//			else if (record[i] instanceof Long){
117
//				values[i] = ValueFactory.createValue(((Long)record[i]).longValue());
118
//			}
119
//			else if (record[i] instanceof Date){
120
//				values[i] = ValueFactory.createValue(((Date)record[i]));
121
//			}
122
//			else if (record[i] instanceof String){
123
//				values[i] = ValueFactory.createValue(((String)record[i]));
124
//			}
125
//			else if (record[i] instanceof Boolean){
126
//				values[i] = ValueFactory.createValue(((Boolean)record[i]).booleanValue());
127
//			}
128
//			else if (record[i] == null){
129
//				values[i] = ValueFactory.createNullValue();
130
//			}
131
//		}
132
//
133
//		return values;
134
//
135
//	}
136

  
137
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvRasterLayer.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.awt.geom.Rectangle2D;
4

  
5
import org.cresques.cts.IProjection;
6
import org.gvsig.fmap.geom.primitive.Envelope;
7
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
8
import org.gvsig.raster.buffer.RasterBuffer;
9
import org.gvsig.raster.grid.Grid;
10
import org.gvsig.raster.grid.GridException;
11

  
12
import es.unex.sextante.dataObjects.AbstractRasterLayer;
13
import es.unex.sextante.dataObjects.IRasterLayer;
14
import es.unex.sextante.rasterWrappers.GridExtent;
15

  
16
public class gvRasterLayer extends AbstractRasterLayer {
17

  
18
	private String m_sFilename;
19
	private IProjection m_Projection;
20
	private Grid layerGrid = null;
21

  
22
	private double DEFAULT_NO_DATA_VALUE = -99999.;
23

  
24
	public void create(String sName, String sFilename,
25
						GridExtent ge, int iDataType,
26
						int iNumBands, Object crs) {
27

  
28
		RasterMemoryDriver rmd = new RasterMemoryDriver(ge, iDataType, iNumBands);
29
		rmd.setName(sName);
30
		//rmd.setProjection((IProjection) crs);
31
		rmd.setNoDataValue(DEFAULT_NO_DATA_VALUE);
32

  
33
		m_BaseDataObject = rmd;
34

  
35
		m_sFilename = sFilename;
36

  
37
		m_Projection = (IProjection) crs;
38

  
39
	}
40

  
41
	public void create(String sName, String sFilename,
42
			GridExtent ge, int iDataType, Object crs) {
43

  
44
		create(sName, sFilename, ge, iDataType, 1, crs);
45

  
46
	}
47

  
48
	public void create(Object obj) {
49

  
50
		if (obj instanceof FLyrRasterSE){
51
			m_BaseDataObject = obj;
52
			m_Projection = ((FLyrRasterSE)obj).getProjection();
53
		}
54

  
55
	}
56

  
57
	public int getDataType() {
58

  
59
		if (m_BaseDataObject instanceof FLyrRasterSE) {
60
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
61
			return layer.getDataType()[0];
62
		}
63
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
64
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
65
			return layer.getRasterBuf().getDataType();
66
		}
67

  
68
		return 0;
69
	}
70

  
71
	public void assign(double dValue) {
72

  
73
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
74
			super.assign(dValue);
75
		}
76

  
77
	}
78

  
79
	public void assign(IRasterLayer layer) {
80

  
81
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
82
			super.assign(layer);
83
		}
84

  
85
	}
86

  
87
	public void setCellValue(int x, int y, int iBand, double dValue) {
88

  
89
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
90
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
91
			layer.setCellValue(x,y, iBand, dValue);
92
		}
93

  
94
	}
95

  
96
	public void setNoDataValue(double dNoDataValue) {
97

  
98
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
99
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
100
			layer.setNoDataValue(dNoDataValue);
101
		}
102
		else if (m_BaseDataObject instanceof FLyrRasterSE) {
103
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
104
			layer.setNoDataValue(dNoDataValue);
105
		}
106

  
107
	}
108

  
109
	public void setNoData(int x, int y) {
110

  
111
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
112
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
113
			layer.setNoData(x, y);
114
		}
115

  
116
	}
117

  
118
	public double getNoDataValue(){
119

  
120
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
121
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
122
			return layer.getNoDataValue();
123
		}
124
		else if (m_BaseDataObject instanceof FLyrRasterSE) {
125
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
126
			return layer.getNoDataValue();
127
		}
128

  
129
		return 0;
130

  
131
	}
132

  
133
	public double getCellValueInLayerCoords(int x, int y, int band) {
134

  
135
		if (m_BaseDataObject instanceof FLyrRasterSE) {
136
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
137
			int iType = layerGrid.getDataType();
138

  
139
			if (iType == RasterBuffer.TYPE_DOUBLE) {
140
				return  layerGrid.getRasterBuf().getElemDouble(y, x, band);
141
			} else if (iType == RasterBuffer.TYPE_INT) {
142
				return (double)  layerGrid.getRasterBuf().getElemInt(y, x, band);
143
			} else if (iType == RasterBuffer.TYPE_FLOAT) {
144
				return (double)  layerGrid.getRasterBuf().getElemFloat(y, x, band);
145
			} else if (iType == RasterBuffer.TYPE_BYTE) {
146
				return (double) ( layerGrid.getRasterBuf().getElemByte(y, x, band) & 0xff);
147
			} else if ((iType == RasterBuffer.TYPE_SHORT) | (iType == RasterBuffer.TYPE_USHORT)) {
148
				return (double)  layerGrid.getRasterBuf().getElemShort(y, x, band);
149
			}
150

  
151
			return layerGrid.getNoDataValue();
152
		}
153
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
154
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
155
			return layer.getCellValue(x, y, band);
156
		}
157

  
158
		return getNoDataValue();
159

  
160
	}
161

  
162
	public int getBandsCount() {
163

  
164
		if (m_BaseDataObject instanceof FLyrRasterSE) {
165
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
166
			return layer.getBandCount();
167
		}
168
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
169
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
170
			return layer.getRasterBuf().getBandCount();
171
		}
172

  
173
		return 0;
174

  
175
	}
176

  
177
	public void fitToGridExtent(GridExtent ge){
178

  
179
		int iNX, iNY;
180
		int x, y;
181
		int iBand;
182

  
183
		if (ge != null){
184
			if (!ge.equals(getWindowGridExtent()) ){
185
				if (m_BaseDataObject instanceof RasterMemoryDriver) {
186
					RasterMemoryDriver gvSIGDriver = (RasterMemoryDriver) m_BaseDataObject;
187

  
188
					FLyrRasterSE gvSIGLayer = gvSIGDriver.getRasterLayer(Long.toString(System.currentTimeMillis()).toString(),
189
							m_Projection);
190
					gvRasterLayer orgLayer = new gvRasterLayer();
191
					orgLayer.create(gvSIGLayer);
192

  
193
					iNX = ge.getNX();
194
					iNY = ge.getNY();
195

  
196
					m_BaseDataObject = null;
197

  
198
					create(this.getName(), m_sFilename, ge, this.getDataType(), this.getBandsCount());
199
					for (iBand = 0; iBand < this.getBandsCount(); iBand++){
200
						for (y = 0; y < iNY; y++){
201
							for (x = 0; x < iNX; x++){
202
								setCellValue(x, y, iBand, orgLayer.getCellValueAsDouble(x, y, iBand));
203
							}
204
						}
205
					}
206
				}
207
			}
208
		}
209
	}
210

  
211
	public String getName() {
212

  
213
		if (m_BaseDataObject instanceof FLyrRasterSE) {
214
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
215
			return layer.getName();
216
		}
217
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
218
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
219
			return layer.getName();
220
		}
221

  
222
		return null;
223

  
224
	}
225

  
226
	public void postProcess() {
227

  
228
		if (m_BaseDataObject instanceof RasterMemoryDriver) {
229
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
230
			if (layer.export(m_sFilename, m_Projection)){
231
				FLyrRasterSE rasterLayer = (FLyrRasterSE) FileTools.openLayer(m_sFilename,
232
											layer.getName(), null);
233
				create(rasterLayer);
234
				rasterLayer.setNoDataValue(layer.getNoDataValue());
235
				System.gc();
236
			}
237
		}
238

  
239
	}
240

  
241
	public void open() {
242

  
243
		if (m_BaseDataObject instanceof FLyrRasterSE) {
244
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
245
			try {
246
				layerGrid = layer.getReadOnlyFullGrid(false);
247
			} catch (GridException e) {
248
				e.printStackTrace();
249
			} catch (InterruptedException e) {
250
				e.printStackTrace();
251
			}
252
		}
253

  
254
	}
255

  
256
	public void close() {
257

  
258
		if (m_BaseDataObject instanceof FLyrRasterSE) {
259
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
260
			if(layerGrid != null)
261
				layerGrid.getRasterBuf().free();
262
			layerGrid = null;
263
		}
264

  
265
	}
266

  
267
	public Rectangle2D getFullExtent() {
268

  
269
		if (m_BaseDataObject instanceof FLyrRasterSE) {
270
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
271
			try{
272
				Envelope env=layer.getFullEnvelope();
273
				return new Rectangle2D.Double(env.getMinimum(0),env.getMinimum(1),env.getLength(0),env.getLength(1));
274
			}catch(Exception e){
275
				return null;
276
			}
277
		}
278
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
279
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
280
			return layer.getGridExtent().getAsRectangle2D();
281
		}
282

  
283
		return null;
284

  
285
	}
286

  
287
	public GridExtent getLayerGridExtent() {
288

  
289
		if (m_BaseDataObject instanceof FLyrRasterSE) {
290
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
291
			try{
292
				GridExtent extent = new GridExtent();
293
				extent.setXRange(layer.getMinX(), layer.getMaxX());
294
				extent.setYRange(layer.getMinY(), layer.getMaxY());
295
				extent.setCellSize(layer.getCellSize());
296
				return extent;
297
			}catch(Exception e){
298
				return null;
299
			}
300
		}
301
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
302
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
303
			return layer.getGridExtent();
304
		}
305

  
306
		return null;
307

  
308
	}
309

  
310
	public double getLayerCellSize() {
311

  
312
		if (m_BaseDataObject instanceof FLyrRasterSE) {
313
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
314
			return layer.getCellSize();
315
		}
316
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
317
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
318
			return layer.getGridExtent().getCellSize();
319
		}
320

  
321
		return 0;
322

  
323
	}
324

  
325
	public String getFilename() {
326

  
327
		if (m_BaseDataObject instanceof FLyrRasterSE) {
328
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
329
			return layer.getDataSource().getDataset(0)[0].getFName();
330
		}
331
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
332
			return m_sFilename;
333
		}
334

  
335
		return "";
336

  
337
	}
338

  
339

  
340
	public Object getCRS() {
341

  
342
		return m_Projection;
343

  
344
	}
345

  
346

  
347
	public void setName(String name) {
348

  
349
		if (m_BaseDataObject instanceof FLyrRasterSE) {
350
			FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject;
351
			layer.setName(name);
352
		}
353
		else if (m_BaseDataObject instanceof RasterMemoryDriver) {
354
			RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject;
355
			layer.setName(name);
356
		};
357

  
358
	}
359

  
360
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvVectorLayer.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.awt.geom.Rectangle2D;
4
import java.io.File;
5
import java.sql.Types;
6
import java.util.Date;
7
import java.util.Iterator;
8

  
9
import org.cresques.cts.IProjection;
10
import org.gvsig.fmap.dal.DALLocator;
11
import org.gvsig.fmap.dal.DataManager;
12
import org.gvsig.fmap.dal.DataStoreParameters;
13
import org.gvsig.fmap.dal.DataTypes;
14
import org.gvsig.fmap.dal.exception.DataException;
15
import org.gvsig.fmap.dal.exception.ReadException;
16
import org.gvsig.fmap.dal.feature.EditableFeature;
17
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
18
import org.gvsig.fmap.dal.feature.EditableFeatureType;
19
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
20
import org.gvsig.fmap.dal.feature.FeatureStore;
21
import org.gvsig.fmap.dal.feature.FeatureType;
22
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
23
import org.gvsig.fmap.dal.feature.impl.DefaultEditableFeatureType;
24
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
25
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
26
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
27
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters;
28
import org.gvsig.fmap.geom.primitive.Envelope;
29
import org.gvsig.fmap.geom.util.Converter;
30
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
31

  
32
import com.vividsolutions.jts.geom.Geometry;
33

  
34
import es.unex.sextante.dataObjects.AbstractVectorLayer;
35
import es.unex.sextante.dataObjects.IFeatureIterator;
36
import es.unex.sextante.dataObjects.IVectorLayer;
37

  
38
public class gvVectorLayer extends AbstractVectorLayer {
39

  
40
	private final int PRECISION = 5;
41

  
42
	private String m_sFilename;
43
	private FeatureStore featureStore;
44
	private int m_iGeometry;
45
	private String m_sName;
46
	private IProjection m_Projection;
47

  
48
	private FeatureType featureType;
49

  
50
	public void create(String sName, String sFilename, int iShapeType,
51
			Class[] types, String[] sFields, Object crs) {
52

  
53
		int iTypes[];
54
		try {
55
			FeatureType fType=getFeatureType(sFields, types, iShapeType, crs);
56
//			LayerDefinition tableDef;
57

  
58
			m_sName = sName;
59
			m_sFilename = sFilename;
60
			m_iGeometry = 0;
61
			m_Projection = (IProjection) crs;
62

  
63
			DataManager datamanager=DALLocator.getDataManager();
64
			FilesystemServerExplorerParameters explorerParams=(FilesystemServerExplorerParameters) datamanager.createServerExplorerParameters(FilesystemServerExplorer.NAME);
65
			explorerParams.setRoot(new File(sFilename).getParent());
66
			FilesystemServerExplorer explorer=(FilesystemServerExplorer) datamanager.createServerExplorer(explorerParams);
67
			NewFeatureStoreParameters newParams = (NewFeatureStoreParameters) explorer.getAddParameters(new File(sFilename));
68

  
69
			newParams.setDefaultFeatureType(featureType);
70
//			((FilesystemStoreParameters)newParams).setSRS((IProjection) crs);
71
			explorer.add(newParams, true);
72
			DataManager manager = DALLocator.getDataManager();
73
			featureStore = (FeatureStore) manager
74
			.createStore(newParams);
75
			featureStore.edit(FeatureStore.MODE_APPEND);
76

  
77

  
78

  
79

  
80
			if (sFilename.toLowerCase().endsWith("dxf")){
81
//				m_Writer = new DxfWriter();
82
//				((DxfWriter)m_Writer).setFile(new File(sFilename));
83
//				((DxfWriter)m_Writer).setProjection((IProjection) crs);
84
//				tableDef = new DXFLayerDefinition();
85
//				tableDef.setShapeType(getgvSIGShapeType(iShapeType));
86

  
87
//				DxfFieldsMapping fieldsMapping = new DxfFieldsMapping();
88
//				((DxfWriter)m_Writer).setFieldMapping(fieldsMapping);
89

  
90
			}
91
			else{
92
//				m_Writer = new ShpWriter();
93
//				((ShpWriter)m_Writer).setFile(new File(sFilename));
94
//				tableDef = new SHPLayerDefinition();
95
//				tableDef.setShapeType(getgvSIGShapeType(iShapeType));
96
			}
97

  
98
//			iTypes = DataTools.getgvSIGTypes(types);
99

  
100
//			FieldDescription[] fields = new FieldDescription[sFields.length];
101
//			for (int i = 0; i < fields.length; i++) {
102
//			fields[i] = new FieldDescription();
103
//			fields[i].setFieldName(sFields[i]);
104
//			fields[i].setFieldType(iTypes[i]);
105
//			fields[i].setFieldLength(getDataTypeLength(iTypes[i]));
106
//			fields[i].setFieldDecimalCount(PRECISION);
107
//			}
108
//			tableDef.setFieldsDesc(fields);
109
//			tableDef.setName(sFilename);
110

  
111
//			m_Writer.initialize(tableDef);
112
//			m_Writer.preProcess();
113

  
114
//			m_RV = null;
115

  
116

  
117
		} catch (Exception e){
118
			e.printStackTrace();
119
		}
120

  
121
	}
122

  
123
	private FeatureType getFeatureType(String[] fields, Class[] types,
124
			int shapeType, Object crs) {
125
		int[] iTypes=DataTools.getgvSIGTypes(types);
126
		EditableFeatureType eft=new DefaultEditableFeatureType();
127
		for (int i = 0; i < fields.length; i++) {
128
			EditableFeatureAttributeDescriptor efad=eft.add(fields[i], iTypes[i]);
129
			if (iTypes[i]==DataTypes.GEOMETRY){
130
				efad.setGeometryType(shapeType);
131
				efad.setSRS((IProjection)crs);
132
			}else{
133
				efad.setPrecision(PRECISION);
134
			}
135
		}
136
		return eft;
137
	}
138

  
139
//	private int getTypeToDAL(Class class1) {
140
//		if (class1.equals(Integer.class)){
141
//			return DataTypes.INT;
142
//		}else if (class1.equals(Long.class)){
143
//			return DataTypes.LONG;
144
//		}else if (class1.equals(Float.class)){
145
//			return DataTypes.FLOAT;
146
//		}else if (class1.equals(Double.class)){
147
//			return DataTypes.DOUBLE;
148
//		}else if (class1.equals(String.class)){
149
//			return DataTypes.STRING;
150
//		}else if (class1.equals(Date.class)){
151
//			return DataTypes.DATE;
152
//		}else if (class1.equals(Object.class)){
153
//			return DataTypes.OBJECT;
154
//		}else if (class1.equals(Byte.class)){
155
//			return DataTypes.BYTE;
156
//		}else if (class1.equals(Boolean.class)){
157
//			return DataTypes.BOOLEAN;
158
//		}else if (class1.equals(Geometry.class)){
159
//			return DataTypes.GEOMETRY;
160
//		}
161
//		return DataTypes.STRING;
162
//	}
163

  
164
	public void create(Object obj) {
165

  
166
		if (obj instanceof FLyrVect){
167
			m_BaseDataObject = (FLyrVect) obj;
168
			FLyrVect layer = (FLyrVect) m_BaseDataObject;
169
			try{
170
				featureStore = layer.getFeatureStore();
171
				featureType=featureStore.getDefaultFeatureType();
172
				m_Projection = layer.getProjection();
173
			}
174
			catch(Exception e){
175
				e.printStackTrace();
176
			}
177
		}
178

  
179
	}
180

  
181
	public void open() {
182

  
183
//		if (featureStore != null) {
184
//
185
//			try {
186
//				featureStore.start();
187
//			} catch (InitializeDriverException e) {
188
//				e.printStackTrace();
189
//			} catch (ReadDriverException e) {
190
//				e.printStackTrace();
191
//			}
192
//
193
//		};
194

  
195
	}
196

  
197
	public void close() {
198

  
199
//		if (m_RV != null){
200
//			try {
201
//				m_RV.stop();
202
//			} catch (ReadDriverException e) {
203
//				e.printStackTrace();
204
//			}
205
//		};
206

  
207
	}
208

  
209
	/**
210
     * Returns the length of field
211
     * @param dataType
212
     * @return length of field
213
     */
214
	public int getDataTypeLength(int dataType) {
215

  
216
		switch (dataType) {
217
		case Types.NUMERIC:
218
		case Types.DOUBLE:
219
		case Types.REAL:
220
		case Types.FLOAT:
221
		case Types.BIGINT:
222
		case Types.INTEGER:
223
		case Types.DECIMAL:
224
			return 20;
225
		case Types.CHAR:
226
		case Types.VARCHAR:
227
		case Types.LONGVARCHAR:
228
			return 254;
229
		case Types.DATE:
230
			return 8;
231
		case Types.BOOLEAN:
232
		case Types.BIT:
233
			return 1;
234
		}
235
		return 0;
236

  
237
	}
238

  
239
	public void addFeature(Geometry geom, Object[] values) {
240

  
241
		org.gvsig.fmap.geom.Geometry iGeo = Converter.jtsToGeometry(geom);
242
//		Value[] gvSIGValues = DataTools.getGVSIGValues(values);
243
//		DefaultFeature feat = new DefaultFeature(iGeo, gvSIGValues, Integer.toString(m_iGeometry));
244
//		IRowEdited editFeat = new DefaultRowEdited(feat, IRowEdited.STATUS_MODIFIED, m_iGeometry);
245
		m_iGeometry++;
246
		try {
247
			EditableFeature ef=featureStore.createNewFeature();
248
			Iterator<FeatureAttributeDescriptor> features=featureType.iterator();
249
			int i=0;
250
			while (features.hasNext()) {
251
				FeatureAttributeDescriptor featureAttributeDescriptor = (FeatureAttributeDescriptor) features
252
						.next();
253
				if (!featureAttributeDescriptor.getName().equals(featureType.getDefaultGeometryAttributeName())){
254
					ef.set(featureAttributeDescriptor.getName(), values[i]);
255
					i++;
256
				}
257
			}
258
			ef.set(featureType.getDefaultGeometryAttributeIndex(), iGeo);
259
			featureStore.insert(ef);
260
		} catch (Exception e) {
261
			e.printStackTrace();
262
		}
263
	}
264

  
265
	public IFeatureIterator iterator() {
266

  
267
		if (m_BaseDataObject instanceof FLyrVect){
268
			FLyrVect layer = (FLyrVect) m_BaseDataObject;
269
			gvFeatureIterator iter = new gvFeatureIterator(layer);
270
			return iter;
271
		}
272
		else{
273
			return null;
274
		}
275

  
276
	}
277

  
278
	public String getFieldName(int i) {
279

  
280
		if (featureStore != null){
281
			return ((FeatureAttributeDescriptor)featureType.get(i)).getName();
282
		}
283
		return null; //TODO
284
	}
285

  
286
	public Class getFieldType(int i) {
287

  
288
		if (featureStore != null){
289
			return DataTools.getTypeClass(((FeatureAttributeDescriptor)featureType.get(i)).getDataType());
290
		}
291
		return null; //TODO
292
	}
293

  
294

  
295
	public int getFieldCount() {
296

  
297
		if (featureStore != null){
298
			return featureType.size();
299
		}
300
		return 0; //TODO
301

  
302
	}
303

  
304
	public int getShapesCount() {
305

  
306

  
307
		if (featureStore != null){
308
			try {
309
				return (int)featureStore.getFeatureSet().getSize();
310
			} catch (DataException e) {
311
				e.printStackTrace();
312
				return 0;
313
			}
314
		}
315

  
316
		return 0; //TODO
317

  
318
	}
319

  
320
	public int getShapeType() {
321

  
322
		if (featureStore != null){
323
			return getShapeTypeFromGvSIGShapeType(((FeatureAttributeDescriptor)featureType.get(featureType.getDefaultGeometryAttributeIndex())).getGeometryType());
324
		}
325

  
326
		return 0;
327

  
328
	}
329

  
330
	private int getShapeTypeFromGvSIGShapeType(int shapeType) {
331

  
332
		switch (shapeType){
333
		case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE:
334
			return IVectorLayer.SHAPE_TYPE_POLYGON;
335
		case org.gvsig.fmap.geom.Geometry.TYPES.CURVE:
336
			return IVectorLayer.SHAPE_TYPE_LINE;
337
		case org.gvsig.fmap.geom.Geometry.TYPES.POINT:
338
			return IVectorLayer.SHAPE_TYPE_POINT;
339
		default:
340
			return IVectorLayer.SHAPE_TYPE_POLYGON;
341
		}
342

  
343
	}
344

  
345
	private int getgvSIGShapeType(int shapeType) {
346

  
347
		switch (shapeType){
348
		case IVectorLayer.SHAPE_TYPE_POLYGON :
349
			return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE;
350
		case IVectorLayer.SHAPE_TYPE_LINE:
351
			return org.gvsig.fmap.geom.Geometry.TYPES.CURVE;
352
		case IVectorLayer.SHAPE_TYPE_POINT:
353
			return org.gvsig.fmap.geom.Geometry.TYPES.POINT;
354
		default:
355
			return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE;
356
		}
357

  
358
	}
359

  
360
	public String getName() {
361

  
362
		if (m_BaseDataObject instanceof FLyrVect){
363
			FLyrVect layer = (FLyrVect) m_BaseDataObject;
364
			return layer.getName();
365
		}
366
		else{
367
			return m_sName;
368
		}
369

  
370
	}
371

  
372
	public void postProcess() {
373

  
374
		if (featureStore == null){
375
			return;
376
		}
377
		try {
378
			featureStore.finishEditing();
379
		} catch (DataException e) {
380
			e.printStackTrace();
381
		}
382
		FLyrVect vectorLayer = (FLyrVect) FileTools.openLayer(
383
				m_sFilename, m_sName, m_Projection);
384
		create(vectorLayer);
385

  
386
	}
387

  
388
	public Rectangle2D getFullExtent() {
389

  
390
		if (m_BaseDataObject instanceof FLyrVect){
391
			FLyrVect layer = (FLyrVect) m_BaseDataObject;
392
			Envelope env=null;
393
			try {
394
				env = layer.getFullEnvelope();
395
			} catch (ReadException e) {
396
				e.printStackTrace();
397
			}
398
			return new Rectangle2D.Double(env.getMinimum(0), env.getMinimum(1), env.getLength(0), env.getLength(1));
399

  
400
		}
401
		return null;
402

  
403
	}
404

  
405
	public String getFilename() {
406

  
407
		if (m_BaseDataObject instanceof FLyrVect){
408
			FLyrVect layer = (FLyrVect) m_BaseDataObject;
409
			FeatureStore fs=null;
410
			try {
411
				fs = ((FLyrVect)layer).getFeatureStore();
412
			} catch (ReadException e) {
413
				e.printStackTrace();
414
			}
415
			DataStoreParameters dsp=fs.getParameters();
416
			if (dsp instanceof FilesystemStoreParameters) {
417
				return ((FilesystemStoreParameters)dsp).getFile().getAbsolutePath();
418
			}
419
			else{
420
				return null;
421
			}
422
		}
423
		else{
424
			return m_sFilename;
425
		}
426

  
427
	}
428

  
429
	public Object getCRS() {
430

  
431
		return m_Projection;
432

  
433
	}
434

  
435
	public void setName(String name) {
436

  
437
		m_sName = name;
438

  
439
	}
440

  
441
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/FileTools.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.io.File;
4

  
5
import org.cresques.cts.IProjection;
6
import org.gvsig.fmap.dal.DALLocator;
7
import org.gvsig.fmap.dal.DataManager;
8
import org.gvsig.fmap.dal.DataStoreParameters;
9
import org.gvsig.fmap.dal.feature.FeatureStore;
10
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
11
import org.gvsig.fmap.dal.store.dbf.DBFStoreParameters;
12
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
13
import org.gvsig.fmap.mapcontext.layers.FLayer;
14
import org.gvsig.fmap.mapcontext.layers.LayerFactory;
15
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
16
import org.gvsig.project.document.table.FeatureTableDocument;
17
import org.gvsig.raster.dataset.RasterDataset;
18

  
19
import com.iver.cit.gvsig.project.Project;
20
import com.iver.cit.gvsig.project.ProjectFactory;
21

  
22

  
23
public class FileTools {
24

  
25
	public final static String [] RASTER_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt",
26
													"lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "hdr"};
27
	public final static String [] RASTER_DRIVERS_IN = {"gvSIG Image Driver", "gvSIG Image Driver",
28
														"gvSIG Image Driver", "gvSIG Image Driver",
29
														"gvSIG Image Driver", "gvSIG Image Driver",
30
														"gvSIG Image Driver", "gvSIG Image Driver",
31
														"gvSIG Image Driver", "gvSIG Image Driver",
32
														"gvSIG Image Driver", "gvSIG Image Driver",
33
														"gvSIG Image Driver", "gvSIG Image Driver",
34
														"gvSIG Image Driver", "gvSIG Image Driver",
35
														"gvSIG Image Driver", "gvSIG Image Driver",
36
														"gvSIG Image Driver"
37
														};
38

  
39
	public final static String [] VECTOR_EXT_IN = {"shp","gml","dxf","dgn","dwg"};
40
	public final static String [] VECTOR_DRIVERS_IN = {"gvSIG shp driver",
41
													"gvSIG GML Memory Driver", "gvSIG DXF Memory Driver",
42
													"gvSIG DGN Memory Driver", "gvSIG DWG Memory Driver"};
43
	public final static String [] TABLE_EXT = {"dbf"};
44
	public static final String[] LAYERS_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt",
45
												"lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "shp","gml",
46
												"dxf","dgn","dwg"};
47
	public static final String[] LAYER_DRIVERS_IN = {"RasterStore", "RasterStore",
48
													"RasterStore", "RasterStore",
49
													"RasterStore", "RasterStore",
50
													"RasterStore", "RasterStore",
51
													"RasterStore", "RasterStore",
52
													"RasterStore", "RasterStore",
53
													"RasterStore", "RasterStore",
54
													"RasterStore", "RasterStore",
55
													"RasterStore", "RasterStore",
56
													"SHPStore",
57
													"GMLStore", "DXFStore",
58
													"DGNStore", "DWGStore"};
59

  
60
	public static FLayer openLayer(String sFilename, String sName, IProjection projection) {
61

  
62
		String sExtension = sFilename.substring(sFilename.lastIndexOf('.') + 1, sFilename.length());
63

  
64
		String[] extensionSupported = RasterDataset.getExtensionsSupported();
65
		FLyrRasterSE rlayer = null;
66
		for (int i = 0; i < extensionSupported.length; i++) {
67
			if(sExtension.equals(extensionSupported[i]))
68
				try {
69
					rlayer = FLyrRasterSE.createLayer(sName, new File(sFilename), projection);
70
				} catch (LoadLayerException e) {
71
					e.printStackTrace();
72
					return null;
73
				}
74
			if (rlayer != null && rlayer.isAvailable()){
75
				return rlayer;
76
			}
77
		}
78

  
79
		for (int i = 0; i < LAYERS_EXT_IN.length; i++) {
80
			if (sExtension.equals(LAYERS_EXT_IN[i])){
81
				try {
82
					FLayer layer;
83
//					Driver driver = LayerFactory.getDM().getDriver(FileTools.LAYER_DRIVERS_IN[i]);
84
					DataManager dm=DALLocator.getDataManager();
85
					DataStoreParameters params=dm.createStoreParameters(FileTools.LAYER_DRIVERS_IN[i]);
86
					((FilesystemStoreParameters)params).setFile(new File(sFilename));
87

  
88
					//FIXME ver si esto es necesario para todos los casos.
89
					if (params.hasDynValue("DefualtSRS")){
90
						params.setDynValue("DefaultSRS", projection);
91
					}
92
					layer = LayerFactory.getInstance().createLayer(sName, params);
93

  
94

  
95
					if (layer != null && layer.isAvailable()){
96
						return layer;
97
					}
98
					else{
99
						return null;
100
					}
101
				} catch (Exception e) {
102
					e.printStackTrace();
103
					return null;
104
				}
105
			}
106
		}
107
		return null;
108
	}
109

  
110
	public static FeatureTableDocument openTable(String sFilename, String sName) {
111
		DBFStoreParameters dbfParams=new DBFStoreParameters();
112
		dbfParams.setDBFFileName(sFilename);
113
		DataManager dm=DALLocator.getDataManager();
114
		try {
115
			FeatureStore store=(FeatureStore)dm.createStore(dbfParams);
116
			FeatureTableDocument pt = ProjectFactory.createTable(sName, store);
117
			return pt;
118

  
119
		} catch (Exception e) {
120
			return null;
121
		}
122

  
123
	}
124

  
125
	public static Object open(String sFilename){
126

  
127
		FLayer layer = openLayer(sFilename, sFilename, Project.getDefaultProjection());
128
		if (layer != null){
129
			return layer;
130
		}
131

  
132
		FeatureTableDocument table = openTable(sFilename, sFilename);
133

  
134
		return table;
135

  
136

  
137
	}
138

  
139
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvRecordsetIterator.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5

  
6
import org.gvsig.fmap.dal.exception.DataException;
7
import org.gvsig.fmap.dal.feature.Feature;
8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.feature.FeatureSet;
10
import org.gvsig.fmap.dal.feature.FeatureStore;
11
import org.gvsig.fmap.dal.feature.FeatureType;
12
import org.gvsig.project.document.table.FeatureTableDocument;
13

  
14
import es.unex.sextante.dataObjects.IRecord;
15
import es.unex.sextante.dataObjects.IRecordsetIterator;
16
import es.unex.sextante.dataObjects.RecordImpl;
17

  
18
public class gvRecordsetIterator implements IRecordsetIterator {
19

  
20
	private FeatureSet featureSet;
21
//	long m_iIndex;
22
	private Iterator<Feature> featureIterator;
23

  
24
	public gvRecordsetIterator(FeatureSet obj) {
25

  
26
		featureSet = (FeatureSet)obj;
27
		try {
28
			featureIterator=featureSet.iterator();
29
		} catch (DataException e) {
30
			e.printStackTrace();
31
		}
32
//		m_iIndex = 0;
33

  
34
	}
35

  
36
	public boolean hasNext() {
37
		return featureIterator.hasNext();
38
//		long iRecordCount = 0;
39
//		try{
40
//			if (m_Object instanceof TableMemoryDriver) {
41
//				TableMemoryDriver table = (TableMemoryDriver) m_Object;
42
//				iRecordCount = table.getRowCount();
43
//			}
44
//			else{
45
//				FeatureTableDocument table = (FeatureTableDocument) m_Object;
46
//				featureIterator = table.getStore().getFeatureSet(table.getQuery()).iterator();
47
//			}
48
//		}
49
//		catch(Exception e){
50
//			e.printStackTrace();
51
//		}
52
//
53
//		return iRecordCount > m_iIndex;
54

  
55
	}
56

  
57
	public IRecord next() {
58
		Feature feature = featureIterator.next();
59
		FeatureType fType=feature.getType();
60
		Iterator<FeatureAttributeDescriptor> descriptors=fType.iterator();
61
		ArrayList<Object> objects=new ArrayList<Object>();
62
		while (descriptors.hasNext()) {
63
			FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) descriptors.next();
64
			objects.add(feature.get(descriptor.getName()));
65
		}
66

  
67
		IRecord record = new RecordImpl(objects.toArray(new Object[0]));
68
//		int iFieldCount;
69
//		try{
70
//			if (m_Object instanceof TableMemoryDriver) {
71
//				TableMemoryDriver table = (TableMemoryDriver) m_Object;
72
//				iFieldCount = table.getFieldCount();
73
//				Object[] obj = new Object[iFieldCount];
74
//				for (int i = 0; i < iFieldCount; i++) {
75
//					obj[i] = table.getFieldValue(m_iIndex, i);
76
//				}
77
//				record = new RecordImpl(obj);
78
//			}
79
//			else{
80
//				FeatureTableDocument table = (FeatureTableDocument) m_Object;
81
//				Value[] obj = table.getModelo().getRecordset().getRow(m_iIndex);
82
//				record = new RecordImpl(DataTools.getSextanteValues(obj));
83
//			}
84
//		}
85
//		catch(Exception e){}
86
//
87
//		m_iIndex++;
88

  
89
		return record;
90

  
91
	}
92

  
93
	public void close() {}
94

  
95
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvFeatureIterator.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.util.ArrayList;
4
import java.util.Iterator;
5

  
6
import org.gvsig.fmap.dal.exception.DataException;
7
import org.gvsig.fmap.dal.feature.Feature;
8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.feature.FeatureType;
10
import org.gvsig.fmap.geom.operation.tojts.ToJTS;
11

  
12
import com.vividsolutions.jts.geom.Geometry;
13

  
14
import es.unex.sextante.dataObjects.FeatureImpl;
15
import es.unex.sextante.dataObjects.IFeature;
16
import es.unex.sextante.dataObjects.IFeatureIterator;
17

  
18
public class gvFeatureIterator implements IFeatureIterator {
19

  
20
    private Iterator<Feature> featureIterator;
21

  
22
    public gvFeatureIterator(org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect layer){
23
        try {
24
			featureIterator = layer.getFeatureStore().getFeatureSet().iterator();
25
		} catch (DataException e) {
26
			e.printStackTrace();
27
		}
28
    }
29

  
30
    public boolean hasNext() {
31
       return featureIterator.hasNext();
32
    }
33

  
34
    public IFeature next() throws java.util.NoSuchElementException{
35
        try{
36
        	Feature f=featureIterator.next();
37
           	org.gvsig.fmap.geom.Geometry geometry = f.getDefaultGeometry();
38
        	Geometry geom = (Geometry)geometry.invokeOperation(ToJTS.CODE, null);
39
        	FeatureType type=f.getType();
40
        	Iterator<FeatureAttributeDescriptor> iter=type.iterator();
41
        	ArrayList<Object> objects=new ArrayList<Object>();
42
        	while (iter.hasNext()) {
43
				FeatureAttributeDescriptor descriptor = iter.next();
44
				String name=descriptor.getName();
45
				if (!type.getDefaultGeometryAttributeName().equals(name)){
46
					objects.add(f.get(name));
47
				}
48
			}
49
        	FeatureImpl feature = new FeatureImpl(geom, objects.toArray(new Object[0]));
50
        	return feature;
51
        }catch (Exception e){
52
        	e.printStackTrace();
53
        	return null;
54
        }
55

  
56
    }
57

  
58
	public void close() {}
59

  
60
}
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvTable.java
1
package es.unex.sextante.gvsig.core;
2

  
3
import java.io.File;
4
import java.io.IOException;
5
import java.sql.Types;
6

  
7
import org.gvsig.fmap.dal.DataTypes;
8
import org.gvsig.fmap.dal.exception.DataException;
9
import org.gvsig.fmap.dal.exception.ReadException;
10
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11
import org.gvsig.fmap.dal.feature.FeatureSet;
12
import org.gvsig.fmap.dal.feature.FeatureStore;
13
import org.gvsig.fmap.dal.feature.FeatureType;
14
import org.gvsig.project.document.table.FeatureTableDocument;
15

  
16
import com.iver.cit.gvsig.project.ProjectFactory;
17

  
18

  
19
import es.unex.sextante.dataObjects.AbstractTable;
20
import es.unex.sextante.dataObjects.IRecordsetIterator;
21

  
22
public class gvTable extends AbstractTable {
23

  
24
	private Object m_BaseDataObject;
25
	private String m_sName;
26
	private String m_sFilename;
27
	private FeatureSet featureSet;
28
	private FeatureType featureType;
29
	private FeatureStore featureStore;
30

  
31
	public String getName() {
32

  
33
		if (m_BaseDataObject instanceof FeatureTableDocument){
34
			FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
35
			return table.getName();
36
		}
37
		else{
38
			return m_sName;
39
		}
40

  
41
	}
42

  
43
	public void create(Object obj) {
44

  
45
		if (obj instanceof FeatureTableDocument){
46
			try {
47
				featureStore =((FeatureTableDocument)obj).getStore();
48
				featureSet = featureStore.getFeatureSet(((FeatureTableDocument)obj).getQuery());
49
				featureType = featureStore.getDefaultFeatureType();
50

  
51
			} catch (DataException e) {
52
				e.printStackTrace();
53
			}
54
		}
55

  
56
	}
57

  
58
	public void create(String sName, String sFilename, Class[] types, String[] sFields) {
59

  
60
//		m_sFilename = sFilename;
61
//		TableMemoryDriver table = new TableMemoryDriver(sFields, DataTools.getgvSIGTypes(types));
62
//		m_sName = sName;
63
//		m_BaseDataObject = table;
64

  
65
	}
66

  
67
	public void addRecord(Object[] record) {
68

  
69
//		if (m_BaseDataObject instanceof TableMemoryDriver) {
70
//			TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject;
71
//			table.addRow(DataTools.getGVSIGValues(record));
72
//		}
73

  
74
	}
75

  
76
	public IRecordsetIterator iterator() {
77

  
78
		return new gvRecordsetIterator(featureSet);
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
			FeatureTableDocument table = ProjectFactory.createTable(m_sName, featureStore);
174
			file = new File(m_sFilename);
175
//			driver = (FileDriver) LayerFactory.getDM().getDriver("gdbms dbf driver");
176
//			source = table.getModelo().getRecordset();
177
//			source.start();
178
//			orgDef = table.getModelo().getTableDefinition();
179
		} catch (Exception e) {
180
			return;
181
		}
182

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

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

  
217
		FeatureTableDocument table = FileTools.openTable(m_sFilename, m_sName);
218
		create(table);
219

  
220
	}
221

  
222
	public void open() {
223

  
224
//		if (m_BaseDataObject instanceof FeatureTableDocument){
225
//			FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject;
226
//			try {
227
//				table.getModelo().getRecordset().start();
228
//			} catch (Exception e) {
229
//				e.printStackTrace();
230
//			}
231
//		}
232

  
233
	}
234

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff