Revision 21843

View differences:

branches/Mobile_Compatible_Hito_1/libFMap/src-file/org/gvsig/data/datastores/vectorial/file/shp_mem/simplify/DbfMemoryDataSource.java
3 3
import java.io.File;
4 4
import java.io.IOException;
5 5
import java.sql.Types;
6
import java.text.DateFormat;
7
import java.text.ParseException;
8
import java.text.SimpleDateFormat;
9
import java.util.Date;
6 10

  
7 11
import org.apache.log4j.Logger;
12
import org.gvsig.data.datastores.vectorial.file.shp_mem.DbaseFileNIO;
8 13
import org.gvsig.data.datastores.vectorial.file.shp_util.DBFDataSource;
14
import org.gvsig.data.datastores.vectorial.file.shp_util.DbfUtil;
9 15
import org.gvsig.exceptions.DriverException;
10 16

  
11
import com.hardcode.gdbms.engine.values.Value;
12
import com.hardcode.gdbms.engine.values.ValueCollection;
13
import com.hardcode.gdbms.engine.values.ValueFactory;
14

  
15
import es.prodevelop.gvsig.mobile.fmap.driver.vect.dbf.DbaseFileNIO;
16

  
17 17
/**
18 18
 * This class implements a DataSource which is based on a DBF file fully loaded
19 19
 * into memory.
......
105 105
		return resp;
106 106
	}
107 107

  
108
	/**
109
	 * Gets the primary key value for a row
110
	 * 
111
	 * @param arg0
112
	 *            the row of interest
113
	 * @return a collection representing the primary key
114
	 */
115
	public ValueCollection getPKValue(long arg0) {
116
		logger
117
				.warn("Method getPKValue(" + arg0
118
						+ ") was called, returned NULL");
119
		return null;
120
	}
108
//	/**
109
//	 * Gets the primary key value for a row
110
//	 * 
111
//	 * @param arg0
112
//	 *            the row of interest
113
//	 * @return a collection representing the primary key
114
//	 */
115
//	public ValueCollection getPKValue(long arg0) {
116
//		logger
117
//				.warn("Method getPKValue(" + arg0
118
//						+ ") was called, returned NULL");
119
//		return null;
120
//	}
121 121

  
122 122
	/**
123 123
	 * @return the cumber of fields that compose the PK.
......
126 126
		return dbFileAccess.getFieldCount();
127 127
	}
128 128

  
129
	private Value getValueOfItsType(int fieldindex, int row) {
129
	private Object getValueOfItsType(int fieldindex, int row) {
130 130

  
131
		Value resp = ValueFactory.createNullValue();
131
		Object resp = null;
132 132

  
133 133
		int type = dbFileAccess.getFieldIntType(fieldindex);
134 134
		switch (type) {
135 135

  
136 136
		case Types.DOUBLE:
137 137
			if (getFieldDecimalPrecision(fieldindex) > 0) {
138
				resp = ValueFactory.createValue(dbFileAccess
139
						.getNumberFieldValue(row, fieldindex).doubleValue());
138
				resp =
139
					new Double(dbFileAccess.getNumberFieldValue(row, fieldindex).doubleValue());
140 140
			} else {
141
				resp = ValueFactory.createValue(dbFileAccess
142
						.getNumberFieldValue(row, fieldindex).intValue());
141
				resp =
142
					new Integer(dbFileAccess.getNumberFieldValue(row, fieldindex).intValue());
143 143
			}
144 144
			break;
145 145
		case Types.VARCHAR:
146
			resp = ValueFactory.createValue(dbFileAccess.getStringFieldValue(
147
					row, fieldindex));
146
			resp = dbFileAccess.getStringFieldValue(row, fieldindex);
148 147
			break;
149 148
		case Types.DATE:
150
			resp = ValueFactory.createValue(dbFileAccess.getStringFieldValue(
151
					row, fieldindex));
149
			String aux = dbFileAccess.getStringFieldValue(row, fieldindex);
150
			resp = DbfUtil.stringToDate(aux);
152 151
			break;
153 152
		case Types.BOOLEAN:
154
			resp = ValueFactory.createValue(dbFileAccess.getBooleanFieldValue(
155
					row, fieldindex));
153
			resp = new Boolean(dbFileAccess.getBooleanFieldValue(row, fieldindex));
156 154
			break;
157 155
		}
158 156
		return resp;
159 157
	}
160 158

  
161
	/**
162
	 * Gets a row of this data source.
163
	 * 
164
	 * @param rowind
165
	 *            the index of the row of interest
166
	 * @return the row as an array of values
167
	 */
