Revision 46893 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.dbf/src/main/java/org/gvsig/fmap/dal/store/dbf/utils/DbaseFileWriter.java

View differences:

DbaseFileWriter.java
219 219
    }
220 220

  
221 221
    private void encodeField(FeatureAttributeDescriptor attr, Feature feature) throws java.io.UnsupportedEncodingException, UnsupportedEncodingException {
222
        DbaseFieldDescriptor descriptor = this.header.getFieldDescription(attr.getName());
222
        if (attr == null) {
223
            throw new NullPointerException("attr is NULL");
224
        }
225
        if (feature == null) {
226
            throw new NullPointerException("feature is NULL");
227
        }
228
        try {
229
            DbaseFieldDescriptor descriptor = this.header.getFieldDescription(attr.getName());
223 230

  
224
        int type = attr.getType();
225
        final int fieldLen = descriptor.getSize();
226
        String fieldString;
231
            int type = attr.getType();
232
            final int fieldLen = descriptor.getSize();
233
            String fieldString;
227 234

  
228 235
//        if( buffer.position()!=descriptor.getOffsetInRecord() ) {
229 236
//            throw new RuntimeException("Encoding field '"+descriptor.getName()+"' found an incorrect offset.");
230 237
//        }
231
        if( feature.isNull(attr.getIndex()) ) {
232
            safeEncode(" ", fieldLen, false);
233
            return;
234
        }
235
        if (DataTypes.BOOLEAN == type) {
236
            boolean b = feature.getBoolean(attr.getIndex());
237
            safeEncode(b? "T":"F", 1, true);
238
            if (feature.isNull(attr.getIndex())) {
239
                safeEncode(" ", fieldLen, false);
240
                return;
241
            }
242
            if (DataTypes.BOOLEAN == type) {
243
                boolean b = feature.getBoolean(attr.getIndex());
244
                safeEncode(b ? "T" : "F", 1, true);
238 245

  
239
        } else if (DataTypes.TIME == type) {
240
            Date date = feature.getTime(attr.getIndex());
241
            fieldString = formatter.formatTime(date);
242
            safeEncode(fieldString, fieldLen, false);
246
            } else if (DataTypes.TIME == type) {
247
                Date date = feature.getTime(attr.getIndex());
248
                fieldString = formatter.formatTime(date);
249
                safeEncode(fieldString, fieldLen, false);
243 250

  
244
        } else if (DataTypes.TIMESTAMP == type) {
245
            Date date = feature.getTimestamp(attr.getIndex());
246
            fieldString = formatter.formatTimestamp(date);
247
            safeEncode(fieldString, fieldLen, false);
251
            } else if (DataTypes.TIMESTAMP == type) {
252
                Date date = feature.getTimestamp(attr.getIndex());
253
                fieldString = formatter.formatTimestamp(date);
254
                safeEncode(fieldString, fieldLen, false);
248 255

  
249
        } else if (DataTypes.DATE == type) {
250
            Date date = feature.getDate(attr.getIndex());
251
            fieldString = formatter.formatDate(date);
252
            safeEncode(fieldString, fieldLen, false);
256
            } else if (DataTypes.DATE == type) {
257
                Date date = feature.getDate(attr.getIndex());
258
                fieldString = formatter.formatDate(date);
259
                safeEncode(fieldString, fieldLen, false);
253 260

  
254
        } else if (DataTypes.DECIMAL == type) {
255
            BigDecimal n = feature.getDecimal(attr.getIndex());
256
            fieldString = formatter.format(n, fieldLen);
257
            safeEncode(fieldString, fieldLen, false);
261
            } else if (DataTypes.DECIMAL == type) {
262
                BigDecimal n = feature.getDecimal(attr.getIndex());
263
                fieldString = formatter.format(n, fieldLen);
264
                safeEncode(fieldString, fieldLen, false);
258 265

  
259
        } else if (DataTypes.DOUBLE == type) {
260
            double n = feature.getDouble(attr.getIndex());
261
            fieldString = formatter.format(n, fieldLen, descriptor.getScale());
262
            safeEncode(fieldString, fieldLen, false);
266
            } else if (DataTypes.DOUBLE == type) {
267
                double n = feature.getDouble(attr.getIndex());
268
                fieldString = formatter.format(n, fieldLen, descriptor.getScale());
269
                safeEncode(fieldString, fieldLen, false);
263 270

  
264
        } else if (DataTypes.FLOAT == type) {
265
            float n = feature.getFloat(attr.getIndex());
266
            fieldString = formatter.format(n, fieldLen, descriptor.getScale());
267
            safeEncode(fieldString, fieldLen, false);
271
            } else if (DataTypes.FLOAT == type) {
272
                float n = feature.getFloat(attr.getIndex());
273
                fieldString = formatter.format(n, fieldLen, descriptor.getScale());
274
                safeEncode(fieldString, fieldLen, false);
268 275

  
269
        } else if (DataTypes.LONG == type) {
270
            long l = feature.getLong(attr.getIndex());
271
            fieldString = formatter.format(l, fieldLen);
272
            safeEncode(fieldString, fieldLen, false);
276
            } else if (DataTypes.LONG == type) {
277
                long l = feature.getLong(attr.getIndex());
278
                fieldString = formatter.format(l, fieldLen);
279
                safeEncode(fieldString, fieldLen, false);
273 280

  
274
        } else if (DataTypes.INT == type) {
275
            int n = feature.getInt(attr.getIndex());
276
            fieldString = formatter.format(n, fieldLen);
277
            safeEncode(fieldString, fieldLen, false);
281
            } else if (DataTypes.INT == type) {
282
                int n = feature.getInt(attr.getIndex());
283
                fieldString = formatter.format(n, fieldLen);
284
                safeEncode(fieldString, fieldLen, false);
278 285

  
279
        } else if (DataTypes.BYTE == type) {
280
            int n = feature.getInt(attr.getIndex());
281
            fieldString = formatter.format(n, fieldLen);
282
            safeEncode(fieldString, fieldLen, false);
286
            } else if (DataTypes.BYTE == type) {
287
                int n = feature.getInt(attr.getIndex());
288
                fieldString = formatter.format(n, fieldLen);
289
                safeEncode(fieldString, fieldLen, false);
283 290

  
284
        } else if (DataTypes.STRING == type) {
285
            String s = feature.getString(attr.getIndex());
286
            safeEncode(StringUtils.defaultIfEmpty(s, ""), fieldLen, true);
291
            } else if (DataTypes.STRING == type) {
292
                String s = feature.getString(attr.getIndex());
293
                safeEncode(StringUtils.defaultIfEmpty(s, ""), fieldLen, true);
287 294

  
288
        } else {
289
            // Si no conocemos el tipo intentamos guardarlo como un string
290
            String s = feature.getString(attr.getIndex());
291
            safeEncode(StringUtils.defaultIfEmpty(s, ""), fieldLen, true);
295
            } else {
296
                // Si no conocemos el tipo intentamos guardarlo como un string
297
                String s = feature.getString(attr.getIndex());
298
                safeEncode(StringUtils.defaultIfEmpty(s, ""), fieldLen, true);
292 299

  
300
            }
301
        } catch (Exception ex) {
302
            throw new RuntimeException("Can't encode field '" + attr.getName() + "'", ex);
293 303
        }
294 304

  
295 305
    }

Also available in: Unified diff