Revision 6990
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/XTypes.java | ||
---|---|---|
56 | 56 |
import com.hardcode.gdbms.engine.values.IntValue; |
57 | 57 |
import com.hardcode.gdbms.engine.values.LongValue; |
58 | 58 |
import com.hardcode.gdbms.engine.values.NullValue; |
59 |
import com.hardcode.gdbms.engine.values.ShortValue; |
|
59 | 60 |
import com.hardcode.gdbms.engine.values.StringValue; |
61 |
import com.hardcode.gdbms.engine.values.TimeValue; |
|
62 |
import com.hardcode.gdbms.engine.values.TimestampValue; |
|
60 | 63 |
import com.hardcode.gdbms.engine.values.Value; |
61 | 64 |
import com.hardcode.gdbms.engine.values.ValueFactory; |
62 |
import com.hardcode.gdbms.engine.values.ValueWriter; |
|
63 | 65 |
|
64 | 66 |
public class XTypes{ |
65 | 67 |
public final static int POINT2D = 100; |
... | ... | |
143 | 145 |
val = ValueFactory.createValue(buf.getDouble()); |
144 | 146 |
if (metaData.getColumnType(fieldId) == Types.INTEGER) |
145 | 147 |
val = ValueFactory.createValue(buf.getInt()); |
148 |
if (metaData.getColumnType(fieldId) == Types.SMALLINT) |
|
149 |
val = ValueFactory.createValue(buf.getShort()); |
|
150 |
if (metaData.getColumnType(fieldId) == Types.TINYINT) |
|
151 |
val = ValueFactory.createValue(buf.getShort()); |
|
146 | 152 |
if (metaData.getColumnType(fieldId) == Types.BIGINT) |
147 | 153 |
val = ValueFactory.createValue(buf.getLong()); |
148 | 154 |
if (metaData.getColumnType(fieldId) == Types.BIT) |
149 | 155 |
val = ValueFactory.createValue(rs.getBoolean(fieldId)); |
150 | 156 |
if (metaData.getColumnType(fieldId) == Types.DATE) |
151 | 157 |
val = ValueFactory.createValue(rs.getDate(fieldId)); |
158 |
if (metaData.getColumnType(fieldId) == Types.TIME) |
|
159 |
val = ValueFactory.createValue(rs.getTime(fieldId)); |
|
160 |
if (metaData.getColumnType(fieldId) == Types.TIMESTAMP) |
|
161 |
val = ValueFactory.createValue(rs.getTimestamp(fieldId)); |
|
162 |
|
|
152 | 163 |
} |
153 | 164 |
return val; |
154 | 165 |
} |
... | ... | |
180 | 191 |
rs.updateDouble(fieldId, vDouble.getValue()); |
181 | 192 |
break; |
182 | 193 |
case Types.INTEGER: |
194 |
IntValue vInt = (IntValue) val; |
|
195 |
rs.updateInt(fieldId, vInt.getValue()); |
|
183 | 196 |
case Types.SMALLINT: |
184 |
IntValue vInt = (IntValue) val;
|
|
185 |
rs.updateInt(fieldId, vInt.getValue());
|
|
197 |
ShortValue vShort = (ShortValue) val;
|
|
198 |
rs.updateShort(fieldId, vShort.shortValue());
|
|
186 | 199 |
break; |
187 | 200 |
case Types.BIGINT: |
188 | 201 |
LongValue vLong = (LongValue) val; |
... | ... | |
194 | 207 |
rs.updateBoolean(fieldId, vBool.getValue()); |
195 | 208 |
break; |
196 | 209 |
case Types.DATE: |
210 |
DateValue vDate = (DateValue) val; |
|
211 |
rs.updateDate(fieldId, vDate.getValue()); |
|
197 | 212 |
case Types.TIME: |
198 |
DateValue vDate = (DateValue) val;
|
|
199 |
rs.updateDate(fieldId, vDate.getValue());
|
|
213 |
TimeValue vTime = (TimeValue) val;
|
|
214 |
rs.updateTime(fieldId, vTime.getValue());
|
|
200 | 215 |
break; |
216 |
case Types.TIMESTAMP: |
|
217 |
TimestampValue vTimeStamp = (TimestampValue) val; |
|
218 |
rs.updateTimestamp(fieldId, vTimeStamp.getValue()); |
|
219 |
break; |
|
220 |
|
|
201 | 221 |
default: |
202 | 222 |
System.err.println("Tipo no soportado:" + metaData.getColumnType(fieldId) + ". Field:" + fieldId + ": " + metaData.getColumnName(fieldId)); |
203 | 223 |
// throw new UnsupportedOperationException(); |
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/dbf/DbaseFileHeader.java | ||
---|---|---|
43 | 43 |
// collection of header records. |
44 | 44 |
private DbaseFieldDescriptor[] myFieldDescriptions; |
45 | 45 |
|
46 |
private byte myLanguageID; |
|
47 |
|
|
46 | 48 |
/** |
47 | 49 |
* DbaseFileHreader constructor comment. |
48 | 50 |
*/ |
... | ... | |
359 | 361 |
myHeaderLength = in.getShort(); |
360 | 362 |
|
361 | 363 |
// read the length of a record |
362 |
myRecordLength = in.getShort(); |
|
364 |
myRecordLength = in.getShort(); //posicon 0h
|
|
363 | 365 |
|
364 | 366 |
in.order(ByteOrder.BIG_ENDIAN); |
365 | 367 |
|
366 | 368 |
// skip the reserved bytes in the header. |
367 |
in.position(in.position() + 20); |
|
369 |
// in.position(in.position() + 20); |
|
370 |
|
|
371 |
// Leemos el byte de language |
|
372 |
in.position(29); |
|
373 |
myLanguageID = in.get(); |
|
374 |
|
|
375 |
// Posicionamos para empezar a leer los campos. |
|
376 |
in.position(32); |
|
368 | 377 |
|
369 | 378 |
// calculate the number of Fields in the header |
370 | 379 |
myNumFields = (myHeaderLength - FILE_DESCRIPTOR_SIZE - 1) / FILE_DESCRIPTOR_SIZE; |
... | ... | |
496 | 505 |
// Field decimal count in Binary, indicating where the decimal is |
497 | 506 |
int myDecimalCount; |
498 | 507 |
} |
508 |
|
|
509 |
public byte getLanguageID() { |
|
510 |
return myLanguageID; |
|
511 |
} |
|
499 | 512 |
} |
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/dbf/DbaseFile.java | ||
---|---|---|
289 | 289 |
* @throws IOException DOCUMENT ME! |
290 | 290 |
*/ |
291 | 291 |
public void open(File file) throws IOException { |
292 |
/* |
|
293 |
01h DOS USA code page 437 |
|
294 |
02h DOS Multilingual code page 850 |
|
295 |
03h Windows ANSI code page 1252 |
|
296 |
04h Standard Macintosh |
|
297 |
64h EE MS-DOS code page 852 |
|
298 |
65h Nordic MS-DOS code page 865 |
|
299 |
66h Russian MS-DOS code page 866 |
|
300 |
67h Icelandic MS-DOS |
|
301 |
68h Kamenicky (Czech) MS-DOS |
|
302 |
69h Mazovia (Polish) MS-DOS |
|
303 |
6Ah Greek MS-DOS (437G) |
|
304 |
6Bh Turkish MS-DOS |
|
305 |
96h Russian Macintosh |
|
306 |
97h Eastern European Macintosh |
|
307 |
98h Greek Macintosh |
|
308 |
C8h Windows EE code page 1250 |
|
309 |
C9h Russian Windows |
|
310 |
CAh Turkish Windows |
|
311 |
CBh Greek Windows |
|
312 |
*/ |
|
292 | 313 |
if (file.canWrite()){ |
293 | 314 |
try{ |
294 | 315 |
raf = new RandomAccessFile(file, "rw"); |
... | ... | |
309 | 330 |
// create the header to contain the header information. |
310 | 331 |
myHeader = new DbaseFileHeader(); |
311 | 332 |
myHeader.readHeader(buffer); |
312 |
chars = Charset.forName("ISO-8859-1"); |
|
333 |
switch (myHeader.getLanguageID()) |
|
334 |
{ |
|
335 |
case 0x01: |
|
336 |
chars = Charset.forName("US-ASCII"); |
|
337 |
break; |
|
338 |
case 0x02: |
|
339 |
chars = Charset.forName("ISO-8859-1"); |
|
340 |
break; |
|
341 |
case 0x03: |
|
342 |
chars = Charset.forName("windows-1252"); |
|
343 |
break; |
|
344 |
case 0x04: |
|
345 |
chars = Charset.forName("mac"); |
|
346 |
break; |
|
347 |
case 0x64: |
|
348 |
chars = Charset.forName("ISO-8859-1"); |
|
349 |
break; |
|
350 |
case 0x65: |
|
351 |
chars = Charset.forName("ISO-8859-1"); |
|
352 |
break; |
|
353 |
case 0x66: |
|
354 |
chars = Charset.forName("ISO-8859-1"); |
|
355 |
break; |
|
356 |
case 0x67: |
|
357 |
chars = Charset.forName("ISO-8859-1"); |
|
358 |
break; |
|
359 |
case 0x68: |
|
360 |
chars = Charset.forName("greek"); |
|
361 |
break; |
|
362 |
case 0x69: |
|
363 |
chars = Charset.forName("ISO-8859-1"); |
|
364 |
break; |
|
365 |
case 0x6A: |
|
366 |
chars = Charset.forName("greek"); |
|
367 |
break; |
|
368 |
case 0x6B: |
|
369 |
chars = Charset.forName("ISO-8859-1"); |
|
370 |
break; |
|
371 |
|
|
372 |
default: |
|
373 |
chars = Charset.forName("ISO-8859-1"); |
|
374 |
} |
|
313 | 375 |
bytesCachedRecord = new byte[myHeader.getRecordLength()]; |
314 | 376 |
} |
315 | 377 |
|
Also available in: Unified diff