168
	public Value[] getRow(long rowind) {
159
//	/**
160
//	 * Gets a row of this data source.
161
//	 * 
162
//	 * @param rowind
163
//	 *            the index of the row of interest
164
//	 * @return the row as an array of values
165
//	 */
166
//	public Value[] getRow(long rowind) {
167
//
168
//		int size = dbFileAccess.getFieldCount();
169
//		Value[] resp = new Value[size];
170
//		for (int i = 0; i < size; i++) {
171
//			resp[i] = getValueOfItsType(i, (int) rowind);
172
//		}
173
//		return resp;
174
//	}
169 175

  
170
		int size = dbFileAccess.getFieldCount();
171
		Value[] resp = new Value[size];
172
		for (int i = 0; i < size; i++) {
173
			resp[i] = getValueOfItsType(i, (int) rowind);
174
		}
175
		return resp;
176
	}
177

  
178 176
	/**
179 177
	 * @return an array with all the field names
180 178
	 */
......
224 222
	 * 
225 223
	 * @return the value of the given row and field
226 224
	 */
227
	public Value getFieldValue(long arg0, int arg1) {
225
	public Object getFieldValue(long arg0, int arg1) {
228 226
		return getValueOfItsType(arg1, (int) arg0);
229 227
	}
230 228

  
branches/Mobile_Compatible_Hito_1/libFMap/src-file/org/gvsig/data/datastores/vectorial/file/shp_mem/simplify/MemoryShpDriver.java
104 104
import java.util.ArrayList;
105 105

  
106 106
import org.apache.log4j.Logger;
107
import org.gvsig.data.datastores.vectorial.file.FalseByteBuffer;
108
import org.gvsig.data.datastores.vectorial.file.Utils;
107 109
import org.gvsig.data.datastores.vectorial.file.shp_util.SHP;
110
import org.gvsig.fmap.geom.Geometry;
111
import org.gvsig.fmap.geom.GeometryFactory;
112
import org.gvsig.fmap.geom.GeometryManager;
113
import org.gvsig.fmap.geom.primitive.FShape;
114
import org.gvsig.fmap.geom.primitive.GeneralPathX;
115
import org.gvsig.fmap.geom.primitive.NullGeometry;
108 116

  
109
import es.prodevelop.gvsig.mobile.fmap.core.FNullGeometry;
110
import es.prodevelop.gvsig.mobile.fmap.core.FShape;
111
import es.prodevelop.gvsig.mobile.fmap.core.GeneralPathX;
112
import es.prodevelop.gvsig.mobile.fmap.core.IGeometry;
113
import es.prodevelop.gvsig.mobile.fmap.core.ShapeFactory;
114
import es.prodevelop.gvsig.mobile.fmap.driver.vect.shp.ShapeFileHeader;
115
import es.prodevelop.gvsig.mobile.fmap.util.Utils;
116
import es.prodevelop.gvsig.mobile.fmap.util.bytebuffer.FalseByteBuffer;
117

  
118 117
/**
119 118
 * SHP driver for a file that is completely loaded into memory.
120 119
 * 
......
316 315
	 * 
317 316
	 * @throws IOException
318 317
	 */
319
	public IGeometry getShape(int index) throws IOException {
318
	public Geometry getShape(int index) throws IOException {
320 319

  
321 320
		Point2D.Double p = new Point2D.Double();
322 321
		int numParts;
......
324 323
		int i;
325 324
		int j;
326 325
		int shapeType;
326
		
327
		GeometryFactory gFactory = GeometryManager.getInstance().getGeometryFactory();
327 328

  
328 329
		// Rectangle2D.Double BoundingBox;
329 330
		// if (m_posShapes[index] == 0)
......
338 339
		if (shapeType == SHP.SHPT_NULL) {
339 340
			logger.warn("Found a null geometry in file " + fileShp.getName()
340 341
					+ " (shape index: " + index);
341
			return new FNullGeometry();
342
			return new NullGeometry();
342 343
		}
343 344

  
344 345
		// retrieve that shape.
......
348 349
		case SHP.SHPT_POINT:
349 350
			p = readPoint(bb);
350 351

  
351
			return ShapeFactory.createPoint2D(p.getX(), p.getY());
352
			return gFactory.createPoint2D(p.getX(), p.getY());
352 353

  
353 354
		case SHP.SHPT_ARC:
354 355

  
......
388 389
				}
389 390
			}
390 391

  
391
			return ShapeFactory.createPolyline2D(elShape);
392
			return gFactory.createPolyline2D(elShape);
392 393

  
393 394
		case SHP.SHPT_POLYGON:
394 395

  
......
428 429
				}
