Revision 44941 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/CSVStoreProvider.java

View differences:

CSVStoreProvider.java
456 456
    private void init(CSVStoreParameters parameters, DataStoreProviderServices storeServices) {
457 457
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
458 458
    }
459
    private class FieldTypeParser {
459
    
460
    public static class FieldTypeParser {
460 461

  
461 462
        public String name = null;
462 463
        public int type = DataTypes.STRING;
......
471 472

  
472 473
        private String typename = "string";
473 474

  
474
        FieldTypeParser() {
475
        private final String fullFileName;
476
        private final String providerName;
477
        
478
        FieldTypeParser(String providerName, String fullFileName) {
479
            this.providerName = providerName;
480
            this.fullFileName = fullFileName;
475 481
        }
476 482

  
483
        public String getProviderName() {
484
            return this.providerName;
485
        }
486
        
487
        public String getFullFileName() {
488
            return this.fullFileName;
489
        }
490
        
477 491
        public void clear() {
478 492
            this.name = null;
479 493
            this.type = DataTypes.STRING;
......
606 620
        // Calculamos cuales pueden ser los tipos de datos
607 621
        //
608 622
        for (int i = 0; i < fieldTypes.length; i++) {
609
            fieldTypes[i] = new FieldTypeParser();
623
            fieldTypes[i] = new FieldTypeParser(getProviderName(), getFullFileName());
610 624
        }
611 625

  
612 626
        // Asuminos los tipos pasados por parametro, que se supone
......
633 647
            String sep = CSVStoreParameters.getDelimiter(param_types_def);
634 648
            if (StringUtils.isNotBlank(sep)) {
635 649
                String[] param_types = param_types_def.split(sep);
636
                FieldTypeParser parser = new FieldTypeParser();
650
                FieldTypeParser parser = new FieldTypeParser(getProviderName(), getFullFileName());
637 651
                for (String param_type : param_types) {
638 652
                    parser.clear();
639 653
                    parser.parse(param_type);
......
651 665
        //
652 666
        for (FieldTypeParser fieldType : fieldTypes) {
653 667
            EditableFeatureAttributeDescriptor fad = fType.add(fieldType.name, fieldType.type);
654
            fad.setRequiredBytes(Math.max(fieldType.detectedValue.getDisplaySize(), fieldType.size));
655
            fad.setSize(Math.max(fieldType.detectedValue.getDisplaySize(), fieldType.size));
656
            if( fad.getPrecision()<fieldType.detectedValue.getPrecision() ) {
657
                fad.setPrecision(fieldType.detectedValue.getPrecision());
668
            if( fieldType.detectedValue!=null ) {
669
                fad.setRequiredBytes(Math.max(fieldType.detectedValue.getDisplaySize(), fieldType.size));
670
                fad.setSize(Math.max(fieldType.detectedValue.getDisplaySize(), fieldType.size));
671
                if( fad.getPrecision()<fieldType.detectedValue.getPrecision() ) {
672
                    fad.setPrecision(fieldType.detectedValue.getPrecision());
673
                }
674
                if( fad.getScale()<fieldType.detectedValue.getScale()) {
675
                    fad.setScale(fieldType.detectedValue.getScale());
676
                }
677
            } else {
678
                fad.setRequiredBytes(fieldType.size);
658 679
            }
659
            if( fad.getScale()<fieldType.detectedValue.getScale()) {
660
                fad.setScale(fieldType.detectedValue.getScale());
661
            }
662 680
            if (fieldType.type == DataTypes.GEOMETRY ) {
663 681
                fad.setGeometryType(fieldType.geomType, fieldType.geomSubtype);
664 682
                if( fType.getDefaultGeometryAttributeName() == null ) {

Also available in: Unified diff