Revision 6990

View differences:

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