429 430
			}
430 431

  
431
			return ShapeFactory.createPolygon2D(elShape);
432
			return gFactory.createPolygon2D(elShape);
432 433

  
433 434
		case SHP.SHPT_POINTZ:
434 435
		case SHP.SHPT_POINTM:
......
437 438
			double y = bb.getDouble();
438 439
			double z = bb.getDouble();
439 440

  
440
			return ShapeFactory.createPoint3D(x, y, z);
441
			return gFactory.createPoint3D(x, y, z);
441 442

  
442 443
		case SHP.SHPT_ARCZ:
443 444
		case SHP.SHPT_ARCM:
......
477 478
				pZ[i] = bb.getDouble();
478 479
			}
479 480

  
480
			return ShapeFactory.createPolyline3D(elShape, pZ);
481
			return gFactory.createPolyline3D(elShape, pZ);
481 482

  
482 483
		case SHP.SHPT_POLYGONZ:
483 484
		case SHP.SHPT_POLYGONM:
......
518 519
				poZ[i] = bb.getDouble();
519 520
			}
520 521

  
521
			return ShapeFactory.createPolygon3D(elShape, poZ);
522
			return gFactory.createPolygon3D(elShape, poZ);
522 523

  
523 524
		case SHP.SHPT_MULTIPOINT:
524 525
			bb.position(bb.getPosition() + 32);
......
532 533
				tempY[i] = bb.getDouble();
533 534
			}
534 535

  
535
			return ShapeFactory.createMultipoint2D(tempX, tempY);
536
			return gFactory.createMultipoint2D(tempX, tempY);
536 537

  
537 538
		case SHP.SHPT_MULTIPOINTZ:
538 539
		case SHP.SHPT_MULTIPOINTM:
......
552 553
			for (i = 0; i < numPoints; i++) {
553 554
				temZ[i] = bb.getDouble();
554 555
			}
555
			return ShapeFactory.createMultipoint3D(temX, temY, temZ);
556
			return gFactory.createMultipoint3D(temX, temY, temZ);
556 557
		}
557 558

  
558 559
		return null;
......
938 939
		ArrayList _resp = new ArrayList();
939 940
		for (int i = 0; i < numReg; i++) {
940 941
			if (Utils.rectanglesItersect(getShapeBounds(i), rect)) {
941
				IGeometry ig = getShape(i);
942
				if (ig.getGeometryType() == FShape.POINT || ig.intersects(rect)) {
942
				Geometry ig = getShape(i);
943
				if (ig.getType() == FShape.POINT || ig.intersects(rect)) {
943 944
					_resp.add(new Integer(i));
944 945
					// logger.debug("Ha intersectado uno!");
945 946
					if (_resp.size() == max) {
branches/Mobile_Compatible_Hito_1/libFMap/src-file/org/gvsig/data/datastores/vectorial/file/shp_mem/simplify/ShapeFileHeader.java
4 4
import java.nio.ByteOrder;
5 5

  
6 6
import org.apache.log4j.Logger;
7
import org.gvsig.data.datastores.vectorial.file.FalseByteBuffer;
7 8
import org.gvsig.datasources.common.IByteBuffer;
8 9

  
9
import es.prodevelop.gvsig.mobile.fmap.core.FPolyline2D;
10
import es.prodevelop.gvsig.mobile.fmap.util.bytebuffer.FalseByteBuffer;
11

  
12 10
/**
13 11
 * Class to represent the header in the shape file.
14 12
 */
......
49 47

  
50 48
	public static final int SHAPE_MULTIPATCH = 31;
51 49

  
52
	private static Logger logger = Logger.getLogger(FPolyline2D.class);
50
	private static Logger logger = Logger.getLogger(ShapeFileHeader.class);
53 51

  
54 52
	/** File Code, must be the value 9994 */
55 53
	public int myFileCode = 9994;

Also available in: Unified diff