Revision 46896

View differences:

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/DbaseFileHeader.java
654 654
          if (dbfattr.getScale()==-1 || dbfattr.getScale() > 0) {
655 655
            if (dbfattr.getSize() > DataType.DOUBLE_MAX_PRECISION+3) {
656 656
              attr = featureType.add(dbfattr.getName(),
657
                      DataTypes.DECIMAL, dbfattr.getSize());
657
                      DataTypes.DECIMAL);
658
              attr.setDisplaySize(dbfattr.getSize());
658 659
              attr.setScale(DataType.SCALE_NONE);
659 660
              attr.setPrecision(dbfattr.getPrecision());
660 661
              attr.setDefaultValue(null);
......
662 663

  
663 664
            } else if (dbfattr.getSize() > DataType.FLOAT_MAX_PRECISION+3) {
664 665
              attr = featureType.add(dbfattr.getName(),
665
                      DataTypes.DOUBLE, dbfattr.getSize());
666
                      DataTypes.DOUBLE);
667
              attr.setDisplaySize(dbfattr.getSize());
666 668
              attr.setScale(dbfattr.getScale());
667 669
              attr.setPrecision(dbfattr.getPrecision());
668 670
              attr.setDefaultValue(null);
669 671
              attr.setAllowNull(true);
670 672
            } else {
671 673
              attr = featureType.add(dbfattr.getName(),
672
                      DataTypes.FLOAT, dbfattr.getSize());
674
                      DataTypes.FLOAT);
675
              attr.setDisplaySize(dbfattr.getSize());
673 676
              attr.setScale(dbfattr.getScale());
674 677
              attr.setPrecision(dbfattr.getPrecision());
675 678
              attr.setDefaultValue(null);
......
677 680
            }
678 681
          } else {
679 682
            if (dbfattr.getPrecision() > DataType.LONG_MAX_PRECISION) {
680
              attr = featureType.add(dbfattr.getName(),
681
                      DataTypes.DECIMAL, dbfattr.getSize());
683
              attr = featureType.add(dbfattr.getName(), DataTypes.DECIMAL);
684
              attr.setDisplaySize(dbfattr.getSize());
682 685
              attr.setPrecision(dbfattr.getPrecision());
683 686
              attr.setScale(DataType.SCALE_NONE);
684 687
              attr.setDefaultValue(null);
......
688 691
                      dbfattr.getName(),
689 692
                      DataTypes.LONG
690 693
              );
694
              attr.setDisplaySize(dbfattr.getSize());
691 695
              attr.setPrecision(dbfattr.getPrecision());
692 696
              attr.setScale(0);
693 697
              attr.setDefaultValue(null);
......
697 701
                      dbfattr.getName(),
698 702
                      DataTypes.INT
699 703
              );
704
              attr.setDisplaySize(dbfattr.getSize());
700 705
              attr.setPrecision(dbfattr.getPrecision());
701 706
              attr.setScale(0);
702 707
              attr.setDefaultValue(null);
......
706 711
                      dbfattr.getName(),
707 712
                      DataTypes.DECIMAL
708 713
              );
714
              attr.setDisplaySize(dbfattr.getSize());
709 715
              attr.setPrecision(dbfattr.getPrecision());
710 716
              attr.setScale(0);
711 717
              attr.setDefaultValue(null);
......
716 722
        case DBFTYPE_NUMBER:
717 723
          if (dbfattr.getScale()==-1 || dbfattr.getScale() > 0) {
718 724
            attr = featureType.add(dbfattr.getName(),
719
                    DataTypes.DECIMAL, dbfattr.getSize());
725
                    DataTypes.DECIMAL);
726
            attr.setDisplaySize(dbfattr.getSize());
720 727
            attr.setPrecision(dbfattr.getPrecision());
721 728
            attr.setScale(DataType.SCALE_NONE);
722 729
            attr.setDefaultValue(null);
......
724 731
          } else {
725 732
            if (dbfattr.getPrecision() > DataType.LONG_MAX_PRECISION) {
726 733
              attr = featureType.add(dbfattr.getName(),
727
                      DataTypes.DECIMAL, dbfattr.getSize());
734
                      DataTypes.DECIMAL);
735
              attr.setDisplaySize(dbfattr.getSize());
728 736
              attr.setPrecision(dbfattr.getPrecision());
729 737
              attr.setScale(DataType.SCALE_NONE);
730 738
              attr.setDefaultValue(null);
......
734 742
                      dbfattr.getName(),
735 743
                      DataTypes.LONG
736 744
              );
745
              attr.setDisplaySize(dbfattr.getSize());
737 746
              attr.setPrecision(dbfattr.getPrecision());
738 747
              attr.setScale(0);
739 748
              attr.setDefaultValue(null);
......
743 752
                      dbfattr.getName(),
744 753
                      DataTypes.INT
745 754
              );
755
              attr.setDisplaySize(dbfattr.getSize());
746 756
              attr.setPrecision(dbfattr.getPrecision());
747 757
              attr.setScale(0);
748 758
              attr.setDefaultValue(null);
......
752 762
                      dbfattr.getName(),
753 763
                      DataTypes.DECIMAL
754 764
              );
765
              attr.setDisplaySize(dbfattr.getSize());
755 766
              attr.setPrecision(dbfattr.getPrecision());
756 767
              attr.setScale(0);
757 768
              attr.setDefaultValue(null);
......
866 877
        case DataTypes.INT:
867 878
          if( displaySize<1 ) {
868 879
            if( precision>=DataType.INT_MAX_PRECISION ) {
869
              displaySize = precision;
880
              displaySize = DataType.INT_MAX_PRECISION;
870 881
            } else {
871 882
              displaySize = precision + 1;
872 883
            }
......
879 890
        case DataTypes.LONG:
880 891
          if( displaySize<1 ) {
881 892
            if( precision>=DataType.LONG_MAX_PRECISION ) {
882
              displaySize = precision;
893
              displaySize = DataType.LONG_MAX_PRECISION;
883 894
            } else {
884 895
              displaySize = precision + 1;
885 896
            }

Also available in: Unified